Каков самый простой способ установить отсутствующий модуль 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.

sudo perl -MCPAN -e 'install Foo'


см. Также да, даже вы можете использовать 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


на Fedora вы можете использовать

# yum install foo

пока Fedora имеет существующий пакет для модуля.


даже он должен работать:

cpan -i module_name

используйте команду 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


в Windows с дистрибутивом ActiveState Perl используйте ppm.


Если вы хотите поместить новый модуль в пользовательское расположение, которое ваша оболочка 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";
    }
}

Это хорошо работает для меня, может быть, здесь есть что-то, что вы можете использовать.


просто выполнение cpan Foo::Bar на shell будет служить этой цели.