
[Edit: All fixed.]
This public service announcement has been brought to you by non-infra Andreas.
eclass | 1) or 2) true | 1) false, 2) false |
none | "dev-lang/perl:=" needed in RDEPEND and most likely also DEPEND | "dev-lang/perl" needed in RDEPEND, maybe also in DEPEND |
perl-module.eclass | no need to do anything | GENTOO_DEPEND_ON_PERL_SUBSLOT=no possible before inherit |
perl-app.eclass | GENTOO_DEPEND_ON_PERL_SUBSLOT=yes needed before inherit | no need to do anything |
dev-lang/perlOf course, as always, bugs may be present; what you get as Perl installation is called unstable or testing for a reason. We're looking forward to your reports on our bugzilla.
virtual/perl-*
perl-core/*
UPDATE THE PERL MODULES:Then maybe you have updated your major Perl version recently, since this important message is printed by emerge afterwards. So, what is it about? In short, a certain disconnect between the "Perl way" of doing things and the rest of the world. Both have their merits, they just don't play very well with each other... and the result is that major Perl updates in Gentoo have traditionally also been a major pain. (This will become much better in the future, see below.)
After updating dev-lang/perl you must reinstall
the installed perl modules.
Use: perl-cleaner --all
caipi ~ # equery files dev-perl/Email-AddressInteresting- the installation path contains the Perl version! The reasons for upstream to do this are pretty much obvious, the application binary interface for compiled modules can change and it's necessary to keep the installed modules for different versions apart. Also, in theory you can keep different Perl versions installed in parallel. Nice idea, however if you have only one "system Perl" installation, and you exchange that for a newer version (say, 5.18.1 instead of 5.16.3), the result is that the new version won't find the installed packages anymore.
* Searching for Email-Address in dev-perl ...
* Contents of dev-perl/Email-Address-1.898.0:
/usr
/usr/lib
/usr/lib/perl5
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/vendor_perl/5.16.3
/usr/lib/perl5/vendor_perl/5.16.3/Email
/usr/lib/perl5/vendor_perl/5.16.3/Email/Address.pm
/usr/share
/usr/share/doc
/usr/share/doc/Email-Address-1.898.0
/usr/share/doc/Email-Address-1.898.0/Changes.bz2
/usr/share/doc/Email-Address-1.898.0/README.bz2
caipi ~ #
checking for perl >= 5.8.1... 5.18.2Right. Perl is updated, dev-perl/XML-Parser is still installed in the old path, and Perl doesn't find it. Bah.
checking for XML::Parser... configure: error: XML::Parser perl module is required for intltool
* perl-cleaner is stopping here:In the end, you may have to try several repeated emerge and perl-cleaner commands until you have an updated and consistent system again. So far, it always worked somehow with fiddling, but the situation was definitely not nice.
* Fix the problem and start perl-cleaner again.
*
* If you encounter blockers involving virtuals and perl-core, here are
* some things to try:
* Remove all perl-core packages from your world file
* emerge --deselect --ask $(qlist -IC 'perl-core/*')
* Update all the installed Perl virtuals
* emerge -uD1a $(qlist -IC 'virtual/perl-*')
* Afterwards re-run perl-cleaner
RDEPEND="dev-lang/perl:="The good news about this is that portage now knows the dependency tree and can figure out the correct reinstallation order.