Как добавить модули Perl, используя CPAN на El Capitan

Когда появилась OS X El Capitan, возможность использовать CPAN для добавления или обновления модулей Perl исчезла. Кажется, что сценарии либо хотят изменить /usr/bin, который сейчас запрещен, или они пытаются использовать двоичные файлы из /sw/usr/bin которые не существуют и находятся в /usr/bin вместо. Сам Perl не может быть установлен, потому что он хочет установить в /usr/bin вместо /usr/local/bin,

Где скрипты, которые используют эти /sw/usr/bin? Кажется, они должны использовать PATH для определения местоположения двоичных файлов вместо их жесткого кодирования.

Кто-нибудь знает, как починить Perl и CPAN на El Capitan? Подробные инструкции будут полезны.

1 ответ

Решение

У меня не было проблем с добавлением новых пакетов CPAN в поставляемый OSX El Capitan Perl. По умолчанию они встроены в ваш домашний каталог и установлены в /Library/Perl/5.18/ который доступен для записи с правами root.

/sw/ упомянутый вами префикс, похоже, происходит от установки Fink. Если вы ранее установили другой Perl из Fink, вам, вероятно, потребуется обновить установку Fink и обновить пакет perl, исходящий от него.

Если вы уверены, что не используете Fink и хотите запустить другую версию Perl, кроме той, которая поставляется с OS X, вы можете использовать ту из homebrew. Он будет установлен в /usr/local и будет доступен для его вызова, но все Perl-программы OSX будут продолжать использовать версию perl, поставляемую с OSX. Помните, что Fink и Homebrew плохо играют друг с другом, лучше придерживаться одного.

Наконец, если вы хотите запустить несколько версий perl и иметь возможность переключаться между ними, я бы посоветовал вам взглянуть на http://perlbrew.pl/.

Некоторые другие полезные команды для дальнейшей отладки вашей установки Perl:

  • which perl скажет вам, где установлен ваш текущий perl exec
  • perl -V предоставит вам дополнительную информацию о версии perl, дате ее компиляции и опциях, а также о путях включения, в которых ищутся модули
  • perldoc perllocal выведет список модулей Perl, которые вы установили локально с CPAN

Что касается CPAN, как вы заметили, обычное обновление CPAN не выполняется. Однако существует решение, говорящее CPAN об установке в /usr/local/bin/, Я задокументировал обновление CPAN в этом ответе.

Другие вопросы по тегам