Я получаю эту ошибку:
Can't locate Foo.pm in @INC
Есть ли более простой способ его установки, чем загрузка, распаковка, создание и т. Д.?
cpan
.
Я получаю эту ошибку:
Can't locate Foo.pm in @INC
Есть ли более простой способ его установки, чем загрузка, распаковка, создание и т. Д.?
cpan
.
Ответы:
В 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 ).
ppm
использует дефисы, -
потому что вы указываете дистрибутив , который хотите установить, что намного честнее. Например, если вы используете cpan
для установки LWP
, LWP::Simple
или LWP::UserAgent
он установит дистрибутив libwww-perl
для вас. Большинство дистрибутивов содержат один модуль с эквивалентным именем, но есть несколько подобных исключений
Попробуйте приложение :: cpanminus :
# cpanm Chocolate::Belgian
Это здорово, просто чтобы установить вещи. Он не предоставляет ни одной из более сложных функций CPAN или CPANPLUS, поэтому его легко использовать, если вы знаете, какой модуль вы хотите установить. Если вы еще не получили cpanminus, просто наберите:
# cpan App::cpanminus
установить его.
Также возможно установить его вообще без использования cpan. Основная процедура начальной загрузки:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Для получения дополнительной информации перейдите на страницу App :: cpanminus и посмотрите раздел по установке.
cpan
для установки App::cpanminus
немного странно. Обычные инструкции по установке включают в себя процедуру начальной загрузки, когда часть ее загружается из cpanmin.us и используется для установки остальных. Это позволяет избежать настройки cpan
и создания (после этого) бесполезного .cpan
каталога.
cpanminus
с терминала. Я считаю, что cpanm
лучше, cpan
потому что он не выводит журналы ошибок на экран, а сохраняет их во временных файлах журналов и дает путь в случае ошибок.
Я заметил, что некоторые люди предлагают один запуск cpan под sudo. Раньше это было необходимо для установки в системный каталог, но современные версии оболочки CPAN позволяют настроить его для использования только sudo для установки. Это намного безопаснее, поскольку это означает, что тесты не запускаются от имени пользователя root.
Если у вас есть старая оболочка CPAN, просто установите новый cpan («установить CPAN»), и когда вы перезагрузите оболочку, она предложит вам настроить эти новые директивы.
В настоящее время, когда я работаю в системе со старым CPAN, первым делом я обновляю оболочку и настраиваю ее так, чтобы я мог выполнять большую часть своей работы cpan как обычный пользователь.
Кроме того, я настоятельно рекомендую пользователям Windows исследовать клубничный Perl . Это версия Perl, которая поставляется с предварительно настроенной оболочкой CPAN, а также с компилятором. Он также включает в себя некоторые трудно компилируемые модули Perl с их внешними зависимостями библиотеки C, в частности, XML :: Parser. Это означает, что вы можете делать то же самое, что и любой другой пользователь Perl, когда дело доходит до установки модулей, и вещи, как правило, «просто работают» гораздо чаще.
install CPAN
отсюда? $sudo apt-get install cpan
?
App::cpanminus
, это такая радость, чтобы использовать его. Филипп Поттер предлагает это в своем ответе здесь, и вы можете попробовать этот час. Ответ Оуэнса .
Если вы работаете в Ubuntu и хотите установить предварительно упакованный модуль perl (например, geo :: ipfree), попробуйте следующее:
$ apt-cache search perl geo :: ipfree libgeo-ipfree-perl - страна поиска модуля Perl с IP-адресом $ 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.
Также смотрите Да, даже вы можете использовать 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.
Уже ответил и принял ответ - но все равно:
ИМХО самый простой способ установки модулей CPAN (в системах, подобных unix, и не имеющих представления о вдовах):
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 завершается неудачно с сообщением типа «make test вернул плохой статус, не установит без силы»
В этом случае следующий способ установки модуля:
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
В 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 системы ):
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-шоколадно-бельгийский пакет или даже пакет ChocolateFactory)
Самый простой способ для меня это:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'
а) автоматическое рекурсивное обнаружение / разрешение / установка зависимостей
б) это оболочка, хорошая для скриптов установки
Если вы хотите поместить новый модуль в нестандартное место, в котором ваша оболочка 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
для установки.
Безопасное решение
Во многих ответах упоминается использование cpan
утилиты (которая использует CPAN.pm
) без слов о безопасности. По умолчанию CPAN
2.27 и более ранние urllist
версии настраивают использование URL-адреса http (а именно, http://www.cpan.org/ ), который разрешает атаки MITM, поэтому небезопасен. Это то, что используется для загрузки CHECKSUMS
файлов, поэтому его необходимо заменить на безопасный URL-адрес (например, https://www.cpan.org/ ).
Таким образом, после запуска cpan и принятия конфигурации по умолчанию, вам нужно изменить сгенерированный MyConfig.pm
файл (выводится полный путь) следующим образом. замещать
'urllist' => [q[http://www.cpan.org/]],
по
'urllist' => [q[https://www.cpan.org/]],
Примечание: https не достаточно; Вам также нужен веб-сайт, которому вы можете доверять. Так что будьте осторожны, если хотите выбрать какое-нибудь произвольное зеркало.
Тогда вы можете использовать cpan
обычным способом.
https://www.cpan.org/
).
В 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($@){
system("cpanm $x");
eval "use $x";
}
}
Это хорошо работает для меня, может быть, здесь есть что-то, что вы можете использовать.