Saya mendapatkan kesalahan ini:
Can't locate Foo.pm in @INC
Apakah ada cara yang lebih mudah untuk menginstalnya daripada mengunduh, menghapus, membuat, dll?
cpan
.
Saya mendapatkan kesalahan ini:
Can't locate Foo.pm in @INC
Apakah ada cara yang lebih mudah untuk menginstalnya daripada mengunduh, menghapus, membuat, dll?
cpan
.
Jawaban:
Di Unix :
biasanya Anda memulai cpan di shell Anda:
# cpan
dan ketik
install Chocolate::Belgian
atau dalam bentuk singkat:
cpan Chocolate::Belgian
Di Windows :
Jika Anda menggunakan ActivePerl pada Windows, PPM (Perl Package Manager) memiliki banyak fungsi yang sama dengan CPAN.pm.
Contoh:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
lihat Bagaimana cara menginstal modul Perl? di FAQ CPAN
Banyak distribusi mengirimkan banyak modul perl sebagai paket.
apt-cache search 'perl$'
pacman -Ss '^perl-'
dev-perl
Anda harus selalu memilih mereka karena Anda mendapat manfaat dari pembaruan otomatis (keamanan) dan kemudahan penghapusan . Ini bisa sangat rumit dengan alat cpan itu sendiri.
Untuk Gentoo ada alat yang bagus bernama g-cpan yang membangun / menginstal modul dari CPAN dan membuat paket Gentoo ( ebuild ) untuk Anda.
ppm
menggunakan tanda hubung -
karena Anda menentukan distribusi yang ingin Anda instal, yang jauh lebih jujur. Misalnya, jika Anda menggunakan cpan
untuk menginstal LWP
, LWP::Simple
atau LWP::UserAgent
itu akan menginstal distribusi libwww-perl
untuk Anda. Mayoritas distribusi berisi modul tunggal dengan nama yang setara, tetapi ada beberapa pengecualian seperti itu
Coba Aplikasi :: cpanminus :
# cpanm Chocolate::Belgian
Ini bagus untuk menginstal barang. Ini tidak menyediakan fungsi CPAN atau CPANPLUS yang lebih kompleks, sehingga mudah digunakan, asalkan Anda tahu modul mana yang ingin Anda instal. Jika Anda belum memiliki cpanminus, cukup ketik:
# cpan App::cpanminus
untuk menginstalnya.
Dimungkinkan juga untuk menginstalnya tanpa menggunakan cpan sama sekali. Prosedur bootstrap dasar adalah,
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Untuk informasi lebih lanjut, buka halaman App :: cpanminus dan lihat bagian instalasi.
cpan
untuk menginstal App::cpanminus
agak aneh. Instruksi instalasi normal melibatkan prosedur bootstrap untuk mengunduh sebagian dari itu dari cpanmin.us dan menggunakannya untuk menginstal sisanya. Ini menghindari konfigurasi cpan
dan pembuatan .cpan
direktori tidak berguna (sesudahnya) .
cpanminus
dari terminal. Saya menemukan cpanm
lebih baik daripada cpan
karena itu tidak menempatkan log kesalahan di layar daripada menyimpannya dalam file log sementara dan memberikan jalan jika terjadi kesalahan.
Saya perhatikan beberapa orang menyarankan satu run cpan di bawah sudo. Dulu itu perlu untuk menginstal ke direktori sistem, tetapi versi modern dari shell CPAN memungkinkan Anda untuk mengonfigurasinya untuk menggunakan sudo hanya untuk menginstal. Ini jauh lebih aman, karena itu berarti tes tidak berjalan sebagai root.
Jika Anda memiliki shell CPAN lama, cukup instal cpan baru ("install CPAN") dan ketika Anda memuat shell, itu akan meminta Anda untuk mengkonfigurasi arahan baru ini.
Saat ini, ketika saya menggunakan sistem dengan CPAN lama, hal pertama yang saya lakukan adalah memperbarui shell dan mengaturnya untuk melakukan ini sehingga saya dapat melakukan sebagian besar pekerjaan cpan saya sebagai pengguna normal.
Juga, saya sangat menyarankan agar pengguna Windows menyelidiki strawberry Perl . Ini adalah versi Perl yang dikemas dengan shell CPAN yang sudah dikonfigurasi sebelumnya serta kompiler. Ini juga mencakup beberapa modul Perl yang sulit dikompilasi dengan dependensi pustaka C eksternal mereka, terutama XML :: Parser. Ini berarti Anda dapat melakukan hal yang sama seperti setiap pengguna Perl lainnya dalam hal menginstal modul, dan banyak hal cenderung "hanya bekerja" lebih sering.
install CPAN
dari mana? $sudo apt-get install cpan
?
App::cpanminus
, itu adalah sukacita untuk menggunakannya. Philip Potter menyarankannya dalam jawabannya di sini dan Anda dapat mencoba Chas ini. Owens menjawab .
Jika Anda menggunakan Ubuntu dan Anda ingin menginstal modul perl pra-paket (misalnya, geo :: ipfree) coba ini:
$ apt-cache search perl geo :: ipfree libgeo-ipfree-perl - Sebuah negara yang mencari modul Perl alamat ip $ sudo apt-get install libgeo-ipfree-perl
Beberapa orang menyebutkan utilitas cpan, tetapi lebih dari sekadar memulai sebuah shell. Berikan saja modul yang ingin Anda instal dan biarkan berfungsi.
$prompt> cpan Foo::Bar
Jika Anda tidak memberikan argumen apa pun, ia akan memulai shell CPAN.pm. Ini berfungsi pada Unix, Mac, dan seharusnya baik-baik saja di Windows (terutama Strawberry Perl).
Ada beberapa hal lain yang dapat Anda lakukan dengan alat cpan juga. Berikut ringkasan dari fitur saat ini (yang mungkin lebih baru dari yang ada pada CPAN.pm dan 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.
Lihat juga Ya, bahkan Anda dapat menggunakan CPAN . Ini menunjukkan bagaimana Anda dapat menggunakan CPAN tanpa memiliki akses root atau sudo.
Otto membuat saran yang bagus . Ini bekerja untuk Debian juga, serta turunan Debian lainnya. Bagian yang hilang adalah apa yang harus dilakukan ketika pencarian apt-cache tidak menemukan sesuatu.
$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update
Maka setiap kali Anda memiliki modul acak yang ingin Anda instal:
$ cd ~/some/path
$ dh-make-perl --build --cpan Some::Random::Module
$ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb
Ini akan memberi Anda paket deb yang dapat Anda instal untuk mendapatkan Some :: Random :: Module. Salah satu manfaat besar di sini adalah halaman manual dan skrip sampel selain modul itu sendiri akan ditempatkan di lokasi pilihan distro Anda. Jika distro pernah keluar dengan paket resmi untuk versi Some :: Random :: Module yang lebih baru, itu akan diinstal secara otomatis ketika Anda ingin mendapatkan peningkatan.
Sudah dijawab dan diterima jawaban - tetapi tetap:
IMHO cara termudah memasang modul CPAN (pada sistem seperti unix, dan tidak tahu tentang keajaiban) adalah:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Di atas adalah menginstal "installer nol modul konfigurasi CPAN" yang disebut cpanm
. (Butuh beberapa menit untuk menginstal - jangan hancurkan prosesnya)
dan setelah - cukup:
cpanm Foo
cpanm Module::One
cpanm Another::Module
Banyak rekomendasi untuk CPAN.pm
, yang sangat bagus, tetapi jika Anda menggunakan Perl 5.10
maka Anda juga punya akses CPANPLUS.pm
yang CPAN.pm
lebih baik.
Dan, tentu saja, ini tersedia CPAN
untuk orang yang masih menggunakan versi Perl yang lebih lama. Kenapa tidak mencoba:
$ cpan CPANPLUS
Sering kali itu terjadi bahwa perintah install cpan gagal dengan pesan seperti "make test telah mengembalikan status buruk, tidak akan menginstal tanpa paksa"
Dalam hal ini, berikut adalah cara untuk menginstal modul:
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
Di ubuntu, sebagian besar modul perl sudah dipaket, jadi pemasangannya jauh lebih cepat daripada kebanyakan sistem lain yang harus dikompilasi.
Untuk menginstal Foo::Bar
di prompt perintah misalnya biasanya Anda hanya perlu:
sudo apt-get install libfoo-bar-perl
Sayangnya tidak semua modul mengikuti konvensi penamaan itu.
Gunakan perintah cpan sebagai cpan Modulename
$ cpan HTML::Parser
Untuk menginstal dependensi secara otomatis ikuti yang berikut ini
$ perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
exit
Saya lebih suka App :: cpanminus , ia menginstal dependensi secara otomatis. Kerjakan saja
$ cpanm HTML::Parser
2 cara yang saya tahu:
MENGGUNAKAN PPM:
Dengan Windows (ActivePerl) saya telah menggunakan ppm
dari baris perintah ketik ppm. Pada prompt ppm ...
ppm> install foo
atau
ppm> search foo
untuk mendapatkan daftar modul foo yang tersedia. Ketik bantuan untuk semua perintah
MENGGUNAKAN CPAN:
Anda juga dapat menggunakan CPAN seperti ini ( * sistem nix ):
perl -MCPAN -e 'shell'
memberi Anda prompt
cpan>
pada prompt ...
cpan> install foo (again to install the foo module)
ketik h untuk mendapatkan daftar perintah untuk cpan
Di Fedora Anda dapat menggunakan
# yum install foo
selama Fedora memiliki paket yang ada untuk modul.
Pada Fedora Linux
atau Enterprise Linux
, yum
juga melacak dependensi perl library. Jadi, jika modul perl tersedia, dan beberapa paket rpm mengekspor ketergantungan itu, ia akan menginstal paket yang tepat untuk Anda.
yum install 'perl(Chocolate::Belgian)'
(kemungkinan besar paket perl-Chocolate-Belgia, atau bahkan paket ChocolateFactory)
Jika Anda ingin meletakkan modul baru ke lokasi kustom yang shell cpan Anda tidak dikonfigurasi untuk digunakan, maka mungkin, yang berikut ini akan berguna.
#wget <URL to the module.tgz>
##unpack
perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install
Kadang-kadang Anda dapat menggunakan yum search foo
untuk mencari modul perl relatif, lalu gunakan yum install xxx
untuk menginstal.
Solusi aman
Banyak jawaban menyebutkan penggunaan cpan
utilitas (yang menggunakan CPAN.pm
) tanpa kata keamanan. Secara default, CPAN
2.27 dan sebelumnya mengonfigurasi urllist
untuk menggunakan URL http (yaitu, http://www.cpan.org/ ), yang memungkinkan serangan MITM, dengan demikian tidak aman. Ini adalah apa yang digunakan untuk mengunduh CHECKSUMS
file, sehingga perlu diubah ke URL yang aman (mis. Https://www.cpan.org/ ).
Jadi, setelah menjalankan cpan dan menerima konfigurasi default, Anda perlu memodifikasi MyConfig.pm
file yang dihasilkan (path lengkap adalah output) dengan cara berikut. Menggantikan
'urllist' => [q[http://www.cpan.org/]],
oleh
'urllist' => [q[https://www.cpan.org/]],
Catatan: https tidak cukup; Anda juga membutuhkan situs web yang bisa Anda percayai. Jadi, berhati-hatilah jika Anda ingin memilih cermin sewenang-wenang.
Maka Anda bisa menggunakannya cpan
dengan cara biasa.
Laporan bug saya di rt.cpan.org tentang URL tidak aman.
https://www.cpan.org/
).
Cukup mengeksekusi cpan Foo::Bar
di shell akan melayani tujuan.
Sepertinya Anda sudah mendapatkan jawaban Anda, tetapi saya pikir saya akan berpadu. Inilah yang saya lakukan di beberapa skrip di Ubuntu (atau server 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";
}
}
Ini berfungsi baik untuk saya, mungkin ada sesuatu di sini yang dapat Anda gunakan.