Какой самый простой способ установить отсутствующий модуль Perl?

perl install cpan

222255 просмотра

23 ответа

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

Can't locate Foo.pm in @INC

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

Автор: dreeves Источник Размещён: 17.05.2019 02:32

Ответы (23)


201 плюса

Решение

В 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 ).

Автор: Benedikt Waldvogel Размещён: 15.09.2008 07:17

60 плюса

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

# cpanm Chocolate::Belgian

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

# cpan App::cpanminus

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

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

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

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

Автор: Philip Potter Размещён: 28.08.2010 08:34

28 плюса

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

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

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

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

Автор: Dave Rolsky Размещён: 15.09.2008 08:08

22 плюса

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

    $ apt-cache search perl geo :: ipfree
    libgeo-ipfree-perl - страна поиска модуля Perl с IP-адресом

    $ sudo apt-get install libgeo-ipfree-perl
Автор: Otto Размещён: 15.09.2008 07:21

15 плюса

Несколько человек упомянули утилиту 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.
Автор: brian d foy Размещён: 15.09.2008 10:47

10 плюса

sudo perl -MCPAN -e 'install Foo'

Автор: dreeves Размещён: 15.09.2008 07:17

10 плюса

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

Автор: Corion Размещён: 16.09.2008 06:36

8 плюса

Отто сделал хорошее предложение . Это работает и для 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.

Автор: mikegrb Размещён: 16.09.2008 07:25

7 плюса

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

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

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

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

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

cpanm Foo
cpanm Module::One
cpanm Another::Module
Автор: jm666 Размещён: 22.05.2011 06:19

6 плюса

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

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

$ cpan CPANPLUS
Автор: Dave Cross Размещён: 16.09.2008 03:25

5 плюса

Часто случается, что команда cpan install завершается неудачно с сообщением типа «make test вернул плохое состояние, без установки не будет»

В этом случае следующий способ установки модуля:

perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
Автор: jaxbihani Размещён: 10.11.2012 02:24

4 плюса

В Ubuntu большинство модулей Perl уже упакованы, поэтому установка происходит намного быстрее, чем в большинстве других систем, которые приходится компилировать.

Foo::BarНапример, чтобы установить в командной строке, просто выполните:

sudo apt-get install libfoo-bar-perl

К сожалению, не все модули следуют этому соглашению об именах.

Автор: Myforwik Размещён: 22.02.2013 01:02

4 плюса

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

cpan -i module_name
Автор: Mandar Pande Размещён: 22.05.2011 03:55

4 плюса

Используйте команду 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
Автор: Chankey Pathak Размещён: 14.05.2014 05:38

3 плюса

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

Автор: JWHEAT Размещён: 15.09.2008 07:27

3 плюса

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

# yum install foo

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

Автор: Bruce Alderman Размещён: 21.11.2008 07:59

3 плюса

На Fedora Linuxили Enterprise Linux, yumтакже отслеживает зависимости библиотек Перла. Таким образом, если модуль perl доступен и какой-либо пакет rpm экспортирует эту зависимость, он установит подходящий для вас пакет.

yum install 'perl(Chocolate::Belgian)'

(скорее всего, пакет perl-Chocolate-Belgian или даже пакет ChocolateFactory)

Автор: Michal Ingeli Размещён: 30.10.2014 10:39

3 плюса

Самый простой способ для меня это:

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'

а) автоматическое рекурсивное обнаружение / разрешение / установка зависимостей

б) это оболочка, хорошая для сценариев установки

Автор: Mister X Размещён: 28.12.2016 11:16

2 плюса

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

 #wget <URL to the module.tgz>
 ##unpack
 perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install
Автор: venkrao Размещён: 11.09.2013 06:06

2 плюса

Иногда вы можете использовать yum search fooдля поиска относительного модуля Perl, а затем использовать yum install xxxдля установки.

Автор: Chris Forever Размещён: 20.05.2014 08:14

1 плюс

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

Автор: PW. Размещён: 15.09.2008 07:26

1 плюс

Простое выполнение cpan Foo::Barв оболочке будет служить цели.

Автор: Kamal Nayan Размещён: 01.10.2015 09:56

1 плюс

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

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

Автор: Ed Dunn Размещён: 04.11.2016 03:26
32x32