Я отримую цю помилку:
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 FAQ
Багато дистрибутивів постачають безліч модулів 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 під судо. Це було потрібно для встановлення в системний каталог, але сучасні версії оболонки CPAN дозволяють налаштувати його на використання sudo лише для встановлення. Це набагато безпечніше, оскільки це означає, що тести не працюють як root.
Якщо у вас є стара оболонка CPAN, просто встановіть новий cpan ("встановити CPAN"), і коли ви перезавантажите оболонку, вона повинна запропонувати вам налаштувати ці нові директиви.
Сьогодні, коли я перебуваю в системі зі старим CPAN, перше, що я роблю, - це оновити оболонку та налаштувати її для цього, щоб я міг виконувати більшу частину роботи cpan як звичайний користувач.
Також я настійно пропоную користувачам Windows вивчити полуницю Perl . Це версія Perl, яка постачається в комплекті з попередньо налаштованою оболонкою CPAN, а також компілятором. Він також включає деякі складно складені модулі Perl з їх зовнішніми залежностями бібліотеки С, зокрема XML :: Parser. Це означає, що ви можете робити те саме, що і будь-який інший користувач Perl, коли мова заходить про встановлення модулів, а речі, як правило, «просто працюють» набагато частіше.
install CPAN
звідки? $sudo apt-get install cpan
?
App::cpanminus
нею така радість. Філіп Поттер запропонував це у своїй відповіді тут, і ви можете спробувати цей Chas Відповідь Оуенса .
Якщо ви перебуваєте на Ubuntu і хочете встановити попередньо упакований модуль perl (наприклад, geo :: ipfree), спробуйте це:
$ apt-кеш пошуку perl geo :: ipfree libgeo-ipfree-perl - Шукає країну ip-адреси модуля Perl $ sudo apt - отримати встановити 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-кешу не знайде щось.
$ 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
Це дасть вам пакет дебютів, який ви можете встановити, щоб отримати модуль Some :: Random ::. Однією з головних переваг тут є підручні сторінки та зразки сценаріїв, крім того, що сам модуль буде розміщений у вибраному вами дистрибутиві. Якщо дистрибутив коли-небудь вийде з офіційним пакетом для нової версії Some :: Random :: Module, він буде автоматично встановлений під час оновлення apt-get.
Вже відповів і прийняв відповідь - але все одно:
IMHO, найпростіший спосіб встановлення модулів 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 не вдається з повідомленням типу "зробити тест повернувся поганим статусом, не встановиться без сили"
У цьому випадку наступним є спосіб встановлення модуля:
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
Я знаю два способи:
ВИКОРИСТАННЯ PPM:
У Windows (ActivePerl) я використовував 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 має існуючий пакет для модуля.
На Fedora Linux
або Enterprise Linux
, yum
також відстежує залежності бібліотеки perl. Отже, якщо модуль perl доступний, і якийсь пакет rpm експортує цю залежність, він встановить правильний пакет для вас.
yum install 'perl(Chocolate::Belgian)'
(найімовірніше, перль-шоколад-бельгійський пакет або навіть пакет шоколадуFactory)
Іноді ви можете використовувати 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
звичайним способом.
Мій звіт про помилку на rt.cpan.org про незахищену URL-адресу.
https://www.cpan.org/
).
Просто виконання 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";
}
}
Це добре працює для мене, можливо, тут є щось, що ви можете використати.