CPAN so với APT: Xung đột trong các phiên bản?


9

Tôi không thể tìm thấy câu trả lời cho bất cứ nơi nào: Mô-đun được cài đặt qua APT có xung đột với một mô-đun được cài đặt qua CPAN không?

Cùng với câu hỏi đó là: các mô-đun CPAN được cài đặt sống ở đâu? Chúng có thể truy cập trên toàn cầu hay chỉ cho người dùng cài đặt? Làm thế nào để bạn biết cái nào? Làm thế nào để bạn biết những gì được cài đặt và được ưu tiên?

CPAN thậm chí có nên được sử dụng khi các mô-đun được cài đặt qua APT không?

Câu trả lời:


8

Trên Debian và Ubuntu CPAN ( /usr/bin/cpantiện ích) cài đặt các mô-đun /usr/local/lib/theo mặc định. Và các gói debian giữ các tập tin của họ trong /usr/share/perl5//usr/lib/perl5/. Vì vậy, các tệp được cài đặt qua /usr/bin/cpansẽ không ghi đè lên các tệp được cài đặt qua apt.

Không có gì sai khi sử dụng perl hệ thống, và việc trộn mã apt và cpan thường sẽ hoạt động.

Bạn cũng có thể chọn đóng gói bất kỳ phân phối cpan nào không có sẵn trong kho apt của bạn theo cách thủ công. Thật dễ dàng với sự trợ giúp của công cụ dh-make-perl:

dh-make-perl --cpan Some::Module && cd Some-Module* && sudo debi

Vị trí nơi cpancác mô-đun được cài đặt kết thúc được xác định bởi PERL Config.pm. Trên Ubuntu 11.04 của tôi, nó là /usr/local/share/perl/5.10.1.
Riccardo Murri

Tôi nghĩ rằng đó là /usr/local/sharecho các mô-đun thuần perl và /usr/local/libcho các công cụ xs.
berekuk

6

Tôi sử dụng perlbrew . Nó cài đặt một phiên bản địa phương của Perl và cpan. Tất cả mọi thứ nó làm được thực hiện trong thư mục nhà của bạn. Thật đơn giản để cài đặt và sử dụng và bạn có thể cài đặt phiên bản mới nhất của Perl.


2
Điều đó cũng tốt nếu bạn muốn khởi hành từ hệ thống perl.
szabgab

4

Khi cài đặt trực tiếp từ CPAN, tôi khuyên bạn nên sử dụng local :: lib vào một thư mục riêng tư với bạn. Xem kỹ thuật tăng cường https://metacpan.org/module/local::lib

Bằng cách đó, mô-đun được cài đặt CPAN sẽ chỉ được sử dụng bởi người dùng của bạn và nó sẽ có một sự tách biệt rất rõ ràng với các mô-đun được cài đặt bằng APT.

Nó cũng sẽ giúp bạn dễ dàng thoát khỏi các mô-đun được cài đặt CPAN nếu bạn gặp phải bất kỳ vấn đề nào hoặc khi bạn nâng cấp Ubuntu.

Đó là cách tôi sử dụng nó trên Ubuntu.


1

Bạn có thể sử dụng cả hai nhưng chúng sẽ xung đột. Chúng được ghi vào cùng một vị trí, vì vậy nếu bạn cài đặt một cái gì đó từ apt và sau đó cài đặt phiên bản mới hơn từ cpan, bạn có thể khắc phục mọi thứ.

Tôi không làm nhiều Perl nhưng trong Python tôi chắc chắn có vấn đề nan giải mà bạn đang nói đến: apt-vs-PyPI. Cá nhân tôi chọn apt bất cứ khi nào tôi có thể. Điều đó có nghĩa là tôi sẽ nhận được các bản cập nhật mà không cần phải nhớ duy trì từng gói Python riêng lẻ. Không chỉ vậy mà điều đó có nghĩa là tất cả các hệ thống của tôi sẽ chạy trên cùng một phiên bản của các gói đó.

Nó không phải lúc nào cũng hoạt động. Đôi khi bạn không có đủ thứ mới trong repos hoặc thứ bạn cần không được đóng gói. Không có cách nào là hoàn hảo nhưng tôi tin rằng apt sẽ hoàn hảo hơn . Chỉ cần lưu ý về những gì bạn đang làm và bạn sẽ ổn thôi.


Chỉnh sửa - Hầu như quên mất, có một cách tốt hơn để phân chia mọi thứ để hệ thống có thể có môi trường riêng và bất cứ điều gì bạn đang phát triển đều có thể sống trong môi trường của chính nó (mà bạn quản lý hoàn toàn bằng CPAN), như virtualenv...

/programming/1423879/how-can-i-install-specialized-envirments-for-different-perl-appluggest


Tôi đã hy vọng rằng CPAN sẽ cài đặt vào một số Sitehoặc sitethư mục - hoặc ít nhất là bạn có thể buộc nó.
Mei

3
Lưu ý: trên Ubuntu, cpancác mô-đun được cài đặt kết thúc bằng / usr / local / share / perl (hoặc vị trí được chỉ định bởi PERL Config.pm), trong khi các gói APT kết thúc bằng / usr / share / perl5 theo chính sách Debian. Vì vậy, chúng không xung đột, và an toàn khi trộn và khớp các cài đặt CPAN và APT, như các câu trả lời khác nói. (Python không phải là một sự tương tự tốt ở đây: Việc đóng gói và xử lý mô-đun PERL khác nhiều và -IMHO- vượt trội so với Python.)
Riccardo Murri

@Riccardo: hoàn toàn đúng. Điều tương tự cũng xảy ra với Red Hat, mặc dù đến một địa điểm khác.
Mei
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.