Я получаю эту ошибку:
Can't locate Foo.pm in @INC
Есть ли более простой способ установить его, чем загружать, распаковывать, создавать и т.д.
Я получаю эту ошибку:
Can't locate Foo.pm in @INC
Есть ли более простой способ установить его, чем загружать, распаковывать, создавать и т.д.
В 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 в виде пакетов.
apt-cache search 'perl$'
pacman -Ss '^perl-'
dev-perl
Вы должны всегда отдавать им предпочтение, поскольку извлекаете выгоду из автоматических обновлений (безопасности) и простоты удаления Это может быть довольно сложно с самим инструментом cpan.
Для Gentoo есть хороший инструмент под названием g-cpan, который собирает/устанавливает модуль из CPAN и создает для вас пакет Gentoo (ebuild).
Попробуйте App::cpanminus:
# cpanm Chocolate::Belgian
Это здорово для того, чтобы просто установить материал. Он не обеспечивает ни одной из более сложных функций CPAN или CPANPLUS, поэтому он прост в использовании, если вы знаете, какой модуль вы хотите установить. Если у вас еще нет cpanminus, просто введите:
# cpan App::cpanminus
чтобы установить его.
Также возможно установить его без использования cpan. Основная процедура начальной загрузки -
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. Это работает на 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, который вы можете установить для получения Some:: Random:: Module. Одним из больших преимуществ здесь являются страницы руководства и образцы сценариев в дополнение к самому модулю, которые будут размещены в выбранном вами дистрибутиве. Если дистрибутив когда-либо выходит с официальным пакетом для более новой версии Some:: Random:: Module, он будет автоматически установлен, когда вы apt-get upgrade.
Уже ответил и принял ответ - но в любом случае:
ИМХО самый простой способ установки модулей CPAN (на unix-подобных системах и не иметь понятия о wondows):
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Вышеописанная установка "установщик модулей CPAN с нулевой конфигурацией" называется cpanm
. (Может потребоваться несколько минут для установки - не прерывайте процесс)
и после - просто:
cpanm Foo
cpanm Module::One
cpanm Another::Module
Множество рекомендаций для CPAN.pm
, что здорово, но если вы используете Perl 5.10
, то у вас также есть доступ к CPANPLUS.pm
, который похож на CPAN.pm
, но лучше.
И, конечно же, он доступен на CPAN
для людей, которые все еще используют старые версии Perl. Почему бы не попробовать:
$ cpan CPANPLUS
Много раз случается, что команда cpan install завершается с сообщением типа "сделать тест вернул плохой статус, не будет установлен без силы"
В этом случае следующий способ установки модуля:
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
Даже он должен работать:
cpan -i module_name
На ubuntu большинство модулей perl уже упакованы, поэтому установка выполняется намного быстрее, чем большинство других систем, которые необходимо скомпилировать.
Чтобы установить Foo::Bar
в командной строке, например, обычно вы просто делаете:
sudo apt-get install libfoo-bar-perl
К сожалению, не все модули следуют этому соглашению об именах.
Используйте команду 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, он автоматически устанавливает зависимости. Просто сделайте
$ cpanm HTML::Parser
2 способа, о которых я знаю:
ИСПОЛЬЗОВАНИЕ PPM:
С Windows (ActivePerl) я использовал ppm
из командной строки типа ppm. В командной строке ppm...
ppm> install foo
или
ppm> search foo
чтобы получить список доступных модулей foo. Введите help для всех команд
ИСПОЛЬЗОВАНИЕ CPAN:
вы также можете использовать CPAN (* nix systems):
perl -MCPAN -e 'shell'
получает приглашение
cpan>
в командной строке...
cpan> install foo (again to install the foo module)
введите h, чтобы получить список команд для cpan
В Fedora вы можете использовать
# yum install foo
пока Fedora имеет существующий пакет для модуля.
В Fedora Linux
или Enterprise Linux
, yum
также отслеживает зависимости библиотеки perl. Итак, если модуль perl доступен, а некоторые пакеты rpm экспортируют эту зависимость, он установит для вас правильный пакет.
yum install 'perl(Chocolate::Belgian)'
(скорее всего, пакет perl-Chocolate-Belgian или пакет ChocolateFactory)
Самый простой способ для меня:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'
a) обнаружение/разрешение/репликация автоматической рекурсивной зависимости
b) это оболочка onliner, полезная для сценариев установки
Если вы хотите поместить новый модуль в настраиваемое место, в котором ваша оболочка 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
для установки.
В Windows с дистрибутивом Perl ActiveState используйте команду ppm.
Простое выполнение cpan Foo::Bar
на оболочке будет служить цели.
Похоже, что у вас уже есть ответ, но я решил, что буду звонить. Это то, что я делаю в некоторых сценариях на 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([email protected]){
system("cpanm $x");
eval "use $x";
}
}
Это хорошо работает для меня, возможно, здесь есть что-то, что вы можете использовать.