CPAN vs. APT: Konflik dalam versi?

9

Saya tidak dapat menemukan jawaban untuk ini di mana saja: Apakah modul yang dipasang melalui APT bertentangan dengan yang dipasang melalui CPAN?

Bersamaan dengan pertanyaan itu adalah ini: Di ​​mana modul CPAN yang diinstal tinggal? Apakah mereka dapat diakses secara global atau hanya untuk pengguna yang menginstal? Bagaimana kamu tahu yang mana? Bagaimana Anda tahu apa yang diinstal dan mana yang diutamakan?

Haruskah CPAN bahkan digunakan ketika modul dipasang melalui APT?

Mei
sumber

Jawaban:

8

Pada Debian dan Ubuntu CPAN ( /usr/bin/cpanutilitas) menginstal modul ke dalam /usr/local/lib/secara default. Dan paket debian menyimpan file mereka di /usr/share/perl5/dan /usr/lib/perl5/. Jadi file yang diinstal melalui /usr/bin/cpantidak akan menimpa file yang diinstal melalui apt.

Tidak ada yang salah dengan menggunakan sistem perl, dan mencampur kode apt dan cpan umumnya akan berfungsi.

Anda juga dapat memilih untuk mengemas distribusi cpan yang tidak tersedia di repositori apt Anda secara manual. Mudah dengan bantuan alat dh-make-perl:

dh-make-perl --cpan Some::Module && cd Some-Module* && sudo debi
berekuk
sumber
Lokasi di mana cpanmodul yang diinstal berakhir ditentukan oleh PERL Config.pm. Di Ubuntu 11.04 saya, itu /usr/local/share/perl/5.10.1.
Riccardo Murri
Saya pikir ini /usr/local/shareuntuk modul perl murni dan /usr/local/libuntuk xs stuff.
berekuk
6

Saya menggunakan perlbrew . Ini menginstal versi lokal dari Perl dan cpan. Segala yang dilakukannya dilakukan di direktori home Anda. Langsung untuk menginstal dan menggunakan dan Anda dapat menginstal versi terbaru dari Perl.

shawnhcorey
sumber
2
Itu juga bagus jika Anda ingin berangkat dari sistem perl.
szabgab
4

Ketika menginstal dari CPAN secara langsung, saya akan merekomendasikan menggunakan :: lib lokal ke direktori pribadi untuk Anda. Lihat teknik boostrapping https://metacpan.org/module/local::lib

Dengan cara itu modul yang dipasang CPAN hanya akan digunakan oleh pengguna Anda dan itu akan memiliki pemisahan yang sangat bersih dari modul yang diinstal menggunakan APT.

Ini juga akan memudahkan untuk menyingkirkan modul yang dipasang CPAN jika Anda menemukan masalah apa pun atau ketika Anda meningkatkan Ubuntu.

Begitulah cara saya menggunakannya di Ubuntu.

szabgab
sumber
1

Anda dapat menggunakan keduanya tetapi keduanya akan bertentangan. Mereka ditulis ke tempat yang sama jadi jika Anda menginstal sesuatu dari apt dan kemudian menginstal versi yang lebih baru dari cpan, Anda dapat menyusun semuanya.

Saya tidak melakukan banyak Perl tetapi dengan Python saya pasti memiliki dilema yang Anda bicarakan: apt-vs-PyPI. Saya pribadi memilih apt kapan saja saya bisa. Itu berarti saya harus mendapatkan pembaruan tanpa harus ingat untuk memelihara setiap paket Python individu. Bukan hanya itu tetapi itu berarti bahwa semua sistem saya harus berjalan pada versi yang sama dari paket-paket itu.

Itu tidak selalu berhasil. Kadang-kadang Anda tidak memiliki hal-hal yang cukup baru dalam repo atau sesuatu yang Anda butuhkan tidak dikemas. Tidak ada cara yang sempurna tetapi saya percaya cenderung lebih sempurna. Sadarilah apa yang Anda lakukan dan Anda harus baik-baik saja.


Sunting - Hampir lupa, ada cara yang lebih baik untuk membagi segalanya sehingga sistem dapat memiliki lingkungannya sendiri dan apa pun yang Anda kembangkan dapat hidup di lingkungannya sendiri (yang Anda kelola sepenuhnya dengan CPAN), Seperti Python virtualenv...

/programming/1423879/how-can-i-install-specialized-environmentments-for-different-perl-applications

Oli
sumber
Saya berharap bahwa CPAN akan menginstal ke beberapa Siteatau sitedirektori - atau setidaknya Anda bisa memaksanya.
Mei
3
Catatan: di Ubuntu, cpan-instalasi modul berakhir di / usr / local / share / perl (atau lokasi yang ditentukan oleh PERL Config.pm), sedangkan paket APT berakhir di / usr / share / perl5 sesuai kebijakan Debian. Jadi mereka tidak konflik, dan aman untuk mencampur dan mencocokkan instalasi CPAN dan APT, seperti jawaban yang lain katakan. (Python bukan analogi yang baik di sini: PERL pengemasan dan penanganan modul jauh berbeda dan -IMHO- lebih unggul dari Python.)
Riccardo Murri
@ Riccardo: cukup benar. Hal yang sama berlaku untuk Red Hat juga, meskipun ke lokasi yang berbeda.
Mei