2012-06-22 11 views
11

Quando si installa un pacchetto tramite sudo pip-python (pacchetto CentOS 6: python-pip-0.8-1.el6.noarch), a volte ho problemi di autorizzazione con i pacchetti installati che possono essere letti solo da root.: problemi di permessi non coerenti

La reinstallazione di una o due volte di solito risolve il problema. Qualcuno ha provato questo? O qualcuno può suggerire eventuali passaggi di risoluzione dei problemi per inchiodare la causa?

risposta

10

Quando si esegue un comando utilizzando sudo, verranno preservati gli utenti umask. pip installa solo i file, non modifica i diritti di accesso, quindi finirai con i file con i diritti di accesso impostati conformi alla umask dell'utente corrente, che può essere solo leggibile dal proprietario (0077) e quindi leggibile solo da root .

Ciò significa che è possibile impostare umask su qualcosa di sensato come umask 0022 prima di eseguire sudo pip install. Oppure utilizzare sudo su per aprire una shell di root con le impostazioni predefinite e quindi pip install.

+0

Inizialmente, quando uno dei membri dello staff ha riferito questo, ho pensato la stessa cosa. Tuttavia, mi è successo un paio di volte in cui imposta prima le autorizzazioni restrittive, ma poi, quando lo eseguo di nuovo senza modificare nulla, funziona perfettamente. –

+0

Hm, sembra davvero strano, specialmente la parte 'senza cambiare niente'. Ho visto questo problema solo durante l'esecuzione di pip su sudo, ora eseguo sempre pip dalla shell di root con un'appropriata umask, e da allora non mi è più successo. Non so cosa sta succedendo qui ... – mata

+0

Puoi anche eseguire sudo bash, quindi umask 0022, quindi installare pip – mabraham

0

Se l'esecuzione di pip con sudo, si consiglia la bandiera -H di sudo

-H, --set-Home Imposta variabile HOME per indirizzare home directory dell'utente

esempio

sudo -H pip install virtualenv