Some questions regarding rpm's, yast and CPAN
Some doubts: 1) I am not clear as to why some rpm's are named i386 and some noarch. eg) perl-libwww-perl-5.801-8.noarch.rpm perl-GDTextUtil-0.86-8.i386.rpm I suspect the i386 means Intel but when I install a perl i386 rpm on my Mainframe z890 it works. 2) when I install some perl RPM's on my SuSe 9.3 from rpmpam I had no problems. However, when I go into CPAN (perl -MCPAN -e shell), I find that the rpm's for the perl modules are not showing up when I do an "i" on the name (e.g. perl-AnyData-xxx.rpm was installed and then under CPAN, "i AnyData"). is this normal? I am trying to avoid using CPAN because I have been burned before when I install and module that I need to remove later on. CPAN won't allow me. Another problem with CPAN is that I need to do it with me present, I can't just automate the installation of a bunch of RPM's for new servers. Any suggestions will be appreciated.
On Wed, 11 Jan 2006 18:37:40 -0500, Yu Safin wrote:
1) I am not clear as to why some rpm's are named i386 and some noarch.
Every perl module that either has architecture dependent parts or somehow depends on a given architecture will be built for all supported architectures. Those perl modules that really are architecture independent (i.e. only consist of perl code) get marked noarch in the rpm spec file and will be built once for all architectures. If you find perl modules that aren't marked noarch but seem to work on other architectures as well, feel free to report them in https://bugzilla.novell.com . Philipp
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Philipp Thomas wrote:
On Wed, 11 Jan 2006 18:37:40 -0500, Yu Safin wrote:
1) I am not clear as to why some rpm's are named i386 and some noarch.
Every perl module that either has architecture dependent parts or somehow depends on a given architecture will be built for all supported architectures. Those perl modules that really are architecture independent (i.e. only consist of perl code) get marked noarch in the rpm spec file and will be built once for all architectures.
If you find perl modules that aren't marked noarch but seem to work on other architectures as well, feel free to report them in https://bugzilla.novell.com .
Well, actually there's some trickery with Perl modules.
Even the Perl modules that are architecture-independent (because they only contain Perl code, and no
shared library/PIC object file) are _NOT_ noarch RPMs.
The reason is that Perl modules are installed under
/usr/lib/perl5/...
So what?
On 64bit, that directory is /usr/lib64/perl5/...
And... ?
If RPMs with Perl modules were "noarch", then they could not be built
- - once for 32bit, with the prefix /usr/lib/perl5/
- - once for 64bit, with the prefix /usr/lib64/perl5/
Installing a Perl module into /usr/lib/perl5 on a 64bit SUSE Linux won't work unless you hack Perl's
search path, because perl expects the module to be under /usr/lib64/perl5
Hope this clarifies ;)
BTW, same goes for Python modules.
cheers
- --
-o) Pascal Bleser http://linux01.gwdg.de/~pbleser/
/\\
On Thu, Jan 12, 2006 at 08:24:01AM +0100, Pascal Bleser wrote:
The reason is that Perl modules are installed under /usr/lib/perl5/...
So what? On 64bit, that directory is /usr/lib64/perl5/...
No, that's not correct for opensuse. We always use /usr/lib/perl5. Cheers, Michael. -- Michael Schroeder mls@suse.de main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Michael Schroeder wrote:
On Thu, Jan 12, 2006 at 08:24:01AM +0100, Pascal Bleser wrote:
The reason is that Perl modules are installed under /usr/lib/perl5/...
So what? On 64bit, that directory is /usr/lib64/perl5/...
No, that's not correct for opensuse. We always use /usr/lib/perl5.
Yes, sorry, confused with Python (which is in /usr/lib64/python).
Nevertheless, the logic still applies to Perl, because every package (even those that only contain
pure Perl code) has a .packlist file under
/usr/lib/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi/auto/
(this one for x86_64)
Hence, and only because of that, Perl packages are all arch-specific (= never noarch).
The .packlist is not critical though, and that's why some perl packages may work even if it's not
the correct package architecture, if they only contain pure Perl code.
cheers
- --
-o) Pascal Bleser http://linux01.gwdg.de/~pbleser/
/\\
On Thu, Jan 12, 2006 at 11:58:08PM +0100, Pascal Bleser wrote:
Nevertheless, the logic still applies to Perl, because every package (even those that only contain pure Perl code) has a .packlist file under /usr/lib/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi/auto/ (this one for x86_64)
Hence, and only because of that, Perl packages are all arch-specific (= never noarch). The .packlist is not critical though, and that's why some perl packages may work even if it's not the correct package architecture, if they only contain pure Perl code.
Hmm, good point. IMHO the .packlist should not be in installarchlib if the package contains only "noarch" data, i.e. nothing else is in installarchlib. Cheers, Michael. -- Michael Schroeder mls@suse.de main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Michael Schroeder wrote:
On Thu, Jan 12, 2006 at 11:58:08PM +0100, Pascal Bleser wrote:
Nevertheless, the logic still applies to Perl, because every package (even those that only contain pure Perl code) has a .packlist file under /usr/lib/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi/auto/ (this one for x86_64)
Hence, and only because of that, Perl packages are all arch-specific (= never noarch). The .packlist is not critical though, and that's why some perl packages may work even if it's not the correct package architecture, if they only contain pure Perl code.
Hmm, good point. IMHO the .packlist should not be in installarchlib if the package contains only "noarch" data, i.e. nothing else is in installarchlib.
Indeed. It's pretty pointless to make arch-bound packages that only contain pure Perl code but
that's where Perl is putting/expecting the .packlist file as of now.
$ rpm -qa 'perl-*' --queryformat '%{ARCH}\n' | wc -l
0
$ zgrep -E '/perl-.*\.noarch\.rpm$' | wc -l
0
$ zgrep -E '/perl-.*\.x86_64\.rpm$' | wc -l
455
;)
cheers
- --
-o) Pascal Bleser http://linux01.gwdg.de/~pbleser/
/\\
participants (4)
-
Michael Schroeder
-
Pascal Bleser
-
Philipp Thomas
-
Yu Safin