gentoo perl 5.20 upgrade madness

perl upgrade from 5.18 to 5.20 was a bit painful. i could tell it was looking … odd, on my machines w/ almost no perl packs installed (git deps basically). on those systems, the simple emerge -utav perl managed to work with only a few complaints.

my spam scanning system, however, was another thing. amavis & spamassassin = such perl. it took several hours to figure this stuff out (due to minutes long ‘calculating dependencies’ on this ancient hardware).

TLDR:

emerge -utav $(qlist -IC 'virtual/perl-*')  

OK. so. I’ve seen other issues in the past, and they boiled down to ‘having the wrong things’ in world (/var/lib/portage/world).

OK, yeah, I’ve got perl-core/IO-Socket-IP in there … 7 virtuals … 6ish dev-perl packs. Maybe it’s that.

emerge --deselect -av IO-Socket-IP  
emerge -utavD perl  
# different, not fixed.
emerge --deselect -av virtual/perl-ExtUtils-ParseXS perl-File-Temp perl-IO-Zlib perl-Locale-Maketext-Simple perl-Net-Ping perl-Package-Constants perl-libnet  
emerge -utavD perl  
# different, not fixed.
emerge -utavD perl ... added all dev-perl packages ... then some others ... no help.

# start using qlist, from a gentoo forum suggestion
emerge -utav perl Net-HTTP JSON Net-DNS Net-SSLeay libwww-perl DBI DBD-mysql IO-Socket-IP HTML-Parser perl-version net-server perl-Pod-Parser spamassassin Net-Ping MIME-tools $(qlist -IC 'virtual/perl-*') dev-perl/extutils-pkgconfig  
emerge -utav perl Net-HTTP JSON Net-DNS Net-SSLeay libwww-perl DBI DBD-mysql IO-Socket-IP HTML-Parser perl-version net-server MIME-tools $(qlist -IC 'dev-perl/*') $(qlist -IC 'virtual/perl-*') dev-perl/extutils-pkgconfig amavisd-new  
emerge -utav $(qlist -IC 'dev-perl/*') $(qlist -IC 'virtual/perl-*') $(qlist -IC 'perl-core/*')

# aaaaaaand, this worked:
emerge -utav  $(qlist -IC 'virtual/perl-*')  

If you are having a hard time upgrading perl on gentoo, apparently emerge -u with all installed virtual/perl-* atoms is the way to go.

If it doesn’t work, I would guess that deselecting perl-core/* and virtual/perl-* from world was actually important.