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.?
cpan
.
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.?
cpan
.
Câu trả lời:
Trên Unix :
thông thường bạn bắt đầu cpan trong vỏ 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 thế 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 gỡ bỏ . Đ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ụ hay 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.
ppm
sử dụng dấu gạch nối -
vì bạn chỉ định phân phối mà bạn muốn cài đặt, điều này trung thực hơn rất nhiều. Ví dụ, nếu bạn sử dụng cpan
để cài đặt LWP
, LWP::Simple
hoặc LWP::UserAgent
nó sẽ cài đặt bản phân phối libwww-perl
cho bạn. Phần lớn các bản phân phối chứa một mô-đun duy nhất có tên tương đương, nhưng có một số trường hợp ngoại lệ như thế
Dùng 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. Thủ tục 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.
cpan
để cài đặt App::cpanminus
là một chút kỳ lạ. Các hướng dẫn cài đặt thông thường liên quan đến thủ tục bootstrapping tải xuống một phần của nó từ cpanmin.us và sử dụng phần đó để cài đặt phần còn lại. Điều này tránh cấu hình cpan
và tạo ra một .cpan
thư mục vô dụng (sau đó) .
cpanminus
từ thiết bị đầu cuối. Tôi thấy cpanm
tốt hơn cpan
vì nó không đặt nhật ký lỗi trên màn hình thay vì lưu trữ chúng trong các tệp nhật ký tạm thời và đưa ra đường dẫn trong trường hợp có lỗi.
Tôi lưu ý một số người đề nghị một cpan chạy theo 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 vỏ CPAN 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ì điều đó có nghĩa là các bài kiểm tra không chạy bằng root.
Nếu bạn có vỏ CPAN cũ, chỉ cần cài đặt cpan mới ("cài đặt CPAN") và khi bạn tải lại vỏ, 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 sử dụng hệ thống có CPAN cũ, điều đầu tiên tôi làm là cập nhật trình bao 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 điều tra dâu tây Perl . Đây là phiên bản của Perl đi kèm với vỏ CPAN đượ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.
install CPAN
từ đâu? $sudo apt-get install cpan
?
App::cpanminus
, đó là một niềm vui để sử dụng nó. Philip Potter gợi ý nó trong câu trả lời của anh ấy ở đây và bạn có thể thử Chas này. Owens trả lời .
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 tìm kiếm perl Geo :: ipfree libgeo-ipfree-perl - Một quốc gia tìm địa chỉ IP mô-đun Perl $ sudo apt-get 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à bắt đầu một trình bao. 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.
Cũng xem 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 đã đưa ra một đề nghị 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ố :: Random :: Module, 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 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 khuyến nghị cho CPAN.pm
, điều này 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
đó CPAN.pm
nhưng tốt hơn.
Và, tất nhiên, nó có sẵn CPAN
cho những người vẫn 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 cpan install thất bại với thông báo như "make test đã trả về 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 commANGE chẳng hạn, thông thường bạn chỉ cần 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.
Sử dụng lệnh cpan như 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
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 dấu nhắc ppm ...
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 ( hệ thống * nix ):
perl -MCPAN -e 'shell'
giúp bạn nhanh chóng
cpan>
tại dấu 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 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.
Trên Fedora Linux
hoặc Enterprise Linux
, yum
cũng theo dõi 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)
Nếu bạn muốn đặt mô-đun mới vào một vị trí tùy chỉnh mà vỏ cpan của bạn không được 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.
Giải pháp an toàn
Nhiều câu trả lời đề cập đến việc sử dụng cpan
tiện ích (sử dụng CPAN.pm
) mà không có một từ nào về bảo mật. Theo mặc định, CPAN
2.27 và các cấu hình trước đó urllist
để sử dụng URL http (cụ thể là http://www.cpan.org/ ), cho phép các cuộc tấn công MITM, do đó không an toàn. Đây là những gì được sử dụng để tải xuống các CHECKSUMS
tệp, do đó, nó cần được thay đổi thành một URL an toàn (ví dụ: https://www.cpan.org/ ).
Vì vậy, sau khi chạy cpan và chấp nhận cấu hình mặc định, bạn cần sửa đổi MyConfig.pm
tệp được tạo (đường dẫn đầy đủ là đầu ra) theo cách sau. Thay thế
'urllist' => [q[http://www.cpan.org/]],
bởi
'urllist' => [q[https://www.cpan.org/]],
Lưu ý: https là không đủ; bạn cũng cần một trang web mà bạn có thể tin tưởng. Vì vậy, hãy cẩn thận nếu bạn muốn chọn một số gương tùy ý.
Sau đó, bạn có thể sử dụng cpan
theo cách thông thường.
Báo cáo lỗi của tôi trên rt.cpan.org về URL không an toàn.
https://www.cpan.org/
).
Đơn giản chỉ cần thực hiện cpan Foo::Bar
trên shell sẽ phục vụ mục đích.
Có vẻ như bạn đã có câu trả lời của mình nhưng tôi đoán 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($@){
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.