2010-06-05 48 views
65

Tôi muốn cài đặt mô-đun perl trên máy chủ dùng chung mà tôi không có quyền truy cập root. Tôi có thể làm cái này như thế nào? Họ cũng dường như có một phiên bản cũ của CPAN (nó phàn nàn về điều đó khi chạy lệnh), có thể cập nhật lệnh CPAN đang được sử dụng từ tài khoản của tôi mà không yêu cầu quyền truy cập root không?Tôi có thể sử dụng CPAN như một người dùng không phải root như thế nào?

+1

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-mô-đun-không-cài-cho-phép) – daxim

Trả lời

117

phương pháp dễ nhất tôi đã tìm thấy cho đến nay là để nói

wget -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib 
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib` 
echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile 
echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile 

này giả định hồ sơ của bạn được đặt tên .profile, bạn có thể cần phải thay đổi điều đó là .bash_profile, .bashrc, vv Sau đó bạn có thể cài đặt các module bằng cách nói

cpanm Module::Name 

và chỉ đơn giản là sử dụng chúng theo cùng một cách nếu bạn đã được cài đặt trong thư mục gốc.


Sau đây là giải thích ngắn gọn về các lệnh trên làm.

wget -O- http://cpanmin.us tìm nạp phiên bản mới nhất của cpanm và in nó thành STDOUT sau đó được chuyển đến perl - -l ~/perl5 App::cpanminus local::lib. Đầu tiên - yêu cầu perl để mong đợi chương trình truy cập vào ngày STDIN, điều này làm cho perl chạy phiên bản cpanm mà chúng tôi vừa tải xuống. perl chuyển phần còn lại của đối số sang cpanm. Đối số -l ~/perl5 cho biết cpanm nơi cài đặt mô-đun Perl và hai đối số khác là hai mô-đun để cài đặt. [App::cpanmins] 1 là gói cài đặt cpanm. local::lib là một mô-đun trợ giúp quản lý các biến môi trường cần thiết để chạy các mô-đun trong thư mục cục bộ.

Sau những mô-đun được cài đặt, chúng tôi chạy

eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib` 

để thiết lập các biến môi trường cần thiết để sử dụng các module địa phương và sau đó

echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile 

để đảm bảo chúng tôi sẽ có thể sử dụng chúng trong thời gian tới chúng tôi đăng nhập.

echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile 

hy vọng sẽ làm cho người đàn ông tìm trang người dùng cho mô-đun địa phương của bạn.

+0

+1 cho cpanminus ... không bao giờ sử dụng nó vì vậy không thể cảm thấy như tôi nên giới thiệu nó, nhưng tôi thích nó từ những gì tôi thấy trên SO cho đến nay – DVK

+6

Điều này đã làm việc tuyệt vời cho tôi. Chỉ cần một lưu ý nhỏ để loại bỏ đầu tiên bất kỳ biến môi trường PERL5LIB hiện có nào đã có trong ~/.profile của bạn (hoặc bất kỳ thứ gì). Nếu không địa phương :: lib sẽ không cài đặt khi chạy lệnh đầu tiên. –

+0

@juannavar Điểm tốt, tôi có xu hướng cài đặt nó trên các máy mới được cài đặt, vì vậy tôi không chạy vào trường hợp đó. –

10

http://web.archive.org/web/20120427144232/http://perl.jonallen.info/writing/articles/install-perl-modules-without-root

http://novosial.org/perl/life-with-cpan/non-root/

Bước chính trong cả hai bộ hướng dẫn liên quan đến local::lib module

AFAIK, CPAN logic được chứa trong Perl module (CPAN.pm) có nghĩa là bạn cũng có thể dễ dàng cài đặt cái mới hơn trong thư mục cục bộ của bạn như bạn làm với bất kỳ mô-đun Perl nào khác.


Ngoài ra, khi bạn cài đặt các module của bạn ở vị trí phi tiêu chuẩn, kiểm tra hai câu hỏi này trên tải các thư viện từ các địa điểm phi tiêu chuẩn (một số thông tin đã có sẵn trong các liên kết ở trên):

How does a Perl program know where to find the file containing Perl module it uses?

How is Perl’s @INC constructed? (aka tất cả các cách để ảnh hưởng đến nơi module Perl đang tìm kiếm là gì?)

+0

Tiết lộ - Tôi là tác giả của cả hai câu hỏi SO được liên kết trong câu trả lời này. – DVK

+2

Có ít nhất bốn cách khác nhau để cài đặt mô-đun từ CPAN: bằng tay, mô-đun CPAN (và dòng lệnh tương đương 'cpan'), mô-đun' CPANPLUS' (và dòng lệnh tương đương 'cpanp') và Ứng dụng mới: : phân phối cpanminus cài đặt 'cpanm'. Trong số này, tôi thấy 'cpanm' là dễ nhất để cài đặt và sử dụng. 'cpan' và' cpanp' được cài đặt theo mặc định, nhưng yêu cầu thiết lập quan trọng để hoạt động chính xác. –

+0

404: URL yêu cầu/ghi/bài viết/cài đặt-perl-modules-without-root không được tìm thấy trên máy chủ này. – harschware

5

Để hoàn tất, đây là quá trình cài đặt cpanm trên OSX nếu bạn muốn giữ số perl5 dưới ~/Library.

curl -L http://cpanmin.us | perl - -l ~/Library/perl5 App::cpanminus local::lib 
eval `perl -I ~/Library/perl5/lib/perl5 -Mlocal::lib=~/Library/perl5` 
echo 'eval `perl -I ~/Library/perl5/lib/perl5 -Mlocal::lib=~/Library/perl5`' >> ~/.bash_profile 
2

Nếu bạn muốn có thể đọc trang người dùng cho các mô-đun được cài đặt cpanminus, bạn cũng nên đảm bảo thư mục con chính xác của đường dẫn thư viện đã chọn nằm trong MANPATH. Vì vậy, các giải pháp trên cho thấy quá trình cài đặt của cpanm cần lệnh bổ sung sau đây:

export MANPATH=$HOME/Library/perl5/man:$MANPATH' >> ~/.bash_profile 
Các vấn đề liên quan