Jak najłatwiej zainstalować brakujący moduł Perla?
Dostaję ten błąd:
Can't locate Foo.pm in @INC
Czy jest łatwiejszy sposób na jego zainstalowanie niż pobranie, odinstalowanie, zrobienie itp?
24 answers
Na Unixie :
Zazwyczaj zaczynasz cpan w swojej powłoce:
$ cpan
I typ
install Chocolate::Belgian
Lub w krótkiej formie:
cpan Chocolate::Belgian
W Systemie Windows :
Jeśli używasz ActivePerl w systemie Windows, ppm (Perl Package Manager) ma wiele z tych samych funkcji, co CPAN.pm.
Przykład:
$ ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
Zobacz Jak zainstalować Perla Moduły? w FAQ CPAN
Wiele dystrybucji wysyła wiele modułów Perla jako pakiety.
- Debian/Ubuntu:
apt-cache search 'perl$'
- Arch Linux:
pacman -Ss '^perl-'
- Gentoo: Kategoria
dev-perl
Powinieneś zawsze preferować je, ponieważ korzystasz z automatycznych (Bezpieczeństwa) aktualizacji i łatwości usuwania . Może to być dość trudne z samym narzędziem cpan.
Dla Gentoo jest fajne narzędzie o nazwie g-cpan który buduje / instaluje moduł z CPAN i tworzy dla Ciebie Pakiet Gentoo ( ebuild ).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-10 13:14:45
Spróbuj App:: cpanminus :
# cpanm Chocolate::Belgian
Jest świetny do instalowania rzeczy. Nie zapewnia żadnej z bardziej złożonych funkcji CPAN lub CPANPLUS, więc jest łatwy w użyciu, pod warunkiem, że wiesz, który moduł chcesz zainstalować. Jeśli nie masz jeszcze cpanminusa, wpisz:
# cpan App::cpanminus
Aby go zainstalować.
Możliwe jest również zainstalowanie go bez użycia cpan w ogóle. Podstawowa procedura bootstrap to:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Aby uzyskać więcej informacji przejdź do aplikacji:: cpanminus strona i spójrz na sekcję dotyczącą instalacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-14 10:53:49
Zauważam, że niektórzy sugerują uruchomienie cpan pod sudo. Kiedyś było to konieczne do instalacji w katalogu systemowym, ale współczesne wersje powłoki CPAN pozwalają skonfigurować ją tak, aby używała sudo tylko do instalacji. Jest to o wiele bezpieczniejsze, ponieważ oznacza to, że testy nie są uruchamiane jako root.
Jeśli masz starą powłokę CPAN, po prostu zainstaluj nową powłokę cpan ("install CPAN"), a po ponownym załadowaniu powłoką powinna pojawić się monit o skonfigurowanie tych nowych dyrektyw.
W dzisiejszych czasach, kiedy Jestem na systemie ze starym CPAN, pierwszą rzeczą, którą robię, to aktualizacja powłoki i skonfigurowanie jej, aby to zrobić, więc mogę wykonać większość mojej pracy cpan jako normalny użytkownik.
Również zdecydowanie sugerowałbym, aby użytkownicy Windows zbadali truskawkowy Perl. Jest to wersja Perla, która jest pakowana z wstępnie skonfigurowaną powłoką CPAN, jak również kompilatorem. Zawiera również niektóre trudne do skompilowania Moduły Perla z ich zewnętrznymi zależnościami bibliotek C, w szczególności Parser XML::. Oznacza to, że możesz to samo, co każdy inny użytkownik Perla, jeśli chodzi o instalowanie modułów, a rzeczy mają tendencję do" po prostu działać " znacznie częściej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-08 16:59:27
Jeśli korzystasz z Ubuntu i chcesz zainstalować wstępnie zapakowany moduł Perla (na przykład geo::ipfree) spróbuj tego:
$ 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 15:21:21
Kilka osób wspomniało o narzędziu cpan, ale to coś więcej niż uruchamianie powłoki. Po prostu daj mu moduły, które chcesz zainstalować i pozwól mu pracować.
$prompt> cpan Foo::Bar
Jeśli nie podasz żadnych argumentów, zaczyna się CPAN.pm shell. To działa na Unix, Mac i powinno być dobrze na Windows(szczególnie truskawkowy Perl).
Istnieje kilka innych rzeczy, które możesz zrobić również za pomocą narzędzia cpan. Oto podsumowanie aktualnych funkcji (które mogą być nowsze niż ten, który przychodzi z CPAN.pm i 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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-11 18:37:54
sudo perl -MCPAN -e 'install Foo'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-15 19:17:11
Zobacz także tak, nawet ty możesz używać CPAN . Pokazuje, jak możesz używać CPAN bez dostępu do roota lub sudo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 09:15:00
Otto złożył dobrą sugestię . Działa to również w przypadku Debiana, jak również innych pochodnych Debiana. Brakujący element jest tym, co należy zrobić, gdy apt-cache search czegoś nie znajdzie.
$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update
Wtedy, gdy masz losowy moduł, który chcesz zainstalować:
$ cd ~/some/path
$ dh-make-perl --build --cpan Some::Random::Module
$ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb
To da ci pakiet deb, który możesz zainstalować, aby uzyskać moduł:: Random::. Jedną z dużych zalet są tutaj strony podręcznika ekranowego, a przykładowe skrypty oprócz samego modułu zostaną umieszczone w twojej dystrybucji miejsce wyboru. Jeśli distro kiedykolwiek wyjdzie z oficjalnym pakietem dla nowszej wersji jakiegoś modułu:: Random::, zostanie ono automatycznie zainstalowane podczas aktualizacji apt-get.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:45
Już odpowiedział i zaakceptował odpowiedź - ale w każdym razie:
IMHO najprostszym sposobem instalacji modułów CPAN (na systemach uniksowych i nie mam pojęcia o cudach) jest:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Powyżej znajduje się instalacja "Instalatora Modułów CPAN zerowej konfiguracji" o nazwie cpanm
. (Instalacja może potrwać kilka minut - nie przerywaj procesu)
I po-po prostu:
cpanm Foo
cpanm Module::One
cpanm Another::Module
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-22 18:19:38
Dużo rekomendacji dla CPAN.pm
, co jest świetne, ale jeśli używasz Perl 5.10
, to masz również dostęp do CPANPLUS.pm
, który jest podobny CPAN.pm
, ale lepszy.
I, oczywiście, jest on dostępny na CPAN
dla osób nadal korzystających ze starszych wersji Perla. Dlaczego nie spróbować:
$ cpan CPANPLUS
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 15:15:07
Wiele razy zdarza się, że polecenie instalacji cpan zawodzi z Komunikatem jak "make test zwrócił zły stan, nie zainstaluje się bez siły"
W takim przypadku Poniżej znajduje się sposób instalacji modułu:
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-10 02:44:10
Użyj polecenia cpan jako cpan Modulename
$ cpan HTML::Parser
Aby automatycznie zainstalować zależności, postępuj zgodnie z poniższymi instrukcjami
$ perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
exit
Preferuję App:: cpanminus , instaluje zależności automatycznie. Just do
$ cpanm HTML::Parser
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 16:43:20
Na ubuntu większość modułów Perla jest już spakowana, więc instalacja jest znacznie szybsza niż większość innych systemów, które muszą się skompilować.
Aby zainstalować Foo::Bar
w wierszu polecenia na przykład zwykle wystarczy:
sudo apt-get install libfoo-bar-perl
Niestety nie wszystkie moduły są zgodne z tą konwencją nazewnictwa.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 14:50:02
Nawet powinno działać:
cpan -i module_name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 14:52:47
2 sposoby, które znam:
UŻYCIE PPM:
Z Windows (ActivePerl) użyłem ppm
Z linii poleceń typu ppm. W wierszu ppm ...
ppm> install foo
Lub
ppm> search foo
Aby uzyskać listę dostępnych modułów foo. Wpisz help dla wszystkich poleceń
KORZYSTANIE Z CPAN:
Możesz również użyć CPAN w ten sposób (*systemy nix) :
perl -MCPAN -e 'shell'
Gets you a prompt
cpan>
Na monitorze ...
cpan> install foo (again to install the foo module)
Wpisz h, aby uzyskać listę poleceń dla cpan
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-15 19:27:42
Na Fedorze możesz użyć
# yum install foo
Tak długo, jak Fedora ma istniejący pakiet dla modułu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-21 19:59:27
On Fedora Linux
lub Enterprise Linux
, yum
śledzi również zależności bibliotek Perla. Tak więc, jeśli moduł Perla jest dostępny, a niektóre pakiety RPM eksportują tę zależność, zainstaluje odpowiedni pakiet dla Ciebie.
yum install 'perl(Chocolate::Belgian)'
(najprawdopodobniej pakiet perl-Chocolate-Belgian, lub nawet Pakiet ChocolateFactory)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 14:51:41
Najprostszym sposobem dla mnie jest to:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'
A) automatyczne rekurencyjne wykrywanie/rozwiązywanie/instalowanie zależności
B) jest to shell onliner, dobry do setup-scripts
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-28 11:16:18
Jeśli chcesz umieścić nowy moduł w niestandardowej lokalizacji, do której nie jest skonfigurowana powłoka cpan, być może przydatne będą następujące elementy.
#wget <URL to the module.tgz>
##unpack
perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-11 18:06:06
Czasami możesz użyć yum search foo
do przeszukania względnego modułu Perla, a następnie użyć yum install xxx
do zainstalowania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 14:50:50
Bezpieczne rozwiązanie
Wiele odpowiedzi wspomina o użyciu narzędzia cpan
(które używa CPAN.pm
) bez słowa na temat bezpieczeństwa. Domyślnie CPAN
2.27 i wcześniejsze konfiguruje urllist
, aby używać adresu URL http (mianowicie http://www.cpan.org/), który pozwala na ataki MITM, przez co jest niepewny. To jest to, co jest używane do pobierania plików CHECKSUMS
, tak, że trzeba go zmienić na Bezpieczny adres URL (np https://www.cpan.org/).
Więc po uruchomieniu cpan i zaakceptowaniu domyślna konfiguracja, należy zmodyfikować wygenerowany plik MyConfig.pm
(Pełna ścieżka jest wyjściowa) w następujący sposób. Replace
'urllist' => [q[http://www.cpan.org/]],
By
'urllist' => [q[https://www.cpan.org/]],
Uwaga: https nie jest wystarczający; potrzebujesz również strony internetowej, której możesz zaufać. Więc bądź ostrożny, jeśli chcesz wybrać dowolne lustro.
Wtedy możesz użyć cpan
w zwykły sposób.
Mój Zgłoś błąd na rt.cpan.org o niepewnym adresie URL.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-25 13:17:35
W Windows z dystrybucją ActiveState Perla, użyj polecenia ppm .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-08 07:27:00
Samo wykonanie cpan Foo::Bar
Na powłoce służyłoby temu celowi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-01 09:56:36
Wygląda na to, że masz już swoją odpowiedź, ale pomyślałem, że się odezwę. To jest to, co robię w niektórych skryptach na Ubuntu (lub serwerze Debiana)
#!/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";
}
}
To działa dobrze dla mnie, może jest coś tutaj można użyć.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-04 15:26:15