Каков самый простой способ установить отсутствующий модуль Perl?
Я получаю эту ошибку:
Can't locate Foo.pm in @INC
есть ли более простой способ установить его, чем загрузка, удаление, создание и т. д.?
23 ответов
В Unix:
обычно вы начинаете на CPAN в командной строке:
# cpan
и типа
install Chocolate::Belgian
или в краткой форме:
cpan Chocolate::Belgian
На Windows:
если вы используете ActivePerl в Windows, то PPM (менеджер пакетов Perl) имеет большую часть той же функциональности, что и На CPAN.ПМ.
пример:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
посмотреть Как установить модули Perl? в CPAN FAQ
многие дистрибутивы отправляют много модулей perl в виде пакетов.
- в Gentoo: категория dev-perl
- Debian:
apt-cache search 'perl$'
вы должны всегда предпочитают их, как вы выгода от автоматического (безопасность)обновления и простоту . Это может быть довольно сложно с на CPAN сам инструмент.
для Gentoo есть хороший инструмент под названием g-cpan который строит / устанавливает модуль из CPAN и создает пакет Gentoo (ebuild) для вас.
попробовать App:: cpanminus:
# cpanm Chocolate::Belgian
это отлично подходит для просто получить вещи установлены. Он не предоставляет ни одной из более сложных функций CPAN или CPANPLUS, поэтому он прост в использовании, если вы знаете, какой модуль вы хотите установить. Если у вас еще нет cpanminus, просто введите:
# cpan App::cpanminus
для ее установки.
также возможно установить его без использования cpan на всех. Основная процедура bootstrap,
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
для более подробная информация перейдите на страницу App:: cpanminus и посмотрите раздел об установке.
Я замечаю, что некоторые люди предлагают один запустить cpan под sudo. Раньше это было необходимо для установки в системный каталог, но современные версии оболочки CPAN позволяют настроить его на использование sudo просто для установки. Это намного безопаснее, так как это означает, что тесты не запускаются как root.
Если у вас есть старая оболочка CPAN, просто установите новый cpan ("install CPAN"), и когда вы перезагрузите оболочку, он должен предложить вам настроить эти новые директивы.
В настоящее время, когда я нахожусь в системе со старым CPAN, первое, что я делаю, это обновить оболочку и настроить ее для этого, чтобы я мог выполнять большую часть своей работы cpan как обычный пользователь.
кроме того, я настоятельно рекомендую пользователям Windows исследовать клубника на Perl. Это версия Perl, которая поставляется в комплекте с предварительно настроенной оболочкой CPAN, а также компилятором. Он также включает в себя некоторые трудно компилируемые модули Perl с их внешней библиотекой C зависимости, в частности XML:: Parser. Это означает, что вы можете делать то же самое, что и любой другой пользователь Perl, когда дело доходит до установки модулей, и вещи, как правило, "просто работают" намного чаще.
Если вы находитесь на 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
несколько человек упомянули утилиту cpan, но это больше, чем просто запуск оболочки. Просто дайте ему модули, которые вы хотите установить, и пусть он делает свою работу.
$prompt> cpan Foo::Bar
Если вы не даете ему никаких аргументов, он запускает CPAN.pm shell. Это работает на 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.
см. Также да, даже вы можете использовать CPAN. Он показывает, как вы можете использовать CPAN без доступа root или sudo.
Отто сделал хорошее предложение. Это работает и для 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, который вы можете установить, чтобы получить некоторые::Random::Module. Одним из больших преимуществ здесь являются man-страницы и примеры скриптов в дополнение к самому модулю будьте размещены в месте вашего дистрибутива по выбору. Если дистрибутив когда-либо выйдет с официальным пакетом для более новой версии Some::Random::Module, он будет автоматически установлен при обновлении apt-get.
уже ответили и приняли ответ - но все равно:
IMHO самый простой способ установки модулей CPAN (на unix-подобных системах и понятия не имею о wondows):
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
выше устанавливается "установщик модулей CPAN нулевой конфигурации" под названием cpanm
. (Может занять несколько минут для установки-не нарушайте процесс)
и после - просто:
cpanm Foo
cpanm Module::One
cpanm Another::Module
много раз случается, что команда установки cpan завершается неудачей с сообщением, как "сделать тест вернулся плохой статус, не будет устанавливать без силы"
в этом случае ниже приведен способ установки модуля:
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
много рекомендаций для CPAN.pm
, что здорово, но если вы используете Perl 5.10
тогда у вас также есть доступ к CPANPLUS.pm
это как CPAN.pm
но лучше.
и, конечно же, он доступен на CPAN
для людей, все еще использующих более старые версии Perl. Почему бы не попробовать:
$ cpan CPANPLUS
2 способа, которые я знаю :
ИСПОЛЬЗОВАНИЕ PPM:
С Windows (ActivePerl) я использовал ppm
из командной строки введите ppm. На подсказке ppm ...
ppm> install foo
или
ppm> search foo
чтобы получить список доступных модулей foo. Тип помогите для всех команд
ИСПОЛЬЗОВАНИЕ CPAN:
вы также можете использовать CPAN, как это (*Nix системы) :
perl -MCPAN -e 'shell'
получает вас строки
cpan>
в командной строке ...
cpan> install foo (again to install the foo module)
введите h, чтобы получить список команд для cpan
используйте команду cpan как cpan Modulename
$ cpan HTML::Parser
для автоматической установки зависимостей выполните следующие действия
$ perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
exit
предпочитаю App:: cpanminus, он автоматически устанавливает зависимости. Просто сделай!--5-->
$ cpanm HTML::Parser
на ubuntu большинство модулей perl уже упакованы, поэтому установка намного быстрее, чем большинство других систем, которые должны компилироваться.
установить Foo::Bar
в командной строке, например, обычно вы просто делаете:
sudo apt-get install libfoo-bar-perl
к сожалению, не все модули следуют этому соглашению об именах.
On Fedora Linux
или Enterprise Linux
, yum
также отслеживает зависимости библиотеки perl. Таким образом, если модуль perl доступен, и некоторый пакет rpm экспортирует эту зависимость, он установит правильный пакет для вас.
yum install 'perl(Chocolate::Belgian)'
(скорее всего, perl-шоколадно-бельгийская упаковка или даже пакет ChocolateFactory)
самый простой способ для меня-это:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'
a) автоматическое рекурсивное обнаружение зависимостей/разрешение/установка
b) это оболочка onliner, хорошая для setup-scripts
Если вы хотите поместить новый модуль в пользовательское расположение, которое ваша оболочка cpan не настроена для использования,то, возможно, следующее будет удобно.
#wget <URL to the module.tgz>
##unpack
perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install
иногда вы можете использовать yum search foo
для поиска относительного модуля perl используйте yum install xxx
установить.
Кажется, вы уже получили свой ответ, но я решил, что вмешаюсь. Это то, что я делаю в некоторых скриптах на Ubuntu (или сервере debian)
#!/usr/bin/perl
use warnings;
use strict;
#I've gotten into the habit of setting this on all my scripts, prevents weird path issues if the script is not being run by root
$ENV{'PATH'} = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin';
#Fill this with the perl modules required for your project
my @perl = qw(LWP::Simple XML::LibXML MIME::Lite DBI DateTime Config::Tiny Proc::ProcessTable);
chomp(my $curl = `which curl`);
if(!$curl){ system('apt-get install curl -y > /dev/null'); }
chomp(my $cpanm = system('/bin/bash', '-c', 'which cpanm &>/dev/null'));
#installs cpanm if missing
if($cpanm){ system('curl -s -L http://cpanmin.us | perl - --sudo App::cpanminus'); }
#loops through required modules and installs them if missing
foreach my $x (@perl){
eval "use $x";
if($@){
system("cpanm $x");
eval "use $x";
}
}
Это хорошо работает для меня, может быть, здесь есть что-то, что вы можете использовать.