Friday, June 5, 2009

Packaging CPAN Modules for Debian

I'm giving a talk on CPAN at this year's YAPC in Pittsburgh. One of the things I plan to mention is the cpan2dist program from CPANPLUS. I use cpan2dist (with CPANPLUS::Dist::Deb) to build Debian packages for our internal use.

I had a conversation on IRC this morning with someone who asked, roughly, "What's the difference between cpan2dist and dh-make-perl?" Until recently I don't know that I would have been able to answer this, and I think the answer reveals a distinction that is important to keep in mind whenever you're trying to bridge between CPAN and your operating system's package manager.

Specifically, I think dh-make-perl is for maintaining a Debian package that happens to be a Perl module, and cpan2dist is for wrapping modules from CPAN in a package manager-friendly way. Let me expand on both of those:

dh-make-perl was written by Debian people, and seems aimed towards people who would like to maintain a module in full Debian style, filling in all the metadata like a changelog and description and so on.

  • It leaves you a source tree with a debian/ directory, so it's easy to take the autogenerated files and go from there on your own.
  • It lets you easily tweak an individual package's Debian package information.
  • It does not recurse into dependencies at all, it just notes them in the generated debian/control file, though I think by default it will warn and ignore any dependencies that don't have a Debian package.

If there are one or two modules you need to install that aren't in Debian -- maybe because they're internal code -- and you don't mind maintaining the Debian metadata, you probably want dh-make-perl (or to submit a request for packaging bug to the Debian Perl Group).

cpan2dist was written by Perl people, and CPANPLUS::Dist::Deb really only pays lip service to Debian's packaging conventions.

  • It assumes that modules' licenses permit redistribution, and fills the bare minimum metadata needed to install the package in many places.
  • It does recursively build debs of dependencies, and gives you some control over how to build all of those packages -- a common prefix to use in the package name, build tool options, etc.
  • It doesn't know anything about some of the weird historical decisions that have gone into Debian's perl (e.g. libcgi-perl is not CGI.pm but some distribution named cvswebedit), and does not (currently) give you quite enough control to make the packages it generates fit in with Debian's perl in every case.

I treat cpan2dist as a way of making it easier on my sysadmin to manage Perl modules that I would otherwise just install with the CPAN shell -- installing into /usr/local instead of /usr, for example -- and I don't try to match up with any of those historical edge cases. If you frequently need newer versions of modules than Debian provides, or if you want to install a lot of internal Perl code as debs (especially if you have an internal CPAN mirror that your code is injected into, e.g. with CPAN::Mini::Inject), or if you don't really feel like interacting with Debian's perl much at all, you probably want dh-make-perl.

(Disclaimer: I do not use dh-make-perl with any regularity, so my assessment of it may be insufficiently deep. Please correct me if I've said anything wrong.)

Long term, I'd like to be distributing my own perl package, at which point I'd be using apt-get and dpkg as a convenient distribution and management mechanism. cpan2dist is a much better fit for that goal -- I don't want to have to spend the time munging each Perl module's Debian package's control files for use with my own perl.

If you aren't using Debian, there may be something like dh-make-perl written specifically for your packaging system (I'm aware of g-cpan and g-cpanp for Gentoo, and I'd be amazed if RPM didn't have something too). cpan2dist should work the same everywhere; it has backends for Arch, Gentoo, Deb, RPM for Fedora and Mandriva, and finally PAR, which is itself cross-platform.

In every case there will probably be this same tradeoff between tighter integration with the native package manager's assumptions and ease of use for installing arbitrary CPAN modules, so be prepared to choose one or the other.

(originally posted at OpenSourcery)

4 comments:

  1. Bạn cần sử dụng dịch vụ giao hàng thu tiền hộ. Bạn cần giao hàng nhanh đến tay khách hàng. Nếu vậy bạn có thể tham khảo bảng giá giao hàng nhanh của chúng tôi. Khi bạn cần vận chuyển hàng đi đà nẵng hay giao hàng hà nội. Thì hãy nhớ đến chúng tôi, đảm các dịch vụ của chúng tôi sẽ khiến bạn hài lòng. Điển hình như dịch vụ chuyen hang di da nang đang được sự ủng hộ đông đảo của người dùng.

    ReplyDelete
  2. Đảm bảo sẽ phục vụ nhu cầu Tết cũng như nhu cầu vận chuyển hằng ngày của quý khách hàng vận chuyển hàng hóa tết nhanh, giá rẻ. Chúng tôi sẽ giúp bạn với dịch vụ vận chuyển hàng hóa trong nước giá rẻ, với công ty vận chuyển hàng hóa uy tín

    Sơn xe ô tô nhanh tại tphcm - Facebook sơn ô tô lấy nhanh tại Tp.HCM

    Facebook công ty vận chuyển hàng hóa giá rẻ á châu

    ReplyDelete
  3. dù rằng còn hơn một tháng nữa mới đến Tết Nguyên đán 2017 nhưng tại Hà Nội, đa dạng cây đào bích, đào phai đã sớm khoe sắc trên gian phoi thong minh.

    Vừa sắm cành đào phai tại chợ hoa PR, bà Nguyễn Thị Liên (51 tuổi, P.Bạch Mai, Q.Hai Bà Trưng) chia sẻ: “Tôi mua cành đào phai giá 160.000 đồng. Năm nào vợ chồng tôi cũng đánh xe lên chợ này sắm cành đào về đón rằm tháng Chạp và Tết Dương lịch”.

    ReplyDelete
  4. Ngoại trừ trường hợp dùng Fucoidan để điều trị bệnh ung thư, người bệnh cần tuân thủ liều dùng do các bác sĩ chỉ định thì trong những trường hợp còn lại, chúng ta nên để cho cơ thể làm quen và thẩm thấu từ từ Fucoidan. Thuốc Fucoidan https://www.linkedin.com/pulse/thuốc-fucoidan-trị-ung-thư-bán-ở-đâu-giá-bao-nhiêu-huynh-quan
    Fucoidan được liệt vào danh sách thực phẩm chức năng, cho nên việc dùng fucoidan cũng như cách chúng ta ăn uống hàng ngày, cần phải cung cấp từ từ trong thời gian dài và duy trì liên tục một lượng nhỏ hàng ngày. Nếu dùng nhiều trong một lần rồi nghỉ thì có thể nói là không có hiệu quả, đây cũng chính là sai lầm của khá nhiều người. Thuoc Best Fucoidan 70 http://muathuoctot.com/bo-3-san-pham-doctors-best-fucoidan-phuong-phap-ho-tro-dieu-tri-ung-thu-1216.html
    Fucoidan có tác dụng thanh lọc cơ thể và cung cấp dinh dưỡng cần thiết để nuôi dưỡng tế bào, cho nên việc cung cấp cho cơ thể một lượng nhất định với thời gian dài giúp cơ thể giải phóng dần cho đến hết các tế các chất gây hại cho cơ thể, đồng thời nuôi dưỡng và tăng cường sức miễn dịch đến từng tế bào. Thuoc Fucoidan tri ung thu https://www.amazon.com/Doctors-Best-Fucoidan-Vegetable-Capsules/product-reviews/B000NRVXSI
    Khi dùng Fucoidan đúng cách trong thời gian dài này khiến chon những tế bào trên bề mặt da mạnh khỏe hơn, da dẻ hồng hào hơn do khả năng cung cấp máu đến từng tế bào của Fucoidan http://muathuoctot.com/bo-5-san-pham-doctors-best-best-fucoidan-ngan-ngua-va-ho-tro-dieu-tri-benh-ung-thu-1217.html Best Fucoidan 70% – Doctor's Best có nguồn gốc từ tảo nâu phòng chống ung thư, chống oxy hóa. Khoa học đã chứng minh khả năng tiêu diệt tế bào ung thư

    ReplyDelete