Upgrade Instructions/Next

From Funtoo
Jump to navigation Jump to search

We do not recommend upgrading 1.4-release to next in-place. These instructions exist for those who are interested in attempting this. It is highly recommended to install next-release as a fresh installation. Several users have reported complications during upgrade. It is more likely to work seamlessly on headless server systems and is not supported on desktops. Please back up your system before proceeding. If you proceed, you take full responsibility for the outcome and any problems encountered.


The goal of these instructions is to provide Funtoo Linux users with a reliable, consistent set of instructions for upgrading Funtoo Linux from 1.4 to Next.

Note that while Portage has some ability to upgrade packages, it is not perfect at performing complex updates right now. One of the primary motivations to have official Funtoo releases is for the purpose of identifying these upgrade challenges and implement improvements to Portage and associated tools to make the process better. Before Portage can be made better, we need to start documenting the various commands required to perform these updates, and that is where these instructions come in.


With the intended purpose of these instructions in mind, it is recommended to perform a fresh install of Funtoo Linux Next if possible. This is not practical or feasible, follow the steps in this documentation to upgrade Funtoo Linux. The process is straightforward.

Please assist in ensuring that these instructions are complete, make changes to the page that are needed to make these instructions 100% reliable, and if the instructions seem to not work properly, please consider opening a bug at https://bugs.funtoo.org or asking for assistance at https://forums.funtoo.org or #funtoo on freenode. Do not make major changes to this document without first opening a bug related to the issue so your changes can be reviewed. Thank you!

Set Release and Sync

Use your favorite editor in /etc/ego.conf, set the release to Next:


release = next

Then, run ego sync:

root # ego sync

Then, run epro build next:

root # epro build next

Upgrade Toolchain

Funtoo next, gcc has been updated to 11.3.0 series by default, so lets take advantage of that, and also update binutils and glibc. Note that multiple versions of gcc, 11.3.0 and 9.2.0, may get pulled in in while upgrading gcc. Only 11.3.0 is needed in Funtoo next, so once 11.3.0 is installed, you may cancel the emerge of older versions of gcc to save time.

root # emerge -u1 gcc binutils glibc
root # source /etc/profile

World Update

Before starting the world update, it is a good idea to upgrade python. Do so as follows:

root # emerge -u =dev-lang/python-3*

Once this is done, we will temporarily want to tell emerge to build python modules for versions 3.7 and 3.9. We are doing this so that dependencies resolve correctly for installed packages still using old versions, and will "undo" this setting and rebuild these packages later:

root # export PYTHON_TARGETS="python3_7 python3_9"
root # emerge --nodeps dev-python/setuptools -1
root # emerge --nodeps dev-python/packaging -1
root # emerge --nodeps dev-python/setuptools_scm -1
root # emerge --nodeps dev-python/tomli -1
root # emerge dev-python/pip
root # emerge --update --newuse --deep --with-bdeps=y @world --exclude python:2.7

Make python 3.9 the default via eselect python:

root # eselect python set python3.9

At this point, you should be all set to perform a world update. We will exclude perl from upgrading now as we will do that near the end of the install.

root # emerge -auDN @world --jobs=3 --exclude dev-lang/perl

It seems that excluding perl can cause some issues with the dep graph currently. If that is the case you can try the complete world update.

root # emerge -auDN @world --jobs=3

With the upgrade to next, python-2.7 is now optional and is not included by default on our stage3's. The official python is 3.9, with 3.7 available as well. But some applications on your system may still require python-2.7:

root # emerge -C python:2.7
root # emerge --depclean

Perl Upgrade

If you have not excluded perl from the world update, you probably already have the current perl version installed. But you can verify that with

root # emerge -pv dev-lang/perl

If there is no update available you are good. Otherwise you need to install it with

root # emerge dev-lang/perl

followed by

root # perl-cleaner --all

to make sure that there are no outdated perl packages left.

If you have excluded perl from the world update you would have a complete but old perl installation. Now that things are upgraded, we can take care of perl, and rebuild all perl modules and perl-dependent things against the new perl:

root # emerge -u1 dev-lang/perl 
root # perl-cleaner --all

Finishing Steps

Update all python ebuilds:

root # unset PYTHON_TARGETS
root # emerge -auDN @world
root # eselect python cleanup

If you are using debian-sources-lts, it has now been updated to 5.18.16_p1. Edit /etc/boot.conf as necessary and run ego boot update to ensure the new kernel is booted upon next system startup.

root # ego boot update

etc-update and Reboot

Before rebooting, it is a good idea to run etc-update to apply updates to any configuration files that require updating:

root # etc-update

Now, you should be able to reboot into Funtoo Linux next:

root # reboot