2010-01-09 26 views
10

Tôi đã cài đặt Perl từ nguồn vào/usr/local và điều chỉnh đường dẫn của tôi cho phù hợp, sau brian d foy's suggestion here.Làm cách nào để tránh sudo-ing khi cài đặt mô-đun Perl với 'cpan'?

Tôi chắc chắn mình đang thiếu thứ gì đó, nhưng bây giờ tôi đang cố cài đặt nội dung bằng 'cpan 'lệnh và nó không thành công vì nó không thể ghi vào/usr/local. Tôi phải sử dụng sudo, điều đó cảm thấy sai với tôi. CPAN có nên chuyển đến địa điểm khác không? Sử dụng sudo có bình thường không?

Trả lời

9

Cây /usr/local được bảo vệ. Hoàn toàn bình thường khi sử dụng sudo để cài đặt phần mềm ở đó.

Cài đặt vào một vị trí thư viện riêng biệt là một câu hỏi thường gặp. Xem "How do I keep my own module/library directory?" trong phần 8.

trích đoạn chính:

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 Build.PL phân phối dựa trên, hãy 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 mbuild_arg "--install_base /mydir/perl" 
cpan> o conf commit 
+1

Tôi nghĩ anh ấy đã làm điều này. Lời khuyên trong FAQ là không đủ cho việc này. Có một mbuild_install_build_command và một tùy chọn make_install_make_command nơi bạn có thể thiết lập sudo như một lệnh để sử dụng trong bước cài đặt. –

11

Nếu nó thực sự phiền bạn sử dụng sudo, bạn có thể sử dụng local::lib và cài đặt module trong thư mục chính của bạn - nơi bạn không cần đặc quyền siêu người dùng.

Điều đó nói rằng, bạn không nên làm phiền bạn khi sử dụng sudo. Không có gì nhất thiết phải sai với nó. Như Gbacon nói, bạn cần nó nếu bạn muốn cài đặt trong /usr/local/usr/local được chia sẻ bởi tất cả người dùng trên hệ thống (và vì vậy, quyền của nó phản ánh điều đó):

 
    telemachus ~ $ ls -ld /usr/local/ 
    drwxr-xr-x 17 root wheel 578 Jan 8 20:00 /usr/local/ 
+1

Vấn đề với địa phương :: lib là duy trì các perls riêng biệt cùng một lúc. Nếu bạn muốn cô lập các cài đặt hoàn toàn như tôi đề nghị, bạn không muốn cài đặt các mô-đun cho các perls khác nhau trong cùng một thư mục. –

9

Các /usr/local thư mục không nên được ghi bởi một người dùng bình thường, nhưng thiết lập Unix có nhiều tính năng để xử lý việc này.

Trong lời khuyên của tôi, tôi đã đề xuất thiết lập /usr/local/perls. Bạn có thể cung cấp cho thư mục đó bất kỳ quyền nào bạn thích. Không áp dụng bất kỳ quyền nào đối với nhiều thư mục hơn bạn cần.

Tôi đề xuất thiết lập nhóm perl, thêm chính bạn vào nhóm đó và đặt nhóm thư mục thư viện Perl có thể ghi. Sau khi thiết lập, bạn không cần phải sudo vì bạn có quyền của nhóm.

Ngoài ra, bạn có thể điều chỉnh cấu hình CPAN.pm để sử dụng sudo trong giai đoạn cài đặt. Hãy xem các lệnh make_install_make_commandmbuild_install_build_command trong tài liệu. Chỉ cần tìm kiếm "sudo" và bạn sẽ tìm thấy chúng.

Chúc may mắn, :)

6

Trong vỏ CPAN của bạn, cấu hình nó để chạy makebuild bước dưới sudo:

o conf make_install_make_command 'sudo make' 
o conf mbuild_install_build_command 'sudo ./Build' 
o conf commit 
quit 

(Tôi tìm thấy những here - Tôi không có guru CPAN .)

Các vấn đề liên quan