Recently there was a problem with one compute node servers, which Gentoo (in fact, the chroot environment had not been updated for 3 years) could not emerge the new portage because it kept failing in the pkg_preinst with:
srv ~ # USE="-rsync-verify" emerge -va '=sys-apps/portage-2.3.76::gentoo' ..... ..... >>> Installing (1 of 1) sys-apps/portage-2.3.76::gentoo * checking 1999 files for package collisions 1000 files checked ... ^[[B>>> Merging sys-apps/portage-2.3.76 to / /usr/bin/python2.7: No module named _compat_upgrade * ERROR: sys-apps/portage-2.3.76::gentoo failed (preinst phase): * (no error message) * * Call stack: * ebuild.sh, line 133: Called pkg_preinst * environment, line 3238: Called die * The specific snippet of code: * env -u DISTDIR -u PORTAGE_OVERRIDE_EPREFIX -u PORTAGE_REPOSITORIES -u PORTDIR -u PORTDIR_OVERLAY PYTHONPATH="${D%/}${PYTHON_SITEDIR}${PYTHONPATH:+:${PYTHONPATH}}" "${PYTHON}" -m portage._compat_upgrade.default_locations || die; * * If you need support, post the output of `emerge --info '=sys-apps/portage-2.3.76::gentoo'`, * the complete build log and the output of `emerge -pqv '=sys-apps/portage-2.3.76::gentoo'`. * The complete build log is located at '/var/tmp/portage/sys-apps/portage-2.3.76/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/sys-apps/portage-2.3.76/temp/environment'. * Working directory: '/var/tmp/portage/._portage_reinstall_.RKkxLW/pym' * S: '/var/tmp/portage/sys-apps/portage-2.3.76/work/portage-2.3.76' !!! FAILED preinst: 1 >>> Failed to install sys-apps/portage-2.3.76, Log file: >>> '/var/tmp/portage/sys-apps/portage-2.3.76/temp/build.log'
Note this is the installation phase, where everything from the build process passes smoothly, but it fails to install it with some vague error of a dying line with a couple of python and portage environments. The problem is the current portage does not support EAPI 6 and 7 and some packages were unable to be installed!
And we fixed the issue by just using the method described in our previous article – Fix your broken or old portage in Gentoo, fix the emerge command
Cloning a new portage software and using it to emerge (install) a newer (or reinstall the current) portage in the system to fix the system’s portage and the emerge command:
cd /root git clone https://anongit.gentoo.org/git/proj/portage.git /root/portage/bin/emerge --sync eselect profile set default/linux/amd64/17.1 /root/portage/bin/emerge -v portage
Now the latest and stable Gentoo profile is 17.1, so we set it to be sure we use it (in future this may change).
Keep on reading!