it-swarm-id.com

Apa cara termudah untuk memasang modul Perl yang hilang?

Saya mendapatkan kesalahan ini:

Can't locate Foo.pm in @INC

Apakah ada cara yang lebih mudah untuk menginstalnya daripada mengunduh, menghapus, membuat, dll?

170
dreeves

Di Unix :

biasanya Anda memulai cpan di Shell Anda:

# cpan

dan ketik

install Chocolate::Belgian

atau dalam bentuk singkat:

cpan Chocolate::Belgian

Pada 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 saya memasang modul Perl? di FAQ CPAN

Banyak distribusi mengirimkan banyak modul Perl sebagai paket.

  • Debian/Ubuntu: apt-cache search 'Perl$'
  • Arch Linux: pacman -Ss '^Perl-'
  • Gentoo: kategori dev-Perl

Anda harus selalu lebih suka 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 membuat/memasang modul dari CPAN dan membuat paket Gentoo (- ebuild ) untuk Anda.

208

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 dasar bootstrap adalah,

curl -L http://cpanmin.us | Perl - --Sudo App::cpanminus

Untuk informasi lebih lanjut, buka halaman App :: cpanminus dan lihat bagian instalasi.

61
Philip Potter

Saya perhatikan beberapa orang menyarankan satu menjalankan cpan di bawah Sudo. Dulu itu perlu untuk menginstal ke direktori sistem, tetapi versi modern Shell CPAN memungkinkan Anda untuk mengonfigurasinya untuk menggunakan Sudo just 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 ulang Shell, ia harus 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 C library 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.

29
Dave Rolsky

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 - A mencari negara modul ip address Perl 
 
 $ Sudo apt-get instal libgeo-ipfree-Perl 
24
Otto

Beberapa orang menyebutkan utilitas cpan, tetapi lebih dari sekadar memulai Shell. Berikan saja modul yang ingin Anda instal dan biarkan berfungsi.

$Prompt> cpan Foo::Bar

Jika Anda tidak memberikan argumen apa pun, ini 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 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.
15
brian d foy

Sudo Perl -MCPAN -e 'install Foo'

11
dreeves

Lihat juga Ya, bahkan Anda dapat menggunakan CPAN . Ini menunjukkan bagaimana Anda dapat menggunakan CPAN tanpa memiliki akses root atau Sudo.

10
Corion

Otto membuat saran bagus . Ini bekerja untuk Debian juga, serta setiap 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.

8
mikegrb

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
7
jm666

Banyak rekomendasi untuk CPAN.pm, yang sangat bagus, tetapi jika Anda menggunakan Perl 5.10 maka Anda juga memiliki akses ke CPANPLUS.pm yang seperti CPAN.pm tetapi lebih baik.

Dan, tentu saja, ini tersedia di CPAN untuk orang yang masih menggunakan versi Perl yang lebih lama. Kenapa tidak mencoba:

$ cpan CPANPLUS
6
Dave Cross

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));"
5
jaxbihani

Di ubuntu, sebagian besar modul Perl sudah dikemas, jadi pemasangannya jauh lebih cepat daripada kebanyakan sistem lain yang harus dikompilasi.

Untuk menginstal Foo::Bar di Prompt commmand misalnya, biasanya Anda hanya melakukan:

Sudo apt-get install libfoo-bar-Perl

Sayangnya tidak semua modul mengikuti konvensi penamaan itu.

4
Myforwik

Bahkan harus bekerja:

cpan -i module_name
4
Mandar Pande

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 , ini menginstal dependensi secara otomatis. Kerjakan saja

$ cpanm HTML::Parser
4
Chankey Pathak

Cara termudah bagi saya adalah ini:

Perl_MM_USE_DEFAULT=1 Perl -MCPAN -e 'install DateTime::TimeZone'

a) deteksi/penyelesaian/pemasangan dependensi rekursif otomatis

b) ini onliner Shell, bagus untuk setup-skrip

3
Mister X

2 cara yang saya tahu:

MENGGUNAKAN PPM:

Dengan Windows (ActivePerl) Saya telah menggunakan ppm

dari baris perintah ketik ppm. Di 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'

membuat Anda Prompt

cpan>

di Prompt ...

cpan> install foo  (again to install the foo module)

ketik h untuk mendapatkan daftar perintah untuk cpan

3
JWHEAT

Pada Fedora Linux atau Enterprise Linux, yum juga melacak dependensi perpustakaan Perl. 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-Belgian, atau bahkan paket ChocolateFactory)

3
Michal Ingeli

Di Fedora Anda dapat menggunakan

# yum install foo

selama Fedora memiliki paket yang ada untuk modul.

3
Bruce Alderman

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
2
venkrao

Kadang-kadang Anda dapat menggunakan yum search foo untuk mencari modul Perl relatif, kemudian menggunakan yum install xxx untuk menginstal.

2
Chris Forever

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([email protected]){
        system("cpanm $x");
        eval "use $x";
    }
}

Ini berfungsi baik untuk saya, mungkin ada sesuatu di sini yang dapat Anda gunakan.

1
Ed Dunn

Pada Windows dengan distribusi Perl ActiveState, gunakan perintah ppm .

1
PW.

Cukup menjalankan cpan Foo::Bar di Shell akan memenuhi tujuannya.

1
Kamal Nayan