Tôi nhận được lỗi này:
Can't locate Foo.pm in @INC
Có cách nào dễ dàng hơn để cài đặt nó hơn là tải xuống, gỡ bỏ, tạo, v.v.?
Trên Unix :
thông thường bạn bắt đầu cpan trong Shell của bạn:
# cpan
và gõ
install Chocolate::Belgian
hoặc ở dạng ngắn:
cpan Chocolate::Belgian
Trên Windows :
Nếu bạn đang sử dụng ActivePerl trên Windows, PPM (Trình quản lý gói Perl) có nhiều chức năng tương tự như CPAN.pm.
Thí dụ:
# ppm
[.__.] ppm> search net-smtp
[.__.] ppm> install Net-SMTP-Multipart
xem Làm cách nào để tôi cài đặt các mô-đun Perl? trong Câu hỏi thường gặp về CPAN
Nhiều bản phân phối gửi rất nhiều mô-đun Perl dưới dạng gói.
apt-cache search 'Perl$'
pacman -Ss '^Perl-'
dev-Perl
Bạn nên luôn luôn thích chúng vì bạn được hưởng lợi từ các cập nhật tự động (bảo mật) và dễ dàng xóa . Điều này có thể khá khó khăn với chính công cụ cpan .
Đối với Gentoo có một công cụ Nice được gọi là g-cpan để xây dựng/cài đặt mô-đun từ CPAN và tạo gói Gentoo (- ebuild ) cho bạn.
Hãy thử Ứng dụng :: cpanminus :
# cpanm Chocolate::Belgian
Thật tuyệt khi chỉ cần cài đặt công cụ. Nó không cung cấp chức năng phức tạp nào của CPAN hoặc CPANPLUS, vì vậy nó rất dễ sử dụng, miễn là bạn biết mô-đun nào bạn muốn cài đặt. Nếu bạn chưa có cpanminus, chỉ cần gõ:
# cpan App::cpanminus
để cài đặt nó.
Cũng có thể cài đặt nó mà không cần sử dụng cpan. Quy trình bootstrap cơ bản là,
curl -L http://cpanmin.us | Perl - --Sudo App::cpanminus
Để biết thêm thông tin, hãy truy cập trang App :: cpanminus và xem phần cài đặt.
Tôi lưu ý một số người đề nghị một cpan chạy dưới Sudo. Điều đó từng là cần thiết để cài đặt vào thư mục hệ thống, nhưng các phiên bản hiện đại của CPAN Shell cho phép bạn định cấu hình nó để sử dụng Sudo chỉ để để cài đặt. Điều này an toàn hơn nhiều, vì nó có nghĩa là các bài kiểm tra không chạy bằng root.
Nếu bạn có CPAN Shell cũ, chỉ cần cài đặt cpan mới ("cài đặt CPAN") và khi bạn tải lại Shell, nó sẽ nhắc bạn định cấu hình các chỉ thị mới này.
Ngày nay, khi tôi ở trên một hệ thống có CPAN cũ, điều đầu tiên tôi làm là cập nhật Shell và thiết lập nó để làm điều này để tôi có thể thực hiện hầu hết công việc cpan của mình như một người dùng bình thường.
Ngoài ra, tôi thực sự khuyên bạn nên điều tra người dùng Windows dâu Perl . Đây là phiên bản của Perl đi kèm với CPAN Shell được cấu hình sẵn cũng như trình biên dịch. Nó cũng bao gồm một số mô-đun Perl khó biên dịch với các phụ thuộc thư viện C bên ngoài của chúng, đáng chú ý là XML :: Parser. Điều này có nghĩa là bạn có thể làm điều tương tự như mọi người dùng Perl khác khi cài đặt các mô-đun và mọi thứ có xu hướng "chỉ hoạt động" thường xuyên hơn rất nhiều.
Nếu bạn đang sử dụng Ubuntu và bạn muốn cài đặt mô-đun Perl được đóng gói sẵn (ví dụ: Geo :: ipfree), hãy thử điều này:
[.__.] $ apt-cache search Perl Geo :: ipfree [.__ cài đặt libgeo-ipfree-Perl [.__.]
Một vài người đã đề cập đến tiện ích cpan, nhưng nó không chỉ là khởi động Shell. Chỉ cần cung cấp cho nó các mô-đun mà bạn muốn cài đặt và để nó hoạt động.
$Prompt> cpan Foo::Bar
Nếu bạn không cung cấp cho nó bất kỳ đối số nào, nó sẽ khởi động Shell CPAN.pm. Điều này hoạt động trên Unix, Mac và sẽ tốt trên Windows (đặc biệt là Strawberry Perl).
Có một số điều khác mà bạn có thể làm với công cụ cpan. Dưới đây là tóm tắt về các tính năng hiện tại (có thể mới hơn các tính năng đi kèm với CPAN.pm và 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.
Sudo Perl -MCPAN -e 'install Foo'
Xem thêm Có, thậm chí bạn có thể sử dụng CPAN . Nó cho thấy cách bạn có thể sử dụng CPAN mà không cần truy cập root hoặc Sudo.
Otto đã thực hiện một gợi ý tốt . Điều này cũng hoạt động với Debian, cũng như mọi dẫn xuất Debian khác. Phần còn thiếu là phải làm gì khi tìm kiếm apt-cache không tìm thấy thứ gì đó.
$ Sudo apt-get install dh-make-Perl build-essential apt-file
$ Sudo apt-file update
Sau đó, bất cứ khi nào bạn có một mô-đun ngẫu nhiên bạn muốn cài đặt:
$ cd ~/some/path
$ dh-make-Perl --build --cpan Some::Random::Module
$ Sudo dpkg -i libsome-random-module-Perl-0.01-1_i386.deb
Điều này sẽ cung cấp cho bạn một gói gỡ lỗi mà bạn có thể cài đặt để nhận một số :: Random :: Module. Một trong những lợi ích lớn ở đây là các trang man và tập lệnh mẫu ngoài chính mô-đun sẽ được đặt ở vị trí lựa chọn của nhà phân phối của bạn. Nếu bản phân phối đi kèm với gói chính thức cho phiên bản mới hơn của Một số :: Ngẫu nhiên :: Mô-đun, nó sẽ tự động được cài đặt khi bạn nâng cấp apt-get.
Đã trả lời và chấp nhận câu trả lời - nhưng dù sao:
IMHO cách dễ nhất để cài đặt các mô-đun CPAN (trên unix như các hệ thống và không biết gì về các kỳ quan) là:
curl -L http://cpanmin.us | Perl - --Sudo App::cpanminus
Ở trên là cài đặt "trình cài đặt mô-đun CPAN cấu hình không" được gọi là cpanm
. (Có thể mất vài phút để cài đặt - không phá vỡ quy trình)
và sau - đơn giản là:
cpanm Foo
cpanm Module::One
cpanm Another::Module
Rất nhiều đề xuất cho CPAN.pm
, thật tuyệt, nhưng nếu bạn đang sử dụng Perl 5.10
thì bạn cũng có quyền truy cập vào CPANPLUS.pm
giống như CPAN.pm
nhưng tốt hơn.
Và, tất nhiên, nó có sẵn trên CPAN
cho những người vẫn đang sử dụng các phiên bản cũ hơn của Perl. Sao không thử nhỉ:
$ cpan CPANPLUS
Nhiều lần xảy ra lệnh cài đặt cpan không thành công với thông báo như "thực hiện kiểm tra đã trả lại trạng thái xấu, sẽ không cài đặt mà không bắt buộc"
Trong trường hợp đó, đây là cách để cài đặt mô-đun:
Perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
Trên Ubuntu, hầu hết các mô-đun Perl đã được đóng gói, vì vậy việc cài đặt nhanh hơn nhiều so với hầu hết các hệ thống khác phải biên dịch.
Để cài đặt Foo::Bar
tại một dấu nhắc nhở, ví dụ như bạn thường làm:
Sudo apt-get install libfoo-bar-Perl
Đáng buồn thay, không phải tất cả các mô-đun tuân theo quy ước đặt tên.
Ngay cả nó cũng hoạt động:
cpan -i module_name
Sử dụng lệnh cpan là cpan Modulename
$ cpan HTML::Parser
Để cài đặt phụ thuộc tự động làm theo dưới đây
$ Perl -MCPAN -e Shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
exit
Tôi thích App :: cpanminus , nó tự động cài đặt các phụ thuộc. Cứ làm đi
$ cpanm HTML::Parser
Cách dễ nhất đối với tôi là thế này:
Perl_MM_USE_DEFAULT=1 Perl -MCPAN -e 'install DateTime::TimeZone'
a) tự động phát hiện/giải quyết/cài đặt phụ thuộc đệ quy
b) đó là một trình điều khiển Shell, tốt cho các tập lệnh thiết lập
2 cách mà tôi biết:
SỬ DỤNG PPM :
Với Windows (ActivePerl) Tôi đã sử dụng ppm
từ dòng lệnh ppm. Tại ppm Nhắc ...
ppm> install foo
hoặc là
ppm> search foo
để có được một danh sách các mô-đun foo có sẵn. Nhập trợ giúp cho tất cả các lệnh
SỬ DỤNG CPAN :
bạn cũng có thể sử dụng CPAN như thế này (* nix system):
Perl -MCPAN -e 'Shell'
giúp bạn một lời nhắc
cpan>
tại Nhắc ...
cpan> install foo (again to install the foo module)
gõ h để có danh sách các lệnh cho cpan
Trên Fedora Linux
hoặc Enterprise Linux
, yum
cũng theo dõi các phụ thuộc thư viện Perl. Vì vậy, nếu mô-đun Perl có sẵn và một số gói vòng/phút xuất phụ thuộc đó, nó sẽ cài đặt gói phù hợp với bạn.
yum install 'Perl(Chocolate::Belgian)'
(rất có thể là gói Perl-Chocolate-Bỉ, hoặc thậm chí là gói ChocolateFactory)
Trên Fedora bạn có thể sử dụng
# yum install foo
miễn là Fedora có một gói hiện có cho mô-đun.
Nếu bạn muốn đặt mô-đun mới vào một vị trí tùy chỉnh mà Shell cpan của bạn không được định cấu hình để sử dụng, thì có lẽ, những điều sau đây sẽ có ích.
#wget <URL to the module.tgz>
##unpack
Perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install
Đôi khi, bạn có thể sử dụng yum search foo
để tìm kiếm mô-đun Perl tương đối, sau đó sử dụng yum install xxx
để cài đặt.
Có vẻ như bạn đã có câu trả lời của mình nhưng tôi đoán rằng tôi đã bấm chuông. Đây là những gì tôi làm trong một số tập lệnh trên Ubuntu (hoặc máy chủ 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";
}
}
Điều này làm việc tốt cho tôi, có thể có một cái gì đó ở đây bạn có thể sử dụng.
Trên Windows với bản phân phối ActiveState của Perl, hãy sử dụng lệnh ppm .
Chỉ cần thực hiện cpan Foo::Bar
trên Shell sẽ phục vụ mục đích.