目前系统里安装的 dev-lang/perl 版本是 5.16.3,
$ eix -I dev-lang/perl
[U] dev-lang/perl
Available versions: [M]
5.16.3(0/5.16) 5.18.2-r1(0/5.18) 5.18.2-r2(0/5.18) ~5.20.0-r2(0/5.20) ~5.20.1-r1(0/5.20) {berkdb debug doc gdbm ithreads}
Installed versions: 5.16.3(11:14:49 AM 06/16/2014)(berkdb gdbm -debug -doc -ithreads)
Homepage:
http://www.perl.org/ Description: Larry Wall's Practical Extraction and Report Language
如上所示,同时 Portage 也提醒说 5.16.3 因为安全问题被 mask 掉了。因此我就打算升级它。$ sudo emerge -av --update dev-lang/perl
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild U ] dev-lang/perl-5.18.2-r2:0/5.18 [5.16.3:0/5.16] USE="berkdb gdbm -debug -doc -ithreads" 13,746 kB
[ebuild N ] perl-core/File-Temp-0.230.0 50 kB
[ebuild U ] virtual/perl-File-Temp-0.230.0-r1 [0.220.0-r2] 0 kB
Total: 3 packages (2 upgrades, 1 new), Size of downloads: 13,796 kB
!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:
dev-lang/perl:0
(
dev-lang/perl-5.18.2-r2::gentoo, ebuild scheduled for merge) pulled in by
=dev-lang/perl-5.18* required by (virtual/perl-Compress-Raw-Bzip2-2.60.0-r1::gentoo, installed)
(and 7 more with the same problem)
(
dev-lang/perl-5.16.3::gentoo, installed) pulled in by
dev-lang/perl:0/5.16=[-build(-)] required by (dev-perl/DateManip-6.410.0::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (dev-perl/HTTP-Cookies-6.0.1-r1::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (perl-core/Digest-SHA-5.820.0::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (dev-vcs/git-1.8.5.5::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (dev-perl/WWW-RobotRules-6.20.0::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (dev-vcs/subversion-1.7.14::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (dev-perl/Net-HTTP-6.60.0::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (dev-perl/Net-SSLeay-1.550::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (dev-perl/HTTP-Negotiate-6.0.1-r1::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (perl-core/IO-Compress-2.60.0::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (dev-perl/libwww-perl-6.50.0::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (dev-perl/Error-0.170.210::gentoo, installed)
dev-lang/perl:0/5.16=[-build(-)] required by (dev-perl/IO-Socket-SSL-1.953.0::gentoo, installed)
It may be possible to solve this problem by using package.mask to
prevent one of those packages from being selected. However, it is also
possible that conflicting dependencies exist such that they are
impossible to satisfy simultaneously. If such a conflict exists in
the dependencies of two different packages, then those packages can
not be installed simultaneously. You may want to try a larger value of
the --backtrack option, such as --backtrack=30, in order to see if
that will solve this conflict automatically.
For more information, see MASKED PACKAGES section in the emerge man
page or refer to the Gentoo Handbook.
!!! The following installed packages are masked:
- net-dialup/ppp-2.4.5-r3::gentoo (masked by: package.mask)
/usr/portage/profiles/package.mask:
# Sergey Popov <
pink...@gentoo.org> (28 Aug 2014)
# Security mask, wrt bug #519650
# If your application is broken due to this mask,
# please file a separate bug report
For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.
===========================================================
我的问题:为什么 Portage 不能很好地处理这次升级?像其它包一样,安装新版的,然后卸载掉旧版的?
我以前也遇到过一些类似的包,处理的方式都是先卸载掉旧的,然后就能顺利升级了。可是这次是遇到 Perl,
我担心会搞坏系统就不敢这么做了。
emerge -av --update --deep dev-lang/perl 也是同样的问题。
emerge -av --update --deep @world 可以解决问题。
可是我又不想升级@world。请问在此种情况下,应该如何优雅地、合乎情理的处理这次升级问题?