web-development-kb-asia.site

Cách dễ nhất để cài đặt một mô-đun Perl bị thiếu là gì?

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.?

170
dreeves

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.

  • Debian/Ubuntu: apt-cache search 'Perl$'
  • Arch Linux: pacman -Ss '^Perl-'
  • Gentoo: danh mục 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.

208
Benedikt Waldvogel

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.

61
Philip Potter

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.

29
Dave Rolsky

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 [.__.]
24
Otto

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.
15
brian d foy

Sudo Perl -MCPAN -e 'install Foo'

11
dreeves

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.

10
Corion

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.

8
mikegrb

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

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
6
Dave Cross

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

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.

4
Myforwik

Ngay cả nó cũng hoạt động:

cpan -i module_name
4
Mandar Pande

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
4
Chankey Pathak

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

3
Mister X

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

3
JWHEAT

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)

3
Michal Ingeli

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.

3
Bruce Alderman

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

Đô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.

2
Chris Forever

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.

1
Ed Dunn

Trên Windows với bản phân phối ActiveState của Perl, hãy sử dụng lệnh ppm .

1
PW.

Chỉ cần thực hiện cpan Foo::Bar trên Shell sẽ phục vụ mục đích.

1
Kamal Nayan