blogs.perl.org / 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:0
    >=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/Module-Load:0

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

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?