Я отримую цю помилку:
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) без слова про безпеку. За замовчуванням CPAN2,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";
}
}
Це добре працює для мене, можливо, тут є щось, що ви можете використати.