2010-10-22 21 views
5

Gần đây tôi đã thiết lập một hệ thống mới và muốn cài đặt Padre để kiểm tra. Các hướng dẫn cài đặt Padre đặc biệt nói để cài đặt địa phương :: lib, vì vậy tôi đã làm như vậy (mặc dù tôi chưa bao giờ có nhu cầu của nó trước). Sau đó tôi đã đi trên con đường của tôi cài đặt một số mô-đun khác, chạy CPAN từ tài khoản người dùng bình thường của tôi với sudo để xử lý các phần bắt buộc gốc của tiến trình cài đặt.Làm cách nào để cài đặt mô-đun CPAN trên toàn trang web trong khi địa phương :: lib hiện diện?

Sau đó, thời gian để kiểm tra một trong các ứng dụng web mà các mô-đun này là cần thiết để hỗ trợ và, xin xem, apache không thể tìm thấy chúng. Chúng được nạp tiền từ dòng lệnh và nhìn nhanh trong dòng lệnh ~/perl5 xác nhận rằng địa phương :: lib đã tấn công các phiên CPAN của tôi và cài đặt các mô-đun này thay vì ở vị trí trên toàn trang web, mặc dù cấu hình CPAN của tôi bao gồm

makepl_arg   [INSTALLDIRS=site] 
mbuildpl_arg  [--installdirs site] 

Tôi cần làm gì với cấu hình CPAN của mình để các mô-đun sẽ được cài đặt trên toàn trang web mặc dù địa phương :: lib được cài đặt? Hoặc sẽ Padre làm việc mà không có nó và tôi chỉ có thể loại bỏ địa phương :: lib hoàn toàn?

(Tôi không muốn bất kỳ module cài đặt theo ~/perl5 trừ khi Padre khăng khăng họ ở đó. Mã của tôi đang được phát triển có riêng thư mục địa điểm dự án cụ thể của nó và mọi thứ khác nên trang web toàn. Tôi không có cần một địa điểm nhận toàn bộ.)

+1

'Perl' hiển thị những gì?Nếu nó khác với '/ usr/bin/perl', bạn có thể chỉ muốn gọi'/usr/bin/perl -MCPAN -e shell'. –

+0

Suy nghĩ tốt, nhưng nó hiển thị '/ usr/bin/perl'. –

Trả lời

8

OK. Theo hướng dẫn trên local::lib's CPAN page, tôi đã đặt export PERL_MM_OPT='INSTALL_BASE=~me/perl', đã ghi đè cài đặt trong cấu hình CPAN của tôi. Một nhanh chóng export PERL_MM_OPT= đưa tôi trở lại vị trí cài đặt thích hợp.

Một mặt, đó là những gì tôi nhận được để làm theo hướng dẫn một cách mù quáng. Mặt khác, tôi đã mong đợi o conf để hiển thị các cài đặt cấu hình thực đang được sử dụng thay vì cài đặt cấu hình CPAN đã lưu (ngay cả khi biến môi trường ghi đè chúng).

+1

Đây là lý do tại sao tôi nghĩ rằng địa phương :: lib, perlbrew, vv, mặc dù về mặt kỹ thuật tốt, là xã hội xấu. Đó là nghĩa vụ phải làm cho mọi thứ dễ dàng hơn cho những người hiểu quá trình đã có, không làm cho nó, do đó bạn có thể bỏ qua những gì nó làm cho bạn. –

+1

* dài im lặng * đồng ý, tôi đã kết thúc việc kéo tóc của mình ra ngoài một vấn đề máy chủ với các mô-đun không nâng cấp đúng cho người dùng, phát hiện ra là vì tài khoản có địa chỉ :: lib và các mô-đun chỉ được cập nhật toàn hệ thống. Bây giờ tôi phải chịu số phận khoảng 4 năm (độ dài mà tôi phải trả lời cho bài đăng này) để đưa sợi lông của tôi trở lại trong các nang thích hợp của họ. – osirisgothra

0

Dựa trên this comment, có vẻ như local::lib cài đặt phiên bản CPAN.pm. Nếu đây là trường hợp, bạn có thể cần phải tìm CPAN.pm gốc và đảm bảo rằng tệp đó được tải khi bạn chạy trình bao CPAN của mình. Một cái gì đó như:

perl -I /usr/lib/perl5 -MCPAN -e shell 

có thể làm điều đó. Bạn cũng có thể tìm thấy perl -V hữu ích để xem những gì bao gồm đường dẫn trình biên dịch Perl đang sử dụng cho các mô-đun của nó.

+0

Không, các mô-đun vẫn đang được cài đặt trong '~/perl5' ngay cả với' -I/usr/lib/perl5' và tất cả các thư mục trong '~/perl5' bị xóa khỏi @INC. –

+0

OK, điều này sẽ cho bạn biết mô-đun CPAN.pm nào đang được tải: 'perl -MCPAN -le 'print $ INC {" CPAN.pm "}'' Nó in gì? – Tim

+0

'/ usr/share/perl/5.10/CPAN.pm' –

1

Xuất nhanh PERL_MM_OPT = đưa tôi quay lại vị trí cài đặt thích hợp.

Điều này không giúp tôi khi tôi cố gắng cài đặt Starman trên toàn cầu. Tôi phải chỉnh sửa /root/.bashrc để nhận xét (hoặc xóa) các dòng tiếp theo:

  1. xuất PERL_LOCAL_LIB_ROOT = "$ PERL_LOCAL_LIB_ROOT:/root/perl5";
  2. xuất PERL_MB_OPT = "- install_base/root/perl5";
  3. xuất PERL_MM_OPT = "INSTALL_BASE =/root/perl5";
  4. xuất PERL5LIB = "/ root/perl5/lib/perl5: $ PERL5LIB";
  5. xuất PATH = "/ root/perl5/bin: $ PATH";
Các vấn đề liên quan