Spec-Zone.ru › Homebrew

Джемы, яйца и модули 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API