Specfiles for Perl Modules

WORK IN PROGRESS ... Document being updated (Fedora.us -> Fedora Extras)

Author:Josť Pedro Oliveira
Revision:0.20
Start date:2004-04-12
Last modified:2006-07-19

TOC

Introduction

Collection of notes for the Fedora Extras and Fedora.us community project about creation of specfiles for Perl modules and scripts. The targets are the Fedora and Red Hat Linux distributions.

Perl modules

Modules directories

perl (core)
/usr/lib/perl5/5.8.x
The perl core modules are installed under this directory.
site
/usr/lib/perl5/site_perl/5.8.x
CPAN installs modules under this directory.
vendor
/usr/lib/perl5/vendor_perl/5.8.x
Linux distros install modules under this directory.

Modules directories and ExtUtils::MakeMaker / Module::Build

INSTALLDIRS
perlsitevendor
PERLPREFIX SITEPREFIX VENDORPREFIX
INST_ARCHLIBINSTALLARCHLIB INSTALLSITEARCH INSTALLVENDORARCH
INST_LIB INSTALLPRIVLIB INSTALLSITELIB INSTALLVENDORLIB
INST_BIN INSTALLBIN INSTALLSITEBIN INSTALLVENDORBIN
INST_SCRIPT INSTALLSCRIPT INSTALLSCRIPT INSTALLSCRIPT
INST_MAN1DIRINSTALLMAN1DIR INSTALLSITEMAN1DIRINSTALLVENDORMAN1DIR
INST_MAN3DIRINSTALLMAN3DIR INSTALLSITEMAN3DIRINSTALLVENDORMAN3DIR

Manual installation procedures

Build.PLMakefile.PL
tar zxvf module-version.tar.gz
cd module-version
[cpansign -v [--skip]]
perl Build.PL
./Build
./Build test
./Build install
tar zxvf module-version.tar.gz
cd module-version
[cpansign -v [--skip]]
perl Makefile.PL
make
make test
make install

Note: You should also download the file CHECKSUMS (if possible from a different CPAN mirror) and check the integrity of the tarball.

Important Perl modules

ModuleCore moduleComment
CPAN Yes core module since perl 5.004
to be replaced by CPANPLUS
CPANPLUS No scheduled to perl 5.10
ExtUtils::MakeMakerYes core module since perl 5.00307 (at least)
to be replaced by Module::Build
Module::Build Noperl 5.9.2 core module (?)
Module::CoreList Noperl 5.9.2 core module
Module::Signature No
YAML No

<notes>

</notes>

Fedora.us specfile template explained

fedora-rpmdevtools-0.3.1

Target: Fedora Extras

   1	%{!?perl_vendorlib: %define perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)}
   2	%{!?perl_vendorarch: %define perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)}
   3	
   4	Name:           
   5	Version:        
   6	Release:        1
   7	Summary:        
   8	
   9	Group:          Development/Libraries
  10	License:        
  11	URL:            
  12	Source0:        
  13	BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
  14	
  15	BuildArch:      
  16	BuildRequires:  perl >= 1:5.6.1
  17	Requires:  perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
  18	
  19	%description
  20	
  21	
  22	%prep
  23	%setup -q
  24	
  25	
  26	%build
  27	CFLAGS="$RPM_OPT_FLAGS" %{__perl} Makefile.PL INSTALLDIRS=vendor
  28	%{__perl} -pi -e 's/^\tLD_RUN_PATH=[^\s]+\s*/\t/' Makefile
  29	make %{?_smp_mflags} OPTIMIZE="$RPM_OPT_FLAGS"
  30	
  31	
  32	%install
  33	rm -rf $RPM_BUILD_ROOT
  34	make pure_install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT
  35	find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
  36	find $RPM_BUILD_ROOT -type f -name '*.bs' -a -size 0 -exec rm -f {} ';'
  37	find $RPM_BUILD_ROOT -type d -depth -exec rmdir {} 2>/dev/null ';'
  38	chmod -R u+w $RPM_BUILD_ROOT/*
  39	
  40	
  41	%check || :
  42	make test
  43	
  44	
  45	%clean
  46	rm -rf $RPM_BUILD_ROOT
  47	
  48	
  49	%files
  50	%defattr(-,root,root,-)
  51	%doc
  52	# For noarch packages: vendorlib
  53	%{perl_vendorlib}/*
  54	# For arch-specific packages: vendorarch
  55	%{perl_vendorarch}/auto/*
  56	%{perl_vendorarch}/everything-except-"auto"
  57	%{_mandir}/man3/*.3*
  58	
  59	
  60	%changelog

Target: Fedora.US

diff -u spectemplate-perl.extras.spec spectemplate-perl.us.spec
--- spectemplate-perl.extras.spec	2005-02-03 19:09:34.000000000 +0000
+++ spectemplate-perl.us.spec	2005-02-13 16:02:02.836436728 +0000
@@ -3,7 +3,8 @@
 
 Name:           
 Version:        
-Release:        1
+Release:        0.fdr.1
+Epoch:          0
 Summary:        
 
 Group:          Development/Libraries

fedora-rpmdevtools-0.2.0

Todo: targeting fedora.us

fedora-rpmdevtools-0.1.8 (cvs revision 1.5)

The specfile template for perl modules is going to have a couple of changes. Right now you can browse the buzilla entry - Bug 1401 - fedora-rpmdevtools 0.1.8 suggestions - and download the cvs specfile template here: spectemplate-perl.spec

   1	%{!?perl_vendorlib: %define perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)}
   2	%{!?perl_vendorarch: %define perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)}
   3	
   4	Name:           
   5	Version:        
   6	Release:        0.fdr.1
   7	Epoch:          0
   8	Summary:        
   9	
  10	Group:          Development/Libraries
  11	License:        
  12	URL:            
  13	Source0:        
  14	BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
  15	
  16	BuildArch:      
  17	BuildRequires:  perl >= 1:5.6.1
  18	Requires:  perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
  19	
  20	%description
  21	
  22	
  23	%prep
  24	%setup -q
  25	
  26	
  27	%build
  28	CFLAGS="$RPM_OPT_FLAGS" %{__perl} Makefile.PL INSTALLDIRS=vendor
  29	%{__perl} -pi -e 's/^\tLD_RUN_PATH=[^\s]+\s*/\t/' Makefile
  30	make %{?_smp_mflags} OPTIMIZE="$RPM_OPT_FLAGS"
  31	
  32	
  33	%install
  34	rm -rf $RPM_BUILD_ROOT
  35	make pure_install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT
  36	find $RPM_BUILD_ROOT -type f -a \( -name .packlist \
  37	  -o \( -name '*.bs' -a -empty \) \) -exec rm -f {} ';'
  38	find $RPM_BUILD_ROOT -type d -depth -exec rmdir {} 2>/dev/null ';'
  39	chmod -R u+w $RPM_BUILD_ROOT/*
  40	
  41	
  42	%check || :
  43	make test
  44	
  45	
  46	%clean
  47	rm -rf $RPM_BUILD_ROOT
  48	
  49	
  50	%files
  51	%defattr(-,root,root,-)
  52	%doc
  53	%{_mandir}/man3/*.3*
  54	# For noarch packages:
  55	%{perl_vendorlib}/*
  56	# For arch-specific packages:
  57	%{perl_vendorarch}/auto/*
  58	%{perl_vendorarch}/everything-except-"auto"
  59	
  60	
  61	%changelog

Line 29: Handling the RPATH problem. Check bugzilla entry 1064 - New: perl-XML-LibXML-Common (for < FC2).

Lines 35-37: Eliminates the perllocal.pod file mess. The ExtUtils::MakeMaker target pure_install doesn't create this file. This problem doesn't occur with Module::Build; this module, at least until version 0.25, doesn't create neither this file nor the .packlist file.

Lines 42-43: The use of Module::Signature will generate a couple of problems in the test area:

fedora-rpmdevtools-0.1.7-0.fdr.5

   1	Name:           
   2	Version:        
   3	Release:        0.fdr.1
   4	Epoch:          0
   5	Summary:        
   6	
   7	Group:          Development/Libraries
   8	License:        
   9	URL:            
  10	Source0:        
  11	BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
  12	
  13	BuildRequires:  
  14	
  15	%description
  16	
  17	
  18	%prep
  19	%setup -q
  20	
  21	
  22	%build
  23	CFLAGS="$RPM_OPT_FLAGS" %{__perl} Makefile.PL INSTALLDIRS=vendor
  24	make %{?_smp_mflags} OPTIMIZE="$RPM_OPT_FLAGS"
  25	
  26	
  27	%install
  28	rm -rf $RPM_BUILD_ROOT
  29	make install \
  30	  PERL_INSTALL_ROOT=$RPM_BUILD_ROOT \
  31	  INSTALLARCHLIB=$RPM_BUILD_ROOT%{perl_archlib}
  32	find $RPM_BUILD_ROOT -type f -a \( -name perllocal.pod -o -name .packlist \
  33	  -o \( -name '*.bs' -a -empty \) \) -exec rm -f {} ';'
  34	find $RPM_BUILD_ROOT -type d -depth -exec rmdir {} 2>/dev/null ';'
  35	chmod -R u+w $RPM_BUILD_ROOT/*
  36	
  37	
  38	%check || :
  39	make test
  40	
  41	
  42	%clean
  43	rm -rf $RPM_BUILD_ROOT
  44	
  45	
  46	%files
  47	%defattr(-,root,root,-)
  48	%doc
  49	%{_libdir}/perl*/*
  50	%{_mandir}/man3/*.3*
  51	
  52	
  53	%changelog

Line 7: RPM packaging group. The group must be a valid one. This can be easily checked against the contents of the file /usr/share/doc/rpm-x.x/GROUPS).

<comment>
Is this the official Fedora.us choice?
(fedora-devel@fedora.us mailing list: What Perl module RPM group?)
</comment>

Line 8: If it is a CPAN perl package, the license will most likely be "GPL or Artistic". See How are Perl and the CPAN modules licensed?

Good candidate places to look for the license information are the README file, the META.yml file, and the pod documentation.

Line 9: If it is a CPAN perl package, it will be something like: http://search.cpan.org/dist/.../

Line 10: If it is a CPAN perl package, it starts with something like: http://www.cpan.org/authors/id/...
The rest of the URL can be found using the CPAN shell (CPAN_FILE line). For example:

cpan> m Module::Build
Module id = Module::Build
    DESCRIPTION  Build, test, and install Perl modules
    CPAN_USERID  KWILLIAMS (Ken Williams <ken@mathforum.org>)
    CPAN_VERSION 0.25
    CPAN_FILE    K/KW/KWILLIAMS/Module-Build-0.25.tar.gz
    ...

Line 11: Definition of the temporary installation base directory (specfile macro BuildRoot). This location is also copied to the variable RPM_BUILD_ROOT.
To avoid conflicts in a machine where several RPM may be built under different accounts, the directory name should contain the name-version-release (NVR) of the package, and the the name of the user (id -u -n) that started the building process.

Line 13: Requirements (missing Requires) and Building requirements.

Automatic versus Manual creation of the requirements list
The RPM package includes a perl related script that can automatically determine the module dependencies. The major problem is that this solution is not backwards compatible (the script exists in RH7.3 but its file access permissions don't include execution).

<comment>
The BuildArch and the Requires macros are missing.
#BuildArch:
BuildRequires:
#Requires:
</comment>

Line 19: It is necessary to use the -n option to specify the distro directory. The default behaviour is to implicity change to the %{name}-%{version} directory but this is no longer valid for perl modules; the macro %name is tipically perl-pkgname (note the prefix 'perl-').

<comment>
%setup -q -n %{pkgname}-%{version}
where pkgname represents the name part of the tar.gz (assuming a standard CPAN package name - %{pkgname}-%{version}.tar.gz; there are several exceptions)
</comment>

Lines 23-24: Discussion about ExtUtils::MakeMaker Makefile variables: site_perl vs. vendor_perl

<comment buildarch="noarch">
removestrings('CFLAGS="..."', 'OPTIMIZE="..."') if $BuildArch eq "noarch";
</comment>

Lines 29-31: These lines are the solution to overcome the problems with broken DESTDIR and PREFIX in several ExtUtils::MakeMaker versions (e.g. the one included in perl-5.8.0)

<warning>
PERL_INSTALL_ROOT is an environment variable used by the ExtUtils::Install module. It doesn't exists in the Makefile.
</warning>

Lines 32-33:

<comment>
Removal of perllocal.pod info will most likely result in incomplete CPAN snapshots (CPAN autobundle command)
(TODO: browse the CPAN module code)
</comment>

<comment>
Removal of .packlist will most likely break manual removal. You should use the rpm command to remove it.
See CPAN FAQ: How do I remove installed Perl modules?
</comment>

<comment buildarch="noarch">
split the find command in two:
1) findanddelete('perllocal.pod', '.packlist')
2) findanddelete('*.bs')
print 2) unless $BuildArch eq "noarch";
</comment>

Line 34: Remove empty directories after deleting the files perllocal.pod, .packlist, and *.bs. This avoids the inclusion of empty directories and helps reducing the number of directories owned by the binary/noarch RPM.

Line 35: Change file access permissions in order to rpmbuild be able to strip the binary files. This problem affects the building process under a normal user account.
(fedora-devel@fedora.us mailing list: Stripping Perl modules)

<comment buildarch="noarch">
print $line[35] unless $BuildArch eq "noarch";
</comment>

Line 38-39:
<comment author="Ville Skytta">
%check sections were added in rpm 4.2, see https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=64137 (and /usr/share/doc/rpm-*/CHANGES)

The "|| :" part is a hack that makes it "work" for older rpm (< 4.2) versions as well, or effectively rpm (or actually the shell) skips that line altogether printing an error message about "no job control" or something. But the end result is almost the same, it gets run after the %install section (as long as it is after %install in the spec file for rpm < 4.2). The only small difference is that for rpm >= 4.2, the built in post-%install section scriptlets are run before %check.
</comment>

Line 48: Good candidate documentation files are the README file and the Changelog file. You should exclude files like MANIFEST*, META.yml, and INSTALL.

Line 49: to be replaced by %{perl_vendorlib}; this macro must be conditional defined at the top of the specfile (this macro only exists in RPM 4.3)

<comment author="Ville Skytta">
Change already pending for the next release of fedora-rpmdevtools (0.1.8)
</comment>

Regarding directory ownership, you should check the directores owned by the RPM, in particular the ones under the vendors subtree (/usr/lib/perl5/vendor_perl/5.8.x/). Extra care should be taken when checking perl modules that are in the same namespace of perl core modules. The perl core modules are installed in a different directory tree (/usr/lib/perl5/5.8.x/ instead of /usr/lib/perl5/vendor_perl/5.8.x/).

RPM versions in Red Hat/Fedora distros

RPM versions

DistroRelease NVRLast update NVR
Red Hat 6.2 rpm-3.0.4-0.48rpm-4.0.2-6x
Red Hat 7.0 rpm-4.0-4rpm-4.0.4-7x
Red Hat 7.1 rpm-4.0.2-8rpm-4.0.4-7x
Red Hat 7.2 rpm-4.0.3-1.03rpm-4.0.4-7x
Red Hat 7.3 rpm-4.0.4-7x.18 (respin?)---
Red Hat 8.0 rpm-4.1-1.06---
Red Hat 9 rpm-4.2-0.69---
Fedora Core 1 rpm-4.2.1-0.30---
Fedora Core 2 rpm-4.3-0.3---
Fedora Core 3 rpm-4.3.2-21---
Fedora Core 4 rpm-4.4.1-21rpm-4.4.2-29
Fedora Core 5 rpm-4.4.2-15.2---
Rawhide rpm-4.4.2-29---

Perl related macros in /usr/lib/rpm/macros

Perl related macros Red HatFedora
6.27.07.17.27.38.09 12345
%__perl YesYesYesYesYesYesYes YesYesYesYesYes
%__perl_provides ------------------Yes YesYesYesYesYes
%__perl_requires ------------------Yes YesYesYesYesYes
%perl_archlib YesYesYesYesYesYesYes YesYesYesYesYes
%perl_privlib --------------------- ---YesYesYesYes
%perl_sitearch YesYesYesYesYesYesYes YesYesYesYesYes
%perl_sitelib --------------------- ---YesYesYesYes
%perl_vendorarch --------------------- ---YesYesYesYes
%perl_vendorlib --------------------- ---YesYesYesYes

Perl related scripts in /usr/lib/rpm/

Perl related scripts Red HatFedora
6.27.07.17.27.38.09 12345
/usr/lib/rpm/perldeps.pl ------------------Yes YesYesYesYesYes
/usr/lib/rpm/perl.prov YesYesYesYesYesYesYes YesYesYesYesYes
/usr/lib/rpm/perl.req YesYes
(chmod +x)
Yes
(chmod +x)
Yes
(chmod +x)
Yes
(chmod +x)
YesYes YesYesYesYesYes

[WARNING]: check file access permissions of the above files (perl.req in RH7.{0,1,2,3} doesn't have execution permission).

Red Hat 7.2

$ cd /usr/lib/rpm/; ls -l perl*
-rwxr-xr-x    1 rpm      rpm          4877 Apr 10  2002 perl.prov
-rw-r--r--    1 rpm      rpm          6366 Apr 10  2002 perl.req

Red Hat 7.3

$ cd /usr/lib/rpm/; ls -l perl*
-rwxr-xr-x    1 rpm      rpm          4877 Apr 18  2002 perl.prov
-rw-r--r--    1 rpm      rpm          6366 Apr 18  2002 perl.req

Red Hat 9

$ cd /usr/lib/rpm/; ls -l perl*
-rwxr-xr-x    1 rpm      rpm          4738 Feb 27  2003 perldeps.pl
-rwxr-xr-x    1 rpm      rpm          4865 Feb 27  2003 perl.prov
-rwxr-xr-x    1 rpm      rpm          6367 Feb 27  2003 perl.req

Fedora Core 1

$ cd /usr/lib/rpm/; ls -l perl*
-rwxr-xr-x    1 rpm      rpm          4738 Jul 18  2003 perldeps.pl
-rwxr-xr-x    1 rpm      rpm          4865 Jul 18  2003 perl.prov
-rwxr-xr-x    1 rpm      rpm          6367 Jul 18  2003 perl.req

Fedora Core 2

$ cd /usr/lib/rpm/; ls -l perl*
-rwxr-xr-x    1 rpm      rpm          4736 Apr 16 21:34 perldeps.pl
-rwxr-xr-x    1 rpm      rpm          4875 Apr 16 21:34 perl.prov
-rwxr-xr-x    1 rpm      rpm          6586 Apr 16 21:34 perl.req

Fedora Core 3

$ cd /usr/lib/rpm/; ls -l perl*
-rwxr-xr-x    1 rpm      rpm          4736 Nov  2 02:54 perldeps.pl
-rwxr-xr-x    1 rpm      rpm          4875 Nov  2 02:54 perl.prov
-rwxr-xr-x    1 rpm      rpm          6586 Nov  2 02:54 perl.req

Fedora Core 4

$ cd /usr/lib/rpm/; ls -l perl*
-rwxr-xr-x    1 rpm      rpm          8760 Mar 29 23:17 perldeps.pl
-rwxr-xr-x    1 rpm      rpm          5317 Mar 29 23:17 perl.prov
-rwxr-xr-x    1 rpm      rpm          6622 Mar 29 23:17 perl.req

Fedora Core 5

$ cd /usr/lib/rpm/; ls -l perl*
-rwxr-xr-x    1 rpm      rpm          8845 Feb 12 09:16 perldeps.pl
-rwxr-xr-x    1 rpm      rpm          5433 Feb 12 09:16 perl.prov
-rwxr-xr-x    1 rpm      rpm          6622 Feb 12 09:16 perl.req

perl.req

perl.req: file access permissions and sizes
(rpm -qplv rpm-build-4.x.x-x.i386.rpm | grep perl.req)

RH62: -rwxr-xr-x  5522 Mar 13  2001 /usr/lib/rpm/perl.req (update)
RH70: -rw-r--r--  6366 Feb 15  2002 /usr/lib/rpm/perl.req (update)
RH71: -rw-r--r--  6366 Feb 15  2002 /usr/lib/rpm/perl.req (update)
RH72: -rw-r--r--  6366 Feb 15  2002 /usr/lib/rpm/perl.req (update)
RH73: -rw-r--r--  6366 Apr 18  2002 /usr/lib/rpm/perl.req
RH80: -rwxr-xr-x  6367 Sep  4  2002 /usr/lib/rpm/perl.req
RH9 : -rwxr-xr-x  6367 Feb 27  2003 /usr/lib/rpm/perl.req
FC1 : -rwxr-xr-x  6367 Jul 18  2003 /usr/lib/rpm/perl.req
FC2 : -rwxr-xr-x  6586 Apr 16 21:34 /usr/lib/rpm/perl.req
FC3 : -rwxr-xr-x  6586 Nov  2 02:54 /usr/lib/rpm/perl.req
FC4 : -rwxr-xr-x  6622 Mar 29 23:17 /usr/lib/rpm/perl.req (update)
FC5 : -rwxr-xr-x  6622 Feb 12 09:16 /usr/lib/rpm/perl.req

perl.req: diff -u between RH7.1/RH7.2/RH7.3 and RH8.0/RH9/FC1 versions

--- RH73/perl.req       2002-04-18 22:35:49.000000000 +0100
+++ RH9/perl.req        2003-02-27 21:23:59.000000000 +0000
@@ -104,7 +104,7 @@
     #  if we need to print it print it now.

     if ( m/^\s*\$RPM_Requires\s*=\s*["'](.*)['"]/i) {
-      foreach $_ (spit(/\s+/, $1)) {
+      foreach $_ (split(/\s+/, $1)) {
        print "$_\n";
       }
     }

perl.req: diff -u between RH8.0/RH9/FC1 and FC2 versions

--- FC1/perl.req        2003-07-18 03:46:36.000000000 +0100
+++ FC2/perl.req        2004-04-16 21:34:25.000000000 +0100
@@ -80,13 +80,23 @@

   while (<FILE>) {

+    # skip the "= <<" block
+
+    if ( ( m/^\s*\$(.*)\s*=\s*<<\s*["'](.*)['"]/i) ||
+         ( m/^\s*\$(.*)\s*=\s*<<\s*(.*);/i) ) {
+      $tag = $2;
+      while (<FILE>) {
+        ( $_ =~ /^$tag/) && last;
+      }
+    }
+
     # skip the documentation

     # we should not need to have item in this if statement (it
     # properly belongs in the over/back section) but people do not
     # read the perldoc.

-    if ( (m/^=(head1|head2|pod|item)/) .. (m/^=(cut)/) ) {
+    if ( (m/^=(head[1-4]|pod|item)/) .. (m/^=(cut)/) ) {
       next;
     }

@@ -167,7 +177,7 @@
       # sometimes people do use POSIX qw(foo), or use POSIX(qw(foo)) etc
       # we can strip qw.*$, as well as (.*$:
       $module =~ s/qw.*$//;
-      $module =~ s/\(*$//;
+      $module =~ s/\(.*$//;

       $module =~ s/\.pm$//;

Perl versions in Red Hat/Fedora distros

Perl RPMS versions and releases

DistroRelease NVRLast update NVR
Red Hat 6.2 perl-5.00503-10perl-5.00503-12
Red Hat 7.0 perl-5.6.0-9perl-5.6.0-10a
Red Hat 7.1 perl-5.6.0-12perl-5.6.1-36.1.71
Red Hat 7.2 perl-5.6.0-17perl-5.6.1-36.1.72
Red Hat 7.3 perl-5.6.1-34.99.6 (respin?)perl-5.6.1-36.1.73
Red Hat 8.0 perl-5.8.0-55perl-5.8.0-88.3
Red Hat 9 perl-5.8.0-88perl-5.8.0-88.3
Fedora Core 1 perl-5.8.1-92perl-5.8.3-16
Fedora Core 2 perl-5.8.3-18---
Fedora Core 3 perl-5.8.5-9perl-5.8.5-24
Fedora Core 4 perl-5.8.6-15perl-5.8.6-24
Fedora Core 5 perl-5.8.8-4perl-5.8.8-5
Rawhide perl-5.8.8-8---

Perl RPMS epochs

Command: rpm -qp --qf "%{epoch}\n" perl-5.x.x-x.{i386,src}.rpm

NVREpoch
perl-5.00503-{10, 12}(none)
perl-5.6.0-{9, 10a, 12, 17}1
perl-5.6.1-{34.99.6, 36.1.71, 36.1.72, 36.1.73}1
perl-5.8.0-{55, 88, 88.3}2
perl-5.8.1-923
perl-5.8.3-{16, 17, 18}3
perl-5.8.5-{9,24}3
perl-5.8.6-{15,24}3
perl-5.8.8-{4,5}4
perl-5.8.8-8 (rawhide)4

Perl core and dual life modules

TODO: core modules (and dual life modules) can't be updated (file conflicts). Mention several past and present exceptions (CPAN, CGI, Time::HiRes, ...).

Perl modules notes

ExtUtils::MakeMaker

Module::Build

Module::Build version 0.26 (0.2608) (update check: 0.2804):

Module::CoreList

This module includes a database with all perl core modules indexed by perl versions. The script corelist is a front-end to this database.

Module::Signature

Module::Signature version 0.44 (update check: 0.54)

Available tools for creating specfiles

Several scripts that I have come across:

References

Documents

Perl modules documentation

Perl scripts you should have (Fedora.Extras)


Josť Pedro Oliveira <jpo [at] di [dot] uminho [dot] pt>

Valid XHTML 1.0! Created with Vim