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 |
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.
| INSTALLDIRS | |||
|---|---|---|---|
| perl | site | vendor | |
| PERLPREFIX | SITEPREFIX | VENDORPREFIX | |
| INST_ARCHLIB | INSTALLARCHLIB | INSTALLSITEARCH | INSTALLVENDORARCH |
| INST_LIB | INSTALLPRIVLIB | INSTALLSITELIB | INSTALLVENDORLIB |
| INST_BIN | INSTALLBIN | INSTALLSITEBIN | INSTALLVENDORBIN |
| INST_SCRIPT | INSTALLSCRIPT | INSTALLSCRIPT | INSTALLSCRIPT |
| INST_MAN1DIR | INSTALLMAN1DIR | INSTALLSITEMAN1DIR | INSTALLVENDORMAN1DIR |
| INST_MAN3DIR | INSTALLMAN3DIR | INSTALLSITEMAN3DIR | INSTALLVENDORMAN3DIR |
| Build.PL | Makefile.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.
| Module | Core module | Comment |
|---|---|---|
| CPAN | Yes | core module since perl 5.004 to be replaced by CPANPLUS |
| CPANPLUS | No | scheduled to perl 5.10 |
| ExtUtils::MakeMaker | Yes | core module since perl 5.00307 (at least) to be replaced by Module::Build |
| Module::Build | No | perl 5.9.2 core module (?) |
| Module::CoreList | No | perl 5.9.2 core module |
| Module::Signature | No | |
| YAML | No |
<notes>
</notes>
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
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
Todo: targeting fedora.us
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:
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/).
| Distro | Release NVR | Last update NVR |
|---|---|---|
| Red Hat 6.2 | rpm-3.0.4-0.48 | rpm-4.0.2-6x |
| Red Hat 7.0 | rpm-4.0-4 | rpm-4.0.4-7x |
| Red Hat 7.1 | rpm-4.0.2-8 | rpm-4.0.4-7x |
| Red Hat 7.2 | rpm-4.0.3-1.03 | rpm-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-21 | rpm-4.4.2-29 |
| Fedora Core 5 | rpm-4.4.2-15.2 | --- |
| Rawhide | rpm-4.4.2-29 | --- |
| Perl related macros | Red Hat | Fedora | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 6.2 | 7.0 | 7.1 | 7.2 | 7.3 | 8.0 | 9 | 1 | 2 | 3 | 4 | 5 | |
| %__perl | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| %__perl_provides | --- | --- | --- | --- | --- | --- | Yes | Yes | Yes | Yes | Yes | Yes |
| %__perl_requires | --- | --- | --- | --- | --- | --- | Yes | Yes | Yes | Yes | Yes | Yes |
| %perl_archlib | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| %perl_privlib | --- | --- | --- | --- | --- | --- | --- | --- | Yes | Yes | Yes | Yes |
| %perl_sitearch | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| %perl_sitelib | --- | --- | --- | --- | --- | --- | --- | --- | Yes | Yes | Yes | Yes |
| %perl_vendorarch | --- | --- | --- | --- | --- | --- | --- | --- | Yes | Yes | Yes | Yes |
| %perl_vendorlib | --- | --- | --- | --- | --- | --- | --- | --- | Yes | Yes | Yes | Yes |
| Perl related scripts | Red Hat | Fedora | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 6.2 | 7.0 | 7.1 | 7.2 | 7.3 | 8.0 | 9 | 1 | 2 | 3 | 4 | 5 | |
| /usr/lib/rpm/perldeps.pl | --- | --- | --- | --- | --- | --- | Yes | Yes | Yes | Yes | Yes | Yes |
| /usr/lib/rpm/perl.prov | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| /usr/lib/rpm/perl.req | Yes | Yes (chmod +x) | Yes (chmod +x) | Yes (chmod +x) | Yes (chmod +x) | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
[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: 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$//;
| Distro | Release NVR | Last update NVR |
|---|---|---|
| Red Hat 6.2 | perl-5.00503-10 | perl-5.00503-12 |
| Red Hat 7.0 | perl-5.6.0-9 | perl-5.6.0-10a |
| Red Hat 7.1 | perl-5.6.0-12 | perl-5.6.1-36.1.71 |
| Red Hat 7.2 | perl-5.6.0-17 | perl-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-55 | perl-5.8.0-88.3 |
| Red Hat 9 | perl-5.8.0-88 | perl-5.8.0-88.3 |
| Fedora Core 1 | perl-5.8.1-92 | perl-5.8.3-16 |
| Fedora Core 2 | perl-5.8.3-18 | --- |
| Fedora Core 3 | perl-5.8.5-9 | perl-5.8.5-24 |
| Fedora Core 4 | perl-5.8.6-15 | perl-5.8.6-24 |
| Fedora Core 5 | perl-5.8.8-4 | perl-5.8.8-5 |
| Rawhide | perl-5.8.8-8 | --- |
Command: rpm -qp --qf "%{epoch}\n" perl-5.x.x-x.{i386,src}.rpm
| NVR | Epoch |
|---|---|
| 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-92 | 3 |
| 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 |
TODO: core modules (and dual life modules) can't be updated (file conflicts). Mention several past and present exceptions (CPAN, CGI, Time::HiRes, ...).
Module::Build version 0.26 (0.2608) (update check: 0.2804):
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 version 0.44 (update check: 0.54)
Several scripts that I have come across:
| Author: | Chip Turner |
| Homepage: | http://perl.pattern.net/ |
| CPAN: | http://search.cpan.org/~chipt/ (RPM-Specfile) |
| Author: | Erick Calder |
| Homepage: | http://perl.arix.com/cpan2rpm/ |
| CPAN: | http://search.cpan.org/~ecalder/ |
| Author: | Michael De La Rue |
| CPAN: | http://search.cpan.org/~mikedlr/ |
| Author: | David Necas (Yeti) |
| Homepage: | http://trific.ath.cx/resources/perl2rpm/ |
| Author: | Steven Pritchard |
| Homepage: | http://www.silug.org/~steve/ |
| Download: | http://www.silug.org/~steve/software/scripts/perl/ |
| Note: | This script only tries to generate the specfile (doesn't try to build the RPMS). |
| Author: | Alexey Tourbin, ALT Linux Team |
| Homepage: | http://search.cpan.org/dist/rpm-build-perl/ |
| Download: | http://search.cpan.org/~atourbin/ |
| Note: | This module looks very promising. |
| Author: | Gyepi Sam |
| Homepage: | http://search.cpan.org/dist/Ovid/ |
| Download: | http://search.cpan.org/~gyepi/ |