When I started working at SUSE, one of the first things I worked on is the maintenance of the perl modules repository in the openSUSE Build Service (OBS).

We are using a tool called cpanspec to create .spec files from CPAN modules. From the spec file, the OBS then builds rpm packages.

I noticed there are a lot of modules missing information, or having other problems that prevent us from automatically create a working .spec file.

Perl has a great testing infrastructure. This helps us to see if the failures we get in OBS are present on other setups and platforms.

CPAN/PAUSE is not very strict on how a distribution should look like, though. That makes creating OS specific packages automatically harder.

Whenever I see a mistake in a CPAN module, and I have time, I try to file a bug report.

But since I came across the same common mistakes over and over, I decided to put up a page with a list of Best Practices that make it possible for most modules to be turned into a OS package automatically:

Best Practices for creating Perl5 CPAN Modules

But I need your help.

I think it would be useful to create more concrete examples. For specific items it would make sense to link to a more detailed tutorial. For example, many issues can be solved by using Dist::Zilla and the correct entries in the dist.ini .

I would be glad if, for example, Debian people could add a similar paragraph like I did for openSUSE.

Looking forward to suggestions, bug reports and pull requests