Джемы, яйца и модули Perl
После свежей установки macOS доступны три пустые директории для дополнений, доступных всем пользователям:
/Library/Ruby/Library/Python/Library/Perl
Для установки в них требуется sudo, например: sudo gem install, sudo easy_install или sudo cpan -i.
Пакеты Python (яйца) без sudo с использованием системного Python
Альтернативой избеганию sudo является использование списка управления доступом. Например:
chmod +a 'user:<YOUR_NAME_HERE> allow add_subdirectory,add_file,delete_child,directory_inherit' /Library/Python/3.y/site-packages
Это позволит вам добавлять пакеты в Python 3.y от вашего имени, что, вероятно, безопаснее, чем изменение владельца группы директории.
Почему я использовал sudo?
Возможно, привычка?
Одна из причин — исполняемые файлы размещаются в /usr/local/bin. Обычно это недоступное для записи местоположение. Но если вы установили Homebrew, как мы рекомендуем на macOS Intel, /usr/local будет доступным для записи без sudo. Теперь вы можете установить необходимые инструменты разработки без риска использования sudo.
Альтернативный путь к пакетам
Это рекомендуется только если вы не используете Python, установленный через Homebrew.
На macOS любая версия Python X.Y также ищет модули в ~/Library/Python/X.Y/lib/python/site-packages. Этот путь может ещё не существовать, но вы можете его создать:
mkdir -p ~/Library/Python/2.7/lib/python/site-packages
Чтобы научить easy_install и pip устанавливать туда, используйте переключатель --user или создайте файл ~/.pydistutils.cfg со следующим содержимым:
[install] install_lib = ~/Library/Python/$py_version_short/lib/python/site-packages
Использование virtualenv (с системным Python)
Virtualenv поставляет pip и создаёт изолированные среды Python с отдельными site-packages, которые, следовательно, не нуждаются в sudo.
Rubygems без sudo
Это рекомендуется только если вы не используете rbenv или RVM.
Установленный через Homebrew Ruby устанавливает исполняемые файлы в $(brew --prefix)/opt/ruby/bin без sudo. Вы должны добавить его в свой путь. См. замечания в формуле ruby для актуальной информации.
С системным Ruby
Чтобы установить Ruby в /usr/local, необходимо добавить gem: -n/usr/local/bin в ваш ~/.gemrc. Это YAML, поэтому делайте это вручную или используйте это:
echo "gem: -n/usr/local/bin" >> ~/.gemrc
Однако, все версии RubyGems до 1.3.6 имеют ошибки и игнорируют вышеуказанную настройку. К сожалению, в свежей установке Snow Leopard используется 1.3.5. В настоящее время единственный известный способ решения этой проблемы — обновление rubygems как root:
sudo gem update --system
Альтернативный путь к gem
Просто установите всё в префикс Homebrew так:
echo "export GEM_HOME=\"$(brew --prefix)\"" >> ~/.bashrc
Не работает! При попытке установки возникает ошибка разрешений!
Обратите внимание, что вам, возможно, не нужно это делать, так как Apple решила, что это не лучший вариант по умолчанию.
Если вы когда-либо выполняли sudo gem, и т.д., то многие файлы будут созданы root. Исправьте с помощью:
sudo chown -R $(whoami) /Library/Ruby/* /Library/Perl/* /Library/Python/*
Модули Perl CPAN без sudo
Модуль Perl local::lib работает аналогично rbenv/RVM (хотя только для модулей, а не для установок Perl). Простой способ, который немного загрязняет ваш /Library/Perl, это установить local::lib с sudo:
sudo cpan local::lib
Обратите внимание, что это также установит некоторые другие зависимости, такие как Module::Install. Затем поместите соответствующее заклинание в загрузчик вашей оболочки, например, для .profile вы вставите нижеприведенное; для других см. local::lib документацию.
eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"
Теперь (после перезапуска оболочки) cpan или perl -MCPAN -eshell и т.д. будут устанавливать модули и двоичные файлы в ~/perl5, а соответствующие подкаталоги будут в ваших PATH и PERL5LIB.
Избегание sudo для Perl
Если вы даже не хотите (или не можете) использовать sudo для настройки local::lib, просто вручную установите local::lib в ~/perl5 и добавьте соответствующий путь к PERL5LIB перед заклинанием .bashrc eval.
Ещё один вариант — использовать perlbrew для установки отдельной копии Perl в вашем домашнем каталоге или в любом другом месте:
curl -L https://install.perlbrew.pl | bash perlbrew install perl-5.16.2 echo ".~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/Gems,-Eggs-and-Perl-Modules