Let me give you a fresh (2022) look on this, from a "user perspective":
Some CAUTION is needed here:
Regarding CAUTION:
So, are you ready?
###########################################
Now, to make some more progress, I tried Perl:
First upgrade perl-cleaner:
Code: Select all
emerge -1av app-admin/perl-cleanerCode: Select all
perl-cleaner --allCode: Select all
* Removing perl-core packages from world file
* emerge --deselect perl-core/File-Temp
>>> No matching atoms found in "world" favorites file...
* Updating installed Perl virtuals
* emerge -u1 virtual/perl-Archive-Tar virtual/perl-Attribute-Handlers virtual/perl-AutoLoader virtual/perl-CPAN-Meta virtual/perl-CPAN-Meta-Requirements virtual/perl-CPAN-Meta-YAML virtual/perl-Carp virtual/perl-Compress-Raw-Bzip2 virtual/perl-Compress-Raw-Zlib virtual/perl-DB_File virtual/perl-Data-Dumper virtual/perl-Devel-PPPort virtual/perl-Digest virtual/perl-Digest-MD5 virtual/perl-Digest-SHA virtual/perl-Encode virtual/perl-Exporter virtual/perl-ExtUtils-CBuilder virtual/perl-ExtUtils-Constant virtual/perl-ExtUtils-Install virtual/perl-ExtUtils-MakeMaker virtual/perl-ExtUtils-Manifest virtual/perl-ExtUtils-ParseXS virtual/perl-File-Path virtual/perl-File-Spec virtual/perl-File-Temp virtual/perl-Getopt-Long virtual/perl-IO virtual/perl-IO-Compress virtual/perl-IO-Socket-IP virtual/perl-IO-Zlib virtual/perl-IPC-Cmd virtual/perl-JSON-PP virtual/perl-Locale-Maketext virtual/perl-Locale-Maketext-Simple virtual/perl-MIME-Base64 virtual/perl-Math-BigInt virtual/perl-Math-BigInt-FastCalc virtual/perl-Math-BigRat virtual/perl-Math-Complex virtual/perl-Module-CoreList virtual/perl-Module-Load virtual/perl-Module-Load-Conditional virtual/perl-Module-Loaded virtual/perl-Module-Metadata virtual/perl-Params-Check virtual/perl-Parse-CPAN-Meta virtual/perl-Perl-OSType virtual/perl-Pod-Escapes virtual/perl-Pod-Parser virtual/perl-Scalar-List-Utils virtual/perl-Socket virtual/perl-Storable virtual/perl-Sys-Syslog virtual/perl-Term-ANSIColor virtual/perl-Test-Harness virtual/perl-Test-Simple virtual/perl-Text-Balanced virtual/perl-Text-ParseWords virtual/perl-Text-Tabs+Wrap virtual/perl-Time-HiRes virtual/perl-Time-Local virtual/perl-Time-Piece virtual/perl-XSLoader virtual/perl-autodie virtual/perl-bignum virtual/perl-if virtual/perl-libnet virtual/perl-parent virtual/perl-podlators virtual/perl-version
...
emerge -v1 --backtrack=200 --selective=n app-office/gnumeric:0 net-analyzer/net-snmp:0 www-servers/nginx-unit:0 dev-db/postgresql:11 dev-db/postgresql:9.5 dev-db/postgresql:12 dev-db/postgresql:10 media-gfx/imagemagick:0 media-gfx/graphviz:0 dev-tcltk/tclperl:0 net-nds/openldap:0 www-apache/mod_perl:1 app-editors/gvim:0 app-editors/vim:0
Code: Select all
emerge: there are no ebuilds to satisfy "dev-db/postgresql:9.5".
* perl-cleaner is stopping here:
* Fix the problem and start perl-cleaner again.
*
*
* Note that upgrading Perl with emerge option --ignore-built-slot-operator-deps=y is not supported.
Because postgresql-9.5 uses Perl somewhere, I *have* to rebuild it!
But postgresql-9.5 is out of the Portage tree and even if I had the
ebuild, it would probably not work because it would use some old
EAPI or old eclasses, or both. Now what? Am I forced to either
- not upgrade Perl as long as I use postgresql-9.5 (HOW IDIOTIC IS THAT?)
- remove postgresql-9.5 just because I upgraded Perl (HOW EVEN MORE IDIOTIC IS THAT?)
How can a distant program (Perl) decide over the fate of another
distant program (Postgresql) and vice versa? HOW IDIOTIC IS THAT?
And all this, only because either postgresql had the 'perl' USE flag,
or (who knows) perl the 'postgresql' flag - give me a break!
So, to upgrade Perl, I need
- to uninstall postgreql:9.5
- to upgrade openssl, which needs to upgrade
- all packages with the ssl USE flag too
- to upgrade all virtuals in the above list of perl-cleaner
- to also upgrade all programs in the extra list of perl-cleaner
- ...anything else?
Therefore, I did
Code: Select all
emerge -av --depclean postgresql:9.5(notice that I took away postgresql:9.5):
Code: Select all
emerge -av1 --backtrack=200 --selective=n app-office/gnumeric:0 net-analyzer/net-snmp:0 www-servers/nginx-unit:0 dev-db/postgresql:11 dev-db/postgresql:12 dev-db/postgresql:10 media-gfx/imagemagick:0 media-gfx/graphviz:0 dev-tcltk/tclperl:0 net-nds/openldap:0 www-apache/mod_perl:1 app-editors/gvim:0 app-editors/vim:0
just because vim has a 'ruby' USE flag:
Code: Select all
!!! All ebuilds that could satisfy "virtual/rubygems" have been masked.
!!! One of the following masked packages is required to complete your request:
- virtual/rubygems-16::gentoo (masked by: backtracking: slot conflict)
- virtual/rubygems-15::gentoo (masked by: backtracking: slot conflict)
(dependency required by "app-editors/gvim-8.2.3950::gentoo[ruby]" [ebuild])
(dependency required by "app-editors/gvim:0" [argument])
- and, of course, all packages that have the ruby flag set.
I thus set on to upgrade ruby...
###########################################
Do you get the idea? That's upgrade hell! But it only started!
I will spare you the details of upgrading Ruby and ruby-related packages, since they would require me to post the next ~600 lines of my notes - and they are off-topic here. Let me only say that it cost me a whole day to sort it out. Here is the end of my notes regarding ruby:
###########################################
...[600 lines later:]
Code: Select all
emerge -1av dev-ruby/rack dev-ruby/rdoc dev-ruby/json dev-ruby/xmlrpc dev-ruby/test-unit dev-ruby/power_assert dev-ruby/rake dev-ruby/net-telnet dev-ruby/minitest dev-ruby/rails dev-ruby/jquery-rails dev-ruby/railties dev-ruby/actionpack:5.2 dev-ruby/actionpack:6.1 dev-ruby/rake-compiler
Of course I accepted the offer - and half(!) and hour later the battle was over!
Now, think a moment about this: a day's struggle for for an hour's battle!
Not even a whole hour's! This CANNOT be accepted as "normal"! This is NOT fun!
###########################################
Of course it's not fun - it's upgrade hell!
Let me now resume from the point where Ruby and its entourage got updated and it was Perl's turn again:
###########################################
NEXT: Perl (again!)
Code: Select all
emerge -1av $(equery list 'dev-perl/*' | sed -e 's/.*dev/dev/; s/-[0-9][0-9]*.*$//') $(equery list 'virtual/perl*' | sed -e 's/-[0-9][0-9]*.*$//')
But it failed due to slot conflicts with installed packages that
required the same slot of Perl that there was at the time
*they* were built. This seemed a great opportunity to test my
understanding of the portage workings and add the
--ignore-built-slot-operator-deps=y option. ALAS, I read in various
messages regarding Perl upgrade:
* Note that upgrading Perl with the merge option
* --ignore-built-slot-operator-deps=y is not supported.
So I had to bite the bullet (again!) and make a package list
out of the long list that 'emerge' printed at the end:
Code: Select all
!!! The slot conflict(s) shown above involve package(s) which may need to
!!! be rebuilt in order to solve the conflict(s). However, the following
!!! package(s) cannot be rebuilt for the reason(s) shown:
(net-print/cups-filters-1.27.4:0/0::gentoo, installed): ebuild is masked or unavailable
(net-analyzer/net-snmp-5.8-r5:0/35::gentoo, installed): ebuild is masked or unavailable
(sci-libs/gdal-3.0.4-r1:0/3.0::gentoo, installed): ebuild is masked or unavailable
(app-office/gnumeric-1.12.46:0/0::gentoo, installed): ebuild is masked or unavailable
(www-servers/nginx-unit-1.17.0:0/0::gentoo, installed): ebuild is masked or unavailable
(net-nds/openldap-2.4.50:0/0::gentoo, installed): ebuild is masked or unavailable
(net-analyzer/nagios-core-4.4.5-r6:0/0::gentoo, installed): ebuild is masked or unavailable
(dev-perl/gnome2-perl-1.46.0:0/0::gentoo, installed): matched by --exclude argument
(app-text/po4a-0.47-r1:0/0::gentoo, installed): ebuild is masked or unavailable
(sys-libs/libapparmor-2.13.4:0/0::gentoo, installed): ebuild is masked or unavailable
(media-gfx/graphviz-2.42.3:0/0::gentoo, installed): ebuild is masked or unavailable
(dev-vcs/subversion-1.12.2:0/0::gentoo, installed): ebuild is masked or unavailable
(dev-python/subunit-1.2.0-r1:0/0::gentoo, installed): ebuild is masked or unavailable
(net-fs/samba-4.11.6-r2:0/0::gentoo, installed): ebuild is masked or unavailable
(mail-filter/spamassassin-3.4.4:0/0::gentoo, installed): ebuild is masked or unavailable
(media-gfx/imagemagick-7.0.10.7-r1:0/7.0.10::gentoo, installed): ebuild is masked or unavailable
(app-backup/amanda-3.5.1-r1:0/0::gentoo, installed): ebuild is masked or unavailable
(net-analyzer/rrdtool-1.6.0-r1:0/8.0.0::gentoo, installed): ebuild is masked or unavailable
(media-gfx/graphicsmagick-1.3.35:0/1.3::gentoo, installed): ebuild is masked or unavailable
(dev-vcs/git-2.26.2:0/0::gentoo, installed): ebuild is masked or unavailable
(virtual/perl-Pod-Parser-1.630.0-r6:0/0::gentoo, installed): matched by --exclude argument
(app-arch/rpm-4.14.1:0/0::gentoo, installed): ebuild is masked or unavailable
(media-libs/exiftool-11.93:0/0::gentoo, installed): ebuild is masked or unavailable
(app-editors/gvim-8.2.0360:0/0::gentoo, installed): ebuild is masked or unavailable
(dev-perl/PortageXS-0.02.10-r4:0/0::gentoo, installed): matched by --exclude argument
(sys-process/parallel-20191022:0/0::gentoo, installed): ebuild is masked or unavailable
(media-gfx/graphite2-1.3.13:0/0::gentoo, installed): ebuild is masked or unavailable
(dev-perl/gnome2-vfs-perl-1.83.0:0/0::gentoo, installed): matched by --exclude argument
(app-editors/vim-8.2.0360:0/0::gentoo, installed): ebuild is masked or unavailable
(dev-db/postgresql-12.2:12/12::gentoo, installed): ebuild is masked or unavailable
"may need to be rebuilt in order to solve the conflict" printed by
'emerge' at the end in blue color:
Copy the list into vi, then do:
Code: Select all
1,$s/^ *(\(.*\)-[0-9][0-9]*.*/\1/+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
So I tried
Code: Select all
emerge -1av --exclude 'virtual/perl-Pod-Parser dev-perl/PortageXS dev-perl/gnome2-perl dev-perl/gnome2-vfs-perl' $(equery list 'dev-perl/*' | sed -e 's/.*dev/dev/; s/-[0-9][0-9]*.*$//') $(equery list 'virtual/perl*' | sed -e 's/.*dev/dev/; s/-[0-9][0-9]*.*$//') net-print/cups-filters net-analyzer/net-snmp sci-libs/gdal app-office/gnumeric www-servers/nginx-unit net-nds/openldap net-analyzer/nagios-core dev-perl/gnome2-perl app-text/po4a sys-libs/libapparmor media-gfx/graphviz dev-vcs/subversion dev-python/subunit net-fs/samba mail-filter/spamassassin media-gfx/imagemagick app-backup/amanda net-analyzer/rrdtool media-gfx/graphicsmagick dev-vcs/git virtual/perl-Pod-Parser app-arch/rpm media-libs/exiftool app-editors/gvim dev-perl/PortageXS sys-process/parallel media-gfx/graphite2 dev-perl/gnome2-vfs-perl app-editors/vim dev-db/postgresql
AND they NEEDED to be rebuilt with the newer Perl:
Code: Select all
emerge -av --depclean dev-perl/gnome2-perl dev-perl/gnome2-vfs-perl
emerge -av --depclean virtual/perl-Pod-Parser dev-perl/PortageXS
...but what to do if there are no ebuilds AND they must be rebuilt?
Whatever...I did:
Code: Select all
emerge -av --depclean app-portage/perl-info
emerge -av --depclean dev-perl/PortageXS
which I *had* to hard-remove, because, even though all
packages that depended on it still had ebuilds, it itself
did not - so what else can one do, other than
Code: Select all
emerge -C virtual/perl-Pod-ParserO.K., before continuing, I thought I would clean up the LUA MESS
- that's because a few lua packages stood in the way for the Perl upgrade:
Code: Select all
emerge -1av dev-lang/lua:5.1::gentoo dev-lang/lua:5.4::gentoo media-video/vlc dev-lua/lua-zlib app-admin/conky dev-lua/lpeg media-video/mpv app-text/podofo x11-misc/devilspie2 app-editors/vim app-misc/gpick dev-lua/luajson media-libs/libquvi dev-lua/LuaBitOp dev-lua/luaexpat dev-lua/luasocket
otherwise this would NEVER END:
Code: Select all
emerge -1av --nodeps dev-lang/lua:5.1::gentoo dev-lang/lua:5.4::gentoo media-video/vlc dev-lua/lua-zlib app-admin/conky dev-lua/lpeg media-video/mpv app-text/podofo x11-misc/devilspie2 app-editors/vim app-misc/gpick dev-lua/luajson media-libs/libquvi dev-lua/LuaBitOp dev-lua/luaexpat dev-lua/luasocket
BACK TO PERL HELL:
Code: Select all
emerge -1av --exclude 'virtual/perl-Pod-Parser dev-perl/PortageXS dev-perl/gnome2-perl dev-perl/gnome2-vfs-perl' $(equery list 'dev-perl/*' | sed -e 's/.*dev/dev/; s/-[0-9][0-9]*.*$//') $(equery list 'virtual/perl*' | sed -e 's/.*dev/dev/; s/-[0-9][0-9]*.*$//') net-print/cups-filters net-analyzer/net-snmp sci-libs/gdal app-office/gnumeric www-servers/nginx-unit net-nds/openldap net-analyzer/nagios-core app-text/po4a sys-libs/libapparmor media-gfx/graphviz dev-vcs/subversion dev-python/subunit net-fs/samba mail-filter/spamassassin media-gfx/imagemagick app-backup/amanda net-analyzer/rrdtool media-gfx/graphicsmagick dev-vcs/git app-arch/rpm media-libs/exiftool app-editors/gvim sys-process/parallel media-gfx/graphite2 app-editors/vim dev-db/postgresql:10 dev-db/postgresql:11 dev-db/postgresql:12 dev-db/postgresql:13 app-vim/vim-latex net-analyzer/nagios games-arcade/frozen-bubble dev-db/percona-toolkit www-apache/mod_perl
Total: 578 packages (507 upgrades, 55 new, 2 in new slots, 14 reinstalls), Size of downloads: 376,745 KiB
Conflict: 3 blocks (all satisfied)
Of course, I accepted this great offer...
...and went to sleep, letting it work for me all night.
###########################################
That was another day - I am currently on day 6 and still have not managed to get not even a list with blockers from portage when I try to upgrade @world.
I cannot resist, I will say it:
Gentoo developers, maintainers, users and respective wannabes: unite! We have to make Gentoo fun again!




