gentoo の perl のアップデートはとても大変

いつ stable に落ちてきたんでしょう。

[ebuild     U  ] dev-lang/perl-5.24.1-r1:0/5.24::gentoo [5.22.3_rc4:0/5.22::gentoo] USE="berkdb gdbm -debug -doc -ithreads" 0 KiB

なんか前も perl のバージョン上げたときにエラい苦労した気がするんですよね……

とりあえず見てみます。

 # emerge -upvDN world

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U  ] dev-lang/perl-5.24.1-r1:0/5.24::gentoo [5.22.3_rc4:0/5.22::gentoo] USE="berkdb gdbm -debug -doc -ithreads" 0 KiB
[ebuild  rR    ] perl-core/File-Temp-0.230.400-r1::gentoo  0 KiB
[ebuild     U  ] app-admin/perl-cleaner-2.25::gentoo [2.20::gentoo] 0 KiB
[ebuild     U  ] virtual/perl-Test-Harness-3.360.100_rc::gentoo [3.350.100_rc::gentoo] 0 KiB
[ebuild     U  ] virtual/perl-Data-Dumper-2.160.0-r1::gentoo [2.158.0-r1::gentoo] 0 KiB
[ebuild  rR    ] virtual/perl-File-Temp-0.230.400-r5::gentoo  0 KiB
[ebuild  r  U  ] dev-libs/libevent-2.1.8:0/2.1-6::gentoo [2.0.22:0/0::gentoo] USE="ssl threads -debug (-libressl) -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild  rR    ] net-misc/ntp-4.2.8_p9::gentoo  USE="ipv6 readline ssl threads -caps -debug (-libressl) -openntpd -parse-clocks -samba (-selinux) -snmp -vim-syntax -zeroconf" 0 KiB
[ebuild     U  ] net-fs/nfs-utils-1.3.4::gentoo [1.3.1-r5::gentoo] USE="ipv6 libmount nfsidmap nfsv4 tcpd uuid -caps -kerberos -nfsdcld -nfsv41 (-selinux)" 0 KiB
[ebuild     U  ] sys-apps/openrc-0.24.2::gentoo [0.23.2::gentoo] USE="ncurses netifrc pam unicode -audit -debug -newnet (-prefix) (-selinux) -static-libs (-tools%)" 0 KiB

Total: 10 packages (7 upgrades, 3 reinstalls), Size of downloads: 0 KiB

The following packages are causing rebuilds:

  (dev-lang/perl-5.24.1-r1:0/5.24::gentoo, ebuild scheduled for merge) causes rebuilds for:
    (perl-core/File-Temp-0.230.400-r1:0/0::gentoo, ebuild scheduled for merge)
    (virtual/perl-File-Temp-0.230.400-r5:0/0::gentoo, ebuild scheduled for merge)
  (dev-libs/libevent-2.1.8:0/2.1-6::gentoo, ebuild scheduled for merge) causes rebuilds for:
    (net-misc/ntp-4.2.8_p9:0/0::gentoo, ebuild scheduled for merge)

あぁ~なんかもう見た目にヤバいやつ、いつも出てこないようなメッセージが末尾に……まぁ、だからといって放置しておくのもアレなので。とりあえずいってみます。

# emerge -uDN world

ほんで。

 * Messages for package dev-lang/perl-5.24.1-r1:

 * UPDATE THE PERL MODULES:
 * After updating dev-lang/perl the installed Perl modules
 * have to be re-installed. In most cases, this is done automatically
 * by the package manager, but subsequent steps are still recommended
 * to ensure system consistency.
 *
 * You should start with a depclean to remove any unused perl dependencies
 * that may confuse portage in future. Regular depcleans are also encouraged
 * as part of your regular update cycle, as that will keep perl upgrades working
.
 * Recommended: emerge --depclean -va
 *
 * You should then call perl-cleaner to clean up any old files and trigger any
 * remaining rebuilds portage may have missed.
 * Use: perl-cleaner --all
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

!!! existing preserved libs:
>>> package: dev-lang/perl-5.24.1-r1
 *  - /usr/lib64/libperl.so.5.22
 *  - /usr/lib64/libperl.so.5.22.3
 *      used by /usr/lib64/texinfo/XSParagraph.so (sys-apps/texinfo-6.1)
Use emerge @preserved-rebuild to rebuild packages using these libraries

なんか言ってるワケですよ……案の定。

まずは上から、オススメされてるやつを確認してみます。

# emerge -pv --depclean

 * Always study the list of packages to be cleaned for any obvious
 * mistakes. Packages that are part of the world set will always
 * be kept.  They can be manually added to this set with
 * `emerge --noreplace <atom>`.  Packages that are listed in
 * package.provided (see portage(5)) will be removed by
 * depclean, even if they are part of the world set.
 *
 * As a safety measure, depclean will not remove any packages
 * unless *all* required dependencies have been resolved.  As a
 * consequence of this, it often becomes necessary to run
 * `emerge --update --newuse --deep @world` prior to depclean.

Calculating dependencies... done!
 * Dependencies could not be completely resolved due to
 * the following required packages not being installed:
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-ParseXS-3.280.0-r1
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/XML-Parser-2.440.0
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/Locale-gettext-1.50.0-r1
 *
 *   =dev-lang/perl-5.22.3* pulled in by:
 *     virtual/perl-ExtUtils-MakeMaker-7.40.200_rc
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-Text-ParseWords-3.300.0-r2
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-Perl-OSType-1.8.0-r1
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-ExtUtils-CBuilder-0.280.221-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-CPAN-Meta-YAML-0.12.0-r2
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-Module-Metadata-1.0.26-r1
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/Text-Unidecode-1.270.0
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     app-text/po4a-0.45-r3
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-Getopt-Long-2.450.0-r1
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-Module-Metadata-1.0.26-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-JSON-PP-2.273.0.100_rc-r1
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-Install-2.40.0-r2
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/TermReadKey-2.330.0
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     dev-perl/Module-Build-0.421.600
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/Text-CharWidth-0.40.0-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-Manifest-1.700.0-r3
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-CPAN-Meta-2.150.1-r1
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-Getopt-Long-2.450.0-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-MakeMaker-7.40.200_rc
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/SGMLSpm-1.03-r7
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/Text-WrapI18N-0.60.0-r1
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/libintl-perl-1.240.0
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-ExtUtils-ParseXS-3.280.0-r1
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-version-0.990.900-r3
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-Parse-CPAN-Meta-1.441.400.100_rc
 *
 *   =dev-lang/perl-5.22.3* pulled in by:
 *     virtual/perl-Parse-CPAN-Meta-1.441.400.100_rc
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-File-Spec-3.560.200_rc
 *
 *   =dev-lang/perl-5.22.3* pulled in by:
 *     virtual/perl-File-Spec-3.560.200_rc
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-CPAN-Meta-2.150.1-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-CBuilder-0.280.221-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-Install-2.40.0-r2
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/TermReadKey-2.330.0
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     dev-perl/Module-Build-0.421.600
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/Text-CharWidth-0.40.0-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-Manifest-1.700.0-r3
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-CPAN-Meta-2.150.1-r1
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-Getopt-Long-2.450.0-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-MakeMaker-7.40.200_rc
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/SGMLSpm-1.03-r7
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/Text-WrapI18N-0.60.0-r1
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/libintl-perl-1.240.0
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-ExtUtils-ParseXS-3.280.0-r1
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-version-0.990.900-r3
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-Parse-CPAN-Meta-1.441.400.100_rc
 *
 *   =dev-lang/perl-5.22.3* pulled in by:
 *     virtual/perl-Parse-CPAN-Meta-1.441.400.100_rc
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-File-Spec-3.560.200_rc
 *
 *   =dev-lang/perl-5.22.3* pulled in by:
 *     virtual/perl-File-Spec-3.560.200_rc
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-CPAN-Meta-2.150.1-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-CBuilder-0.280.221-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-version-0.990.900-r3
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     sys-apps/texinfo-6.1
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-Perl-OSType-1.8.0-r1
 *
 *   dev-lang/perl:0/5.22=[-build(-)] pulled in by:
 *     dev-perl/Unicode-EastAsianWidth-1.330.0-r1
 *
 *   =dev-lang/perl-5.22* pulled in by:
 *     virtual/perl-CPAN-Meta-YAML-0.12.0-r2
 *
 * Have you forgotten to do a complete update prior to depclean? The
 * most comprehensive command for this purpose is as follows:
 *
 *   emerge --update --newuse --deep --with-bdeps=y @world
 *
 * Note that the --with-bdeps=y option is not required in many
 * situations. Refer to the emerge manual page (run `man emerge`)
 * for more information about --with-bdeps.
 *
 * Also, note that it may be necessary to manually uninstall
 * packages that no longer exist in the portage tree, since it may
 * not be possible to satisfy their dependencies.

おぃぃぃぃぃ…… なんだよこれはぁぁぁ。

ちょっとこんなの -p を外して --depclean する勇気ないので、次にオススメされている perl-cleaner とやらをやってみます。

# perl-cleaner -p --all
 * Would try to remove the following perl-core packages from world file
 *    emerge --deselect  perl-core/File-Temp
 * Would try to update installed Perl virtuals
 *    emerge -u1  virtual/perl-CPAN-Meta virtual/perl-CPAN-Meta-YAML virtual/per
l-Data-Dumper virtual/perl-ExtUtils-CBuilder virtual/perl-ExtUtils-Install virtu
al/perl-ExtUtils-MakeMaker virtual/perl-ExtUtils-Manifest virtual/perl-ExtUtils-
ParseXS virtual/perl-File-Spec virtual/perl-File-Temp virtual/perl-Getopt-Long v
irtual/perl-JSON-PP virtual/perl-Module-Metadata virtual/perl-Parse-CPAN-Meta vi
rtual/perl-Perl-OSType virtual/perl-Test-Harness virtual/perl-Text-ParseWords vi
rtual/perl-version

 * Beginning a clean up of .ph files
 * Excluding files for 5.24.1 and 5.24.1/x86_64-linux from cleaning

 * Locating ph files for removal

 * Locating packages for an update
 * Locating ebuilds linked against libperl
 *   Adding to list: sys-apps/texinfo:0
 *   Adding to list: dev-perl/SGMLSpm:0
 *   Adding to list: dev-perl/libintl-perl:0
 *   Adding to list: dev-perl/Text-WrapI18N:0
 *   Adding to list: dev-perl/XML-Parser:0
 *   Adding to list: dev-perl/Text-Unidecode:0
 *   Adding to list: dev-perl/TermReadKey:0
 *   Adding to list: dev-perl/Locale-gettext:0
 *   Adding to list: dev-perl/Module-Build:0
 *   Adding to list: dev-perl/Unicode-EastAsianWidth:0
 *   Adding to list: dev-perl/Text-CharWidth:0
 *   Adding to list: app-text/po4a:0
 * emerge -v1 --backtrack=200 --selective=n -p sys-apps/texinfo:0 dev-perl/SGMLSpm:0 dev-perl/libintl-perl:0 dev-perl/Text-WrapI18N:0 dev-perl/XML-Parser:0 dev-perl/Text-Unidecode:0 dev-perl/TermReadKey:0 dev-perl/Locale-gettext:0 dev-perl/Module-Build:0 dev-perl/Unicode-EastAsianWidth:0 dev-perl/Text-CharWidth:0 app-text/po4a:0

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  r  U  ] virtual/perl-ExtUtils-MakeMaker-7.100.200_rc::gentoo [7.40.200_rc::gentoo] 0 KiB
[ebuild  r  U  ] virtual/perl-Parse-CPAN-Meta-1.441.700.100_rc::gentoo [1.441.400.100_rc::gentoo] 0 KiB
[ebuild  r  U  ] virtual/perl-File-Spec-3.630.100_rc::gentoo [3.560.200_rc::gentoo] 0 KiB
[ebuild  r  U  ] virtual/perl-CPAN-Meta-YAML-0.18.0-r1::gentoo [0.12.0-r2::gentoo] 0 KiB
[ebuild   R    ] dev-perl/SGMLSpm-1.03-r7::gentoo  0 KiB
[ebuild   R    ] dev-perl/libintl-perl-1.240.0::gentoo  0 KiB
[ebuild   R    ] dev-perl/Locale-gettext-1.50.0-r1::gentoo  0 KiB
[ebuild   R    ] dev-perl/Text-CharWidth-0.40.0-r1::gentoo  0 KiB
[ebuild  r  U  ] virtual/perl-Perl-OSType-1.9.0-r1::gentoo [1.8.0-r1::gentoo] 0 KiB
[ebuild  r  U  ] virtual/perl-Getopt-Long-2.480.0-r1::gentoo [2.450.0-r1::gentoo] 0 KiB
[ebuild  r  U  ] virtual/perl-version-0.991.600-r1::gentoo [0.990.900-r3::gentoo] 0 KiB
[ebuild  r  U  ] virtual/perl-ExtUtils-CBuilder-0.280.225-r1::gentoo [0.280.221-r1::gentoo] 0 KiB
[ebuild  r  U  ] virtual/perl-Module-Metadata-1.0.31-r1::gentoo [1.0.26-r1::gentoo] 0 KiB
[ebuild  r  U  ] virtual/perl-ExtUtils-ParseXS-3.310.0-r1::gentoo [3.280.0-r1::gentoo] 0 KiB
[ebuild   R    ] dev-perl/XML-Parser-2.440.0::gentoo  0 KiB
[ebuild   R    ] dev-perl/Text-WrapI18N-0.60.0-r1::gentoo  0 KiB
[ebuild   R    ] dev-perl/Text-Unidecode-1.270.0::gentoo  0 KiB
[ebuild   R    ] dev-perl/TermReadKey-2.330.0::gentoo  0 KiB
[ebuild   R    ] dev-perl/Unicode-EastAsianWidth-1.330.0-r1::gentoo  0 KiB
[ebuild   R    ] dev-perl/Module-Build-0.421.600::gentoo  USE="{-test}" 0 KiB
[ebuild   R    ] sys-apps/texinfo-6.1::gentoo  USE="nls -static" 0 KiB
[ebuild     U  ] app-text/po4a-0.47::gentoo [0.45-r3::gentoo] USE="{-test}" LINGUAS="ja -af -ca -cs -da -de -eo -es -et -eu -fr -hr -id -it -kn -ko -nb -nl -pl -pt -pt_BR -ru -sl -sv -uk -vi -zh_CN -zh_HK" 0 KiB

Total: 22 packages (11 upgrades, 11 reinstalls), Size of downloads: 0 KiB
 *
 * It seems like perl-cleaner had to rebuild some packages.
 *

 * The following files remain. These were either installed by hand
 * or edited.

~(以下略)~

ふむ。なんかがんばってくれそうな感じですね。期待してます。-p 外して実行。

 * Regenerating GNU info directory index...
 * Processed 105 info files.
 *
 * It seems like perl-cleaner had to rebuild some packages.
 *

だそうです。どれどれ……

# emerge -pv --depclean

 * Always study the list of packages to be cleaned for any obvious
 * mistakes. Packages that are part of the world set will always
 * be kept.  They can be manually added to this set with
 * `emerge --noreplace <atom>`.  Packages that are listed in
 * package.provided (see portage(5)) will be removed by
 * depclean, even if they are part of the world set.
 *
 * As a safety measure, depclean will not remove any packages
 * unless *all* required dependencies have been resolved.  As a
 * consequence of this, it often becomes necessary to run
 * `emerge --update --newuse --deep @world` prior to depclean.

Calculating dependencies... done!
 * Dependencies could not be completely resolved due to
 * the following required packages not being installed:
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-Install-2.40.0-r2
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-JSON-PP-2.273.0.100_rc-r1
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-Text-ParseWords-3.300.0-r2
 *
 *   dev-lang/perl:0/5.22= pulled in by:
 *     virtual/perl-ExtUtils-Manifest-1.700.0-r3
 *
 * Have you forgotten to do a complete update prior to depclean? The
 * most comprehensive command for this purpose is as follows:
 *
 *   emerge --update --newuse --deep --with-bdeps=y @world
 *
 * Note that the --with-bdeps=y option is not required in many
 * situations. Refer to the emerge manual page (run `man emerge`)
 * for more information about --with-bdeps.
 *
 * Also, note that it may be necessary to manually uninstall
 * packages that no longer exist in the portage tree, since it may
 * not be possible to satisfy their dependencies.

あぁぁぁなんか惜しい。perl-cleaner……ちょっと残念な子でした。まったく効果がないワケじゃないけれど、完璧な効果じゃないみたいな……

こんどは emerge --depclean のオススメですね。emerge --update --newuse --deep --with-bdeps=y @world って、要はショートオプションのうどんに --with-bdeps=y 付けるワケですね。

# emerge -uDNpv --with-bdeps=y @world

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  rR    ] virtual/perl-ExtUtils-Install-2.40.0-r2::gentoo  0 KiB
[ebuild  rR    ] virtual/perl-Text-ParseWords-3.300.0-r2::gentoo  0 KiB
[ebuild  rR    ] virtual/perl-ExtUtils-Manifest-1.700.0-r3::gentoo  0 KiB
[ebuild  rR    ] virtual/perl-JSON-PP-2.273.0.100_rc-r1::gentoo  0 KiB

Total: 4 packages (4 reinstalls), Size of downloads: 0 KiB

お。なんかぴったりハマった感じの4パッケージ。これは期待でk(ry

# emerge -uDN --with-bdeps=y @world

~(略)~

 * After world updates, it is important to remove obsolete packages with
 * emerge --depclean. Refer to `man emerge` for more information.

いったか?

>>> These are the packages that would be unmerged:

 sys-kernel/gentoo-sources
    selected: 4.9.6-r1
   protected: none
     omitted: 4.9.16

 sys-kernel/gentoo-sources
    selected: 4.4.39
   protected: none
     omitted: 4.9.16


!!! 'app-editors/nano' (virtual/editor) is part of your system profile.
!!! Unmerging it may be damaging to your system.


 app-editors/nano
    selected: 2.6.3
   protected: none
     omitted: none

 sys-devel/automake
    selected: 1.14.1
   protected: none
     omitted: 1.15

 sys-devel/binutils
    selected: 2.25.1-r1
   protected: none
     omitted: 2.26.1

All selected packages: =sys-kernel/gentoo-sources-4.4.39 =app-editors/nano-2.6.3 =sys-devel/binutils-2.25.1-r1 =sys-devel/automake-1.14.1 =sys-kernel/gentoo-sources-4.9.6-r1

>>> 'Selected' packages are slated for removal.
>>> 'Protected' and 'omitted' packages will not be removed.

Packages installed:   254
Packages in world:    21
Packages in system:   44
Required packages:    249
Number to remove:     5

いつもの表示に戻った……対応完了です。

ちなみに別の仮想サーバーで試してみたところ、emerge -uDN world の後に emerge -uDN --with-bdeps=y @world を叩けばそれだけで回復することがわかりました……perl-cleaner ホントにザンネンな子だなぁ……

  • blog/2017/20170417210011_gentoo_perl_update
  • 最終更新: 2019/02/17 15:59