Macports встановлює право власності на каталог сайтів пакунків Python, як і root.wheel
з дозволами, доступними для читання у світі. Пакети Python, встановлені через, port install
мають однакові
# 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
Це звичайно заважає окремим користувачам використовувати встановлення pip для додавання пакунків, що просто чудово, оскільки це дійсно повинно бути виконано як root.
Однак якщо для використання використовується sudo або коренева оболонка pip install
, пакети встановлюються pip
як читабельні лише 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
Це забороняє мій обліковий запис користувача фактично імпортувати або використовувати пакет (*).
Як я можу отримати pip, щоб завжди розміщувати розумні дозволи на встановлені пакети?
Оновити (редагувати)
Я переформулював питання, щоб підкреслити, що мова йде pip
лише про встановлення. Я також хотів би тут підкреслити, що проблема полягає не в необхідності дозволу на запис модулів. Проблема полягає в тому, що модулі встановлюються без дозволу на читання .
(*) Хак виправити це - chmod a+rX
належні дозволи (744/755) на щойно встановлені файли пакунків
Оновлення 2 (рішення)
Як запропонували і Марк, і Іан, і підтвердили у швидкому тесті, це пов'язане з umask для root. Ось документація про те, як змінити /etc/sudoers
OSX. Зауважте, що необов’язково міняти umask для всіх екземплярів судо!
port install
?