2009-02-12 11 views
56

Tôi đang sử dụng máy Linux được lưu trữ nên tôi không có quyền viết vào thư mục /usr/lib.Làm cách nào để cài đặt mô-đun CPAN vào một thư mục cục bộ?

Khi tôi cố gắng để cài đặt một module CPAN bằng cách làm như thường lệ:

perl Makefile.PL 
make test 
make install 

Đó mô-đun được chiết xuất vào một thư mục blib/lib/. Tôi đã giữ use blib/lib/ModuleName nhưng trình biên dịch vẫn cho biết mô-đun không thể là được tìm thấy. Tôi đã thử sao chép tệp .pm vào thư mục cục bộ và giữ require ModuleName nhưng nó vẫn cho tôi một số lỗi.

Làm cách nào để cài đặt mô-đun vào một số thư mục khác và sử dụng?

+1

Nói chung, bạn nên cung cấp các thông báo lỗi. "Một số lỗi" không giúp được gì nhiều. – jrockway

+5

có thể trùng lặp của [Làm thế nào tôi có thể sử dụng một mô-đun Perl mới mà không cần cài đặt quyền?] (Http://stackoverflow.com/questions/251705/how-can-i-use-a-new-perl-module-without-install -permissions) – daxim

+0

QUAN TRỌNG .. một số mô-đun sử dụng Build.PL thay vì Makefile.PL (hoặc bọc nó với một hoặc khác), trong một số trường hợp, (như khi chạy thử nghiệm), cài đặt từ/đến một đường dẫn có dấu cách nó sẽ gây nhầm lẫn cho MANIFEST và làm cho (các) thử nghiệm thất bại, thường điều này chỉ xảy ra khi RELEASE_TESTING được đặt, vì vậy hãy đảm bảo rằng nó không có trên máy của bạn. Nếu có lỗi MANIFEST như thế này thì có thể có những người khác ẩn nấp, gắn bó với các đường dẫn không có khoảng trắng (khoảng trống, tab, unispace, v.v.) – osirisgothra

Trả lời

32

Tôi đã có một vấn đề tương tự, nơi tôi có thể thậm chí không cài đặt tại địa phương :: lib

Tôi tạo ra một trình cài đặt cài đặt các module ở đâu đó liên quan đến các file .pl

Các cài đặt đi như thế:

perl Makefile.PL PREFIX=./modulos 
make 
make install 

Sau đó, trong file .pl mà đòi hỏi các mô-đun, mà là ở ./

use lib qw(./modulos/share/perl/5.8.8/); # You may need to change this path 
use module::name; 

Phần còn lại của các tệp (makefile.pl, module.pm, v.v.) không yêu cầu thay đổi.

Bạn có thể gọi file .pl chỉ với

câu trả lời
perl file.pl 
+13

Không có lý do nào để sửa đổi PERL5LIB tập lệnh của bạn thay vì bằng cách sử dụng 'sử dụng lib'. local :: lib thực hiện việc này cho bạn - làm theo hướng dẫn của nó và bạn sẽ ổn thôi. – jrockway

+9

sử dụng INSTALL_BASE thay vì PREFIX. –

+0

perl Makefile.PL INSTALL_BASE =/home/irraju/PadWalker đã cho tôi lỗi này "'INSTALL_BASE' không phải là tên tham số MakeMaker đã biết." Ngay cả tùy chọn PREFIX đã cho tôi cùng một – Ram

19

local::lib sẽ giúp bạn. Nó sẽ thuyết phục "cài đặt" (và "Xây dựng cài đặt") để cài đặt vào một thư mục bạn có thể viết thư, và nó sẽ cho biết perl cách nhận các mô-đun đó.

Nói chung, nếu bạn muốn sử dụng mô-đun nằm trong thư mục blib /, bạn muốn nói perl -Mblib ... trong đó ... là cách bạn thường gọi tập lệnh của mình.

+0

Tôi ** thực sự ** khuyên bạn sử dụng local :: lib. Nó sẽ chăm sóc tất cả các chi tiết nhỏ. – melo

+0

Thật không may là nó không vượt qua 'làm thử nghiệm' khi tôi cố gắng cài đặt nó. – reinierpost

59

khác đã có trên Stackoverflow:

Từ perlfaq8:

0.123.


How do I keep my own module/library directory?

Khi bạn xây dựng mô-đun, nói Perl nơi để cài đặt các mô-đun.

Đối với các bản phân phối Makefile.PL-based, sử dụng tùy chọn INSTALL_BASE khi tạo Makefiles:

perl Makefile.PL INSTALL_BASE=/mydir/perl 

Bạn có thể thiết lập này trong cấu hình CPAN.pm của bạn để tự động cài đặt module trong thư mục thư viện riêng của bạn khi bạn sử dụng CPAN.pm shell:

% cpan 
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl 
cpan> o conf commit 

Đối với các bản phân phối Build.PL-based, sử dụng tùy chọn --install_base:

perl Build.PL --install_base /mydir/perl 

Bạn có thể cấu hình CPAN.pm để tự động sử dụng tùy chọn này quá:

% cpan 
cpan> o conf mbuildpl_arg '--install_base /mydir/perl' 
cpan> o conf commit 
+1

Tôi nghĩ bạn nên thêm dấu ngoặc kép: 'o conf mbuild_arg '--install_base/mydir/perl'' – Amro

+4

Tôi nghĩ rằng những người tìm thấy vấn đề nên chỉnh sửa bài đăng. :) –

+0

Brian, một câu hỏi - liên kết bạn đã cung cấp cho biết rằng tham số '--install_base' được chuyển đến' perl Build.PL'; nhưng 'mbuild_arg' là về các đối số cho'./Build'. Có lẽ bạn có nghĩa là 'mbuildpl_arg'? Hoặc có lỗi trong perlfaq? – skaurus

3

Tôi khuyên bạn nên Perlbrew. Nó cho phép bạn chạy nhiều phiên bản của Perl, cài đặt gói, hack Perl internals nếu bạn muốn, tất cả các quyền người dùng thông thường.

+0

Liên kết có bị chết không? – ceving

2

Đối với các bản phân phối Makefile.PL-based, sử dụng tùy chọn INSTALL_BASE khi tạo Makefiles:

perl Makefile.PL INSTALL_BASE=/mydir/perl