Macports imposta la proprietà della propria directory dei pacchetti di siti Python come root.wheel
con permessi leggibili. I pacchetti Python instally tramite port install
hanno lo stesso
# ls -l -d /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
drwxr-xr-x 151 root wheel 5134 Mar 8 10:56 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Questo ovviamente impedisce ai singoli utenti di usare i pip install per aggiungere pacchetti, il che va bene dato che dovrebbe essere fatto come root.
Tuttavia, se si usa sudo o una shell di root in pip install
, i pacchetti vengono installati da pip
come leggibile solo da root.wheel
(740).
% sudo pip install BeautifulSoup
...
% ls -l -d /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/BeautifulSoup.py
-rw-r----- 1 root wheel 79567 Mar 8 11:09 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/BeautifulSoup.py
Questo preclude al mio account utente di importare o utilizzare effettivamente il pacchetto (*).
Come posso ottenere pip per inserire sempre autorizzazioni ragionevoli sui pacchetti installati?
Aggiorna (modifica)
Ho riformulato la domanda per sottolineare che riguarda solo pip
installazioni. Vorrei anche sottolineare che il problema è non che richiede il permesso di scrittura sui moduli. Il problema è che i moduli vengono installati senza autorizzazioni read .
(*) Un trucco per risolvere il problema è di chmod a+rX
le autorizzazioni appropriate (744/755) sui file del pacchetto appena installato
Aggiornamento 2 (soluzione)
Come suggerito da Mark e Ian e confermato in un test rapido, questo ha a che fare con umask per root. Ecco la documentazione su come modificare /etc/sudoers
per OSX. Nota che non è necessariamente una buona idea cambiare la umask per tutte le istanze sudo!