Какой самый простой способ установить отсутствующий модуль Perl? - PullRequest
164 голосов
/ 15 сентября 2008

Я получаю эту ошибку:

Can't locate Foo.pm in @INC

Есть ли более простой способ установить его, чем загрузка, распаковка, создание и т. Д.?

Ответы [ 23 ]

201 голосов
/ 15 сентября 2008

В Unix :

обычно вы запускаете cpan в вашей оболочке:

# cpan

и введите

install Chocolate::Belgian

или в краткой форме:

cpan Chocolate::Belgian

В Windows :

Если вы используете ActivePerl в Windows, PPM (Perl Package Manager) имеет почти те же функции, что и CPAN.pm.

Пример:

# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart

см. Как установить модули Perl? в FAQ по CPAN

Многие дистрибутивы поставляют множество модулей Perl в виде пакетов.

  • Debian / Ubuntu: apt-cache search 'perl$'
  • Arch Linux: pacman -Ss '^perl-'
  • Gentoo: категория dev-perl

Вам следует всегда отдавать предпочтение им, поскольку вы получаете выгоду от автоматических (безопасность) обновлений и простоты удаления . Это может быть довольно сложно с самим инструментом cpan .

Для Gentoo есть хороший инструмент под названием g-cpan , который собирает / устанавливает модуль из CPAN и создает пакет Gentoo ( ebuild ) для вас.

60 голосов
/ 28 августа 2010

Попробуйте Приложение :: cpanminus :

# cpanm Chocolate::Belgian

Отлично подходит для установки вещей. Он не предоставляет ни одной из более сложных функций CPAN или CPANPLUS, поэтому его легко использовать, если вы знаете, какой модуль вы хотите установить. Если вы еще не получили cpanminus, просто наберите:

# cpan App::cpanminus

чтобы установить его.

Также возможно установить его вообще без использования cpan. Основная процедура начальной загрузки:

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

Для получения дополнительной информации перейдите на страницу App :: cpanminus и посмотрите раздел по установке.

28 голосов
/ 16 сентября 2008

Я заметил, что некоторые люди предлагают один запуск cpan под sudo. Раньше это было необходимо для установки в системный каталог, но современные версии оболочки CPAN позволяют настроить его для использования sudo just для установки. Это намного безопаснее, поскольку это означает, что тесты не запускаются от имени пользователя root.

Если у вас старая оболочка CPAN, просто установите новый cpan («установить CPAN»), и когда вы перезагрузите оболочку, она предложит вам настроить эти новые директивы.

В настоящее время, когда я работаю в системе со старым CPAN, первым делом я обновляю оболочку и настраиваю ее так, чтобы я мог выполнять большую часть своей работы cpan как обычный пользователь.

Кроме того, я настоятельно рекомендую пользователям Windows исследовать клубничный Perl . Это версия Perl, которая поставляется с предварительно настроенной оболочкой CPAN, а также с компилятором. Он также включает некоторые трудно компилируемые модули Perl с их зависимостями от внешней библиотеки C, в частности, XML :: Parser. Это означает, что вы можете делать то же самое, что и любой другой пользователь Perl, когда дело доходит до установки модулей, и вещи, как правило, «просто работают» гораздо чаще.

22 голосов
/ 15 сентября 2008

Если вы используете Ubuntu и хотите установить предварительно упакованный модуль perl (например, geo :: ipfree), попробуйте следующее:

    $ apt-cache search perl geo::ipfree
    libgeo-ipfree-perl - A look up country of ip address Perl module

    $ sudo apt-get install libgeo-ipfree-perl
15 голосов
/ 16 сентября 2008

Несколько человек упомянули утилиту cpan, но это больше, чем просто запуск оболочки. Просто дайте ему модули, которые вы хотите установить, и дайте ему работать.

$prompt> cpan Foo::Bar

Если вы не дадите ему никаких аргументов, он запускает оболочку CPAN.pm. Это работает на Unix, Mac и должно быть хорошо на Windows (особенно Strawberry Perl).

Есть еще несколько вещей, которые вы можете сделать с помощью инструмента cpan. Вот краткое описание текущих функций (которые могут быть новее, чем те, которые поставляются с CPAN.pm и perl):

-a
Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.

-A module [ module ... ]
Shows the primary maintainers for the specified modules

-C module [ module ... ]
Show the Changes files for the specified modules

-D module [ module ... ]
Show the module details. This prints one line for each out-of-date module (meaning,
modules locally installed but have newer versions on CPAN). Each line has three columns:
module name, local version, and CPAN version.

-L author [ author ... ]
List the modules by the specified authors.

-h
Prints a help message.

-O
Show the out-of-date modules.

-r
Recompiles dynamically loaded modules with CPAN::Shell->recompile.

-v
Print the script version and CPAN.pm version.
11 голосов
/ 15 сентября 2008

sudo perl -MCPAN -e 'install Foo'

10 голосов
/ 16 сентября 2008

Также см. Да, даже вы можете использовать CPAN . Он показывает, как вы можете использовать CPAN без доступа root или sudo.

8 голосов
/ 16 сентября 2008

Отто сделал хорошее предложение . Это работает и для Debian, как и для любой другой производной Debian. Недостающая часть - это то, что нужно делать, когда поиск в apt-cache не находит ничего.

$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update

Тогда всякий раз, когда у вас есть случайный модуль, вы хотите установить:

$ cd ~/some/path
$ dh-make-perl --build --cpan Some::Random::Module
$ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb

Это даст вам пакет deb, который вы можете установить, чтобы получить Some :: Random :: Module. Одним из больших преимуществ здесь являются страницы руководства и примеры сценариев в дополнение к самому модулю, который будет размещен в выбранном вами дистрибутиве. Если дистрибутив выпускает официальный пакет для более новой версии Some :: Random :: Module, он будет автоматически установлен при обновлении apt-get.

7 голосов
/ 22 мая 2011

Уже ответил и принял ответ - но все равно:

ИМХО самый простой способ установки модулей CPAN (на Unix-подобных системах и не иметь представления о вдовах):

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

Выше описана установка "установщика CPAN-модулей нулевой конфигурации", который называется cpanm. (Установка может занять несколько минут - не прерывайте процесс)

и после - просто:

cpanm Foo
cpanm Module::One
cpanm Another::Module
6 голосов
/ 16 сентября 2008

Много рекомендаций для CPAN.pm, что замечательно, но если вы используете Perl 5.10, то у вас также есть доступ к CPANPLUS.pm, который похож на CPAN.pm, но лучше.

И, конечно, он доступен на CPAN для людей, все еще использующих более старые версии Perl. Почему бы не попробовать:

$ cpan CPANPLUS
...