Otrzymuję ten błąd:
Can't locate Foo.pm in @INC
Czy istnieje łatwiejszy sposób na zainstalowanie niż pobieranie, rozpakowywanie, tworzenie itp.?
cpan
.
Otrzymuję ten błąd:
Can't locate Foo.pm in @INC
Czy istnieje łatwiejszy sposób na zainstalowanie niż pobieranie, rozpakowywanie, tworzenie itp.?
cpan
.
Odpowiedzi:
W systemie Unix :
zwykle zaczynasz cpan w swojej powłoce:
# cpan
i wpisz
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 takich samych funkcji jak CPAN.pm.
Przykład:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
zobacz Jak zainstalować moduły Perla? w FAQ CPAN
Wiele dystrybucji dostarcza wiele modułów perla jako pakiety.
apt-cache search 'perl$'
pacman -Ss '^perl-'
dev-perl
Należy zawsze wolą je jak korzystać z automatycznych (Security) aktualizacje i łatwość usuwania . Może to być dość trudne z samym narzędziem cpan .
Dla Gentoo jest ładne narzędzie o nazwie g-cpan, które buduje / instaluje moduł z CPAN i tworzy dla ciebie pakiet Gentoo ( ebuild ).
ppm
używa łączników, -
ponieważ określasz dystrybucję , którą chcesz zainstalować, co jest o wiele bardziej uczciwe. Na przykład, jeśli użyjesz cpan
do zainstalowania LWP
, LWP::Simple
albo LWP::UserAgent
będzie zainstalować dystrybucję libwww-perl
dla Ciebie. Większość dystrybucji zawiera pojedynczy moduł o równoważnej nazwie, ale istnieje kilka takich wyjątków
Wypróbuj aplikację :: cpanminus :
# cpanm Chocolate::Belgian
Jest świetny do instalowania różnych rzeczy. Nie zapewnia żadnej bardziej złożonej funkcjonalności CPAN lub CPANPLUS, więc jest łatwy w użyciu, pod warunkiem, że wiesz, który moduł chcesz zainstalować. Jeśli nie masz jeszcze cpanminus, po prostu wpisz:
# cpan App::cpanminus
zainstalować.
Możliwe jest również zainstalowanie go bez użycia cpan. Podstawowa procedura ładowania początkowego to
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Aby uzyskać więcej informacji, przejdź do strony App :: cpanminus i zapoznaj się z sekcją dotyczącą instalacji.
cpan
z instalacji App::cpanminus
jest trochę dziwne. Normalne instrukcje instalacji obejmują procedurę ładowania, pobierając jej część z cpanmin.us i wykorzystując ją do zainstalowania reszty. Pozwala to uniknąć konfiguracji cpan
i utworzenia (potem) bezużytecznego .cpan
katalogu.
cpanminus
z terminala. Uważam, że cpanm
lepiej niż cpan
dlatego, że nie wyświetla dzienników błędów na ekranie, a raczej przechowuje je w tymczasowych plikach dziennika i podaje ścieżkę w przypadku błędów.
Zwracam uwagę, że niektórzy sugerują jeden bieg cpan pod sudo. Kiedyś było to konieczne do zainstalowania w katalogu systemowym, ale nowoczesne wersje powłoki CPAN pozwalają ci skonfigurować ją tak, aby używała sudo tylko do instalacji. Jest to o wiele bezpieczniejsze, ponieważ oznacza, że testy nie działają jako root.
Jeśli masz starą powłokę CPAN, po prostu zainstaluj nowy cpan („zainstaluj CPAN”), a po ponownym załadowaniu powłoki powinien wyświetlić monit o skonfigurowanie tych nowych dyrektyw.
W dzisiejszych czasach, kiedy jestem w systemie ze starym CPAN, pierwszą rzeczą, którą robię, jest aktualizacja powłoki i skonfigurowanie jej w taki sposób, aby mógł wykonywać większość moich operacji cpan jako normalny użytkownik.
Ponadto zdecydowanie sugeruję, aby użytkownicy Windows zbadali truskawkowego Perla . Jest to wersja Perla dostarczana ze wstępnie skonfigurowaną powłoką CPAN oraz kompilatorem. Zawiera także niektóre trudne do skompilowania moduły Perla z ich zewnętrznymi zależnościami biblioteki C, w szczególności XML :: Parser. Oznacza to, że możesz robić to samo, co każdy inny użytkownik Perla, jeśli chodzi o instalowanie modułów, a rzeczy często „po prostu działają”.
install CPAN
Skąd? $sudo apt-get install cpan
?
App::cpanminus
niego jest tak przyjemne. Philip Potter sugeruje to w swojej odpowiedzi tutaj i możesz spróbować tego Chas. Odpowiedź Owensa .
Jeśli korzystasz z systemu Ubuntu i chcesz zainstalować wstępnie spakowany moduł perla (na przykład geo :: ipfree), spróbuj tego:
$ apt-cache search perl geo :: ipfree libgeo-ipfree-perl - Wyszukaj kraj adresu IP moduł Perl $ sudo apt-get install libgeo-ipfree-perl
Kilka osób wspomniało o narzędziu cpan, ale to coś więcej niż uruchomienie powłoki. Po prostu daj mu moduły, które chcesz zainstalować i pozwól mu działać.
$prompt> cpan Foo::Bar
Jeśli nie podasz żadnych argumentów, uruchamia powłokę CPAN.pm. Działa to na systemach Unix, Mac i powinno być w porządku na Windowsie (szczególnie Strawberry Perl).
Jest także kilka innych rzeczy, które możesz zrobić za pomocą narzędzia cpan. Oto podsumowanie obecnych funkcji (które mogą być nowsze niż te, które są dostarczane 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.
Zobacz także Tak, nawet ty możesz używać CPAN . Pokazuje, jak można korzystać z CPAN bez dostępu do konta root lub sudo.
Otto zasugerował . Działa to również dla Debiana, a także dla każdej innej pochodnej Debiana. Brakujący element jest tym, co należy zrobić, gdy wyszukiwanie apt-cache nie znajdzie czegoś.
$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update
Następnie, 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ć Some :: Random :: Module. Jedną z dużych zalet jest to, że strony podręcznika i przykładowe skrypty oprócz samego modułu zostaną umieszczone w wybranej lokalizacji dystrybucji. Jeśli dystrybucja kiedykolwiek wyjdzie z oficjalnym pakietem dla nowszej wersji Some :: Random :: Module, zostanie ona automatycznie zainstalowana po apt-get upgrade.
Już odpowiedziałem i zaakceptował odpowiedź - ale w każdym razie:
IMHO najprostszym sposobem instalowania modułów CPAN (na systemach uniksowych i nie mam pojęcia o cudach) jest:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Powyższe dotyczy instalacji „instalatora modułów CPAN o zerowej konfiguracji” cpanm
. (Instalacja może potrwać kilka minut - nie przerywaj procesu)
a po - po prostu:
cpanm Foo
cpanm Module::One
cpanm Another::Module
Wiele rekomendacji dla CPAN.pm
, co jest świetne, ale jeśli używasz, Perl 5.10
masz również dostęp do, CPANPLUS.pm
który jest jak, CPAN.pm
ale lepszy.
I oczywiście jest dostępny CPAN
dla osób, które nadal używają starszych wersji Perla. Dlaczego nie spróbować:
$ cpan CPANPLUS
Wiele razy zdarza się, że polecenie instalacji cpan kończy się niepowodzeniem i pojawia się komunikat „make test zwrócił zły status, nie można zainstalować bez użycia siły”
W takim przypadku sposób instalacji modułu to:
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
Na Ubuntu większość modułów Perla jest już spakowanych, więc instalacja jest znacznie szybsza niż w większości innych systemów, które muszą się kompilować.
Aby zainstalować Foo::Bar
na przykład po poleceniu polecenia, zwykle wystarczy:
sudo apt-get install libfoo-bar-perl
Niestety nie wszystkie moduły są zgodne z tą konwencją nazewnictwa.
Użyj polecenia cpan jako cpan Modulename
$ cpan HTML::Parser
Aby zainstalować zależności automatycznie, wykonaj poniższe czynności
$ perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
exit
Wolę App :: cpanminus , automatycznie instaluje zależności. Po prostu zrób
$ cpanm HTML::Parser
2 sposoby, które znam:
KORZYSTANIE Z PPM:
Z Windows (ActivePerl) korzystałem z ppm
z linii poleceń wpisz ppm. Po wyświetleniu monitu 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'
dostaniesz monit
cpan>
na monit ...
cpan> install foo (again to install the foo module)
wpisz h, aby uzyskać listę poleceń dla cpan
W Fedorze możesz użyć
# yum install foo
tak długo, jak Fedora ma istniejący pakiet dla modułu.
Na Fedora Linux
lub Enterprise Linux
, yum
również utworów perl zależności bibliotecznych. 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 perlowo-czekoladowo-belgijski, a nawet pakiet ChocolateFactory)
Jeśli chcesz umieścić nowy moduł w niestandardowej lokalizacji, w której nie ma skonfigurowanej powłoki 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
Czasami możesz użyć yum search foo
do przeszukania względnego modułu perla, a następnie użyć yum install xxx
do instalacji.
Bezpieczne rozwiązanie
Wiele odpowiedzi wspomina o użyciu cpan
narzędzia (które używa CPAN.pm
) bez słowa na temat bezpieczeństwa. Domyślnie CPAN
konfiguruje się 2.27 i wcześniejsze wersjeurllist
użycie adresu URL http (mianowicie http://www.cpan.org/ ), który pozwala na ataki MITM, a zatem jest niepewny. Jest to wykorzystywane do pobierania CHECKSUMS
plików, dlatego należy zmienić go na bezpieczny adres URL (np. Https://www.cpan.org/ ).
Po uruchomieniu cpan i zaakceptowaniu domyślnej konfiguracji należy zmodyfikować wygenerowany MyConfig.pm
plik (wyświetlana jest pełna ścieżka) w następujący sposób. Zastąpić
'urllist' => [q[http://www.cpan.org/]],
przez
'urllist' => [q[https://www.cpan.org/]],
Uwaga: https nie jest wystarczający; potrzebujesz także strony internetowej, której możesz zaufać. Bądź więc ostrożny, jeśli chcesz wybrać dowolne lustro.
Następnie możesz użyć cpan
w zwykły sposób.
Mój raport o błędach na rt.cpan.org dotyczący niepewnego adresu URL.
https://www.cpan.org/
).
Po prostu wykonanie cpan Foo::Bar
na powłoce służyłoby temu celowi.
Wygląda na to, że masz już swoją odpowiedź, ale pomyślałem, że wślizgnę się. To właśnie 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";
}
}
Działa to dla mnie dobrze, może jest tu coś, czego możesz użyć.