Tôi đang chạy CentOS 5.4 chỉ có phiên bản 5.8 perl có sẵn theo mặc định và tôi có một chương trình yêu cầu perl 5.10, vì vậy tôi đã biên dịch perl 5.10 trên CentOS. Làm cách nào để chỉ định perl nào tôi muốn chạy chương trình vì lệnh perl sử dụng 5.8 theo mặc định.Làm thế nào để xác định phiên bản của perl để sử dụng trên CentOS
Trả lời
Dòng đầu tiên của tệp chương trình nên tham chiếu nhị phân perl bạn muốn sử dụng: ví dụ:
#!/usr/bin/perl
Bạn cũng có thể muốn thay đổi biến PATH để thư mục nhị phân perl 5.10 của bạn được liệt kê trước thư mục nhị phân 5.8. ví dụ:
export PATH=/path/to/perl/5.10:$PATH
đặt biến môi trường PATH để trỏ đến tệp thực thi perl mới của bạn. Ví dụ
export PATH=/newpath/perl:$PATH
Tôi muốn thực hiện liên kết tượng trưng để thực thi perl khác nhau của tôi trong /usr/local/bin
:
$ [sudo] ln -s /path/to/perl5.10.1.exe /usr/local/bin/perl510
$ [sudo] ln -s /path/to/perl5.13.8.exe /usr/local/bin/perl513
$ ... etc. ...
$ # and just for completeness
$ ln -s /usr/bin/perl /usr/local/bin/perl58
và sau đó chỉ cần gọi:
$ perl510 script_to_use_with_v5.10.pl
Có một công cụ gọi là giải pháp thay thế đó là được thiết kế để đối phó hiệu quả với chính xác loại vấn đề này. Về cơ bản, nó cung cấp cho bạn một cách dễ dàng để chuyển đổi giữa các phiên bản ứng dụng khác nhau bằng cách thao tác các liên kết tượng trưng trong ví dụ: các thư mục bin của bạn.
Nói "lựa chọn thay thế con người" trong thiết bị đầu cuối (hoặc cài đặt yum thay thế, nếu bạn chưa cài đặt).
Tôi thêm giọng nói của mình để đề xuất chống lộn xộn với hệ thống perl.
Chưa có ai đề cập đến App::perlbrew. Nó cho phép bạn có một số phiên bản của Perl và chuyển đổi giữa chúng một cách dễ dàng. Điều này có thể được thực hiện bằng tay tất nhiên nhưng nó dễ dàng hơn nhiều để có công cụ này để làm điều đó cho bạn; từ Pod–
# Install some Perls
perlbrew install perl-5.12.2
perlbrew install perl-5.8.1
perlbrew install perl-5.13.6
# See what were installed
perlbrew list
# Switch perl in the $PATH
perlbrew switch perl-5.12.2
perl -v
# Switch to another version
perlbrew switch perl-5.8.1
perl -v
# Switch to a certain perl executable not managed by perlbrew.
perlbrew switch /usr/bin/perl
# Or turn it off completely. Useful when you messed up too deep.
perlbrew off
# Use 'switch' command to turn it back on.
perlbrew switch perl-5.12.2
Sử dụng perlbrew để móc vào 5.10 sẽ không hoạt động tốt với Apache, đặc biệt nếu bạn đang sử dụng mod_perl.Bạn có thể nhận được một tập lệnh khởi chạy Apache để chạy qua perlbrew nhưng nó không phải là rất hiệu quả. Phương pháp hiệu quả nhất sẽ là thông qua mod_perl hooks, nhưng sau đó perlbrew sẽ không giúp ích gì. Thực hiện cài đặt song song 5.10 sẽ tốt hơn và cập nhật Apache/mod_perl để sử dụng 5.10 cài đặt phiên bản 5.8. –
BTW, Gói perlbrew có sẵn để cài đặt từ kho lưu trữ EPEL cho CentOS 5.x. Tôi đã cố gắng để cài đặt chỉ rpm này ban đầu nhưng nó có một số phụ thuộc vì vậy tôi đã chọn để thêm kho EPEL vào danh sách của tôi về repos yum trên hộp của tôi.
giải pháp có hai phần ... đầu tiên chỉnh sửa myscript.pl mà muốn phiên bản cụ thể
old
#!/usr/bin/perl
new
#!/usr/bin/env perl
trên không ảnh hưởng đến hành bình thường của kịch bản ... khi bạn muốn trên myscript.pl sử dụng một phiên bản perl cụ thể tạo ra một kịch bản wrapper chứa
export PATH=/cool/new/version/perl:$PATH
# now execute script on following line
/path/to/myscript.pl
cách này lời gọi khác của kịch bản vẫn không thay đổi và họ chỉ cần sử dụng perl mặc định trong khi kịch bản wrapper launcher thực hiện cùng một kịch bản myscript.pl với lựa chọn phiên bản perl
Cảnh giác với việc sửa lỗi nhà cung cấp Perl/nhà cung cấp phân phối của bạn với phiên bản mới hơn-- đôi khi các công cụ hệ thống được viết cho phiên bản mà chúng đi kèm và bạn có thể gây ra sự cố phụ thuộc. – Nathan