Gentoo: Perl Upgrade / byterock

Gentoo Linux

[blocks B] <perl-core/Digest-MD5 (“<perl-core/Digest-MD5” is blocking virtual/perl-Digest-MD5)

ARGH!!! If you managed a Gentoo machine long enough, I’m sure you’ve seen an endless list of block statements when trying to do an upgrade or just about… EVERYTHING.

But updating ‘dev-lang/perl’ in particular on a Gentoo based machine can be an experiment in premature hair loss. The following can save a couple of those hairs:

emerge -av1 perl-cleaner
emerge -av1O dev-lang/perl
perl-cleaner --all

We first make sure that the ‘perl-cleaner’ utility is installed. Then we do a single one-time installation of the new version of perl. And lastly we force all of the installed perl packages to update to the latest version.

You’ll likely end up with a bunch of packages that are no longer maintained or still conflict, in which case, you’ll need to unmerge those perl packages manually. An example of all the blocks:

[blocks B      ] <perl-core/Digest-MD5-2.530.0 ("<perl-core/Digest-MD5-2.530.0" is blocking virtual/perl-Digest-MD5-2.530.0-r2)
[blocks B      ] <perl-core/Test-Harness-3.330.0 ("<perl-core/Test-Harness-3.330.0" is blocking virtual/perl-Test-Harness-3.330.0)
[blocks B      ] <perl-core/File-Spec-3.480.100 ("<perl-core/File-Spec-3.480.100" is blocking virtual/perl-File-Spec-3.480.100-r1)
[blocks B      ] <perl-core/Compress-Raw-Zlib-2.65.0 ("<perl-core/Compress-Raw-Zlib-2.65.0" is blocking virtual/perl-Compress-Raw-Zlib-2.65.0)

Total: 95 packages (41 upgrades, 12 new, 42 reinstalls), Size of downloads: 839 kB
Conflict: 25 blocks (22 unsatisfied)

 * Error: The above package list contains packages which cannot be
 * installed at the same time on the same system.

  (virtual/perl-Archive-Tar-1.960.0::gentoo, ebuild scheduled for merge) pulled in by
    =virtual/perl-Archive-Tar-1.960.0 required by (perl-core/Module-Build-0.420.500::gentoo, ebuild scheduled for merge)
    >=virtual/perl-Archive-Tar-1.09 required by (perl-core/Module-Build-0.420.500::gentoo, ebuild scheduled for merge)

  (perl-core/Module-Load-0.240.0::gentoo, ebuild scheduled for merge) pulled in by

  (perl-core/Sys-Syslog-0.320.0-r1::gentoo, ebuild scheduled for merge) pulled in by

You can try the following to help with the core and virtual packages:

emerge --deselect --ask $(qlist -IC 'perl-core/*')
emerge -uD1a $(qlist -IC 'virtual/perl-*')

This will remove all perl-core packages from your world file. Then it will update all the installed Perl virtuals (which will bring in all of the core files).

Does anyone even use perl anymore?


  1. Great post!
    Perl has always been quite whacky to update, but now it seemed even more frustrating than usually. Your commands helped update a lot!

  2. Thanks for posting this! It helps a lot.
    BTW, PERL might not be used as much for new projects, but many tools depend on it, and it will take about 20+ years until all of them will be replaced.

Leave a Reply

Your email address will not be published. Required fields are marked *