You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
4.9 KiB
105 lines
4.9 KiB
5 months ago
|
default/linux/amd64/23.0/split-usr/no-multilib/hardened
|
||
|
|
||
|
A profile upgrade to version 23.0 is available for your architecture.
|
||
|
The new 23.0 profiles enable some toolchain hardening features and
|
||
|
performance enhancements by default, and standardize settings.
|
||
|
You can find the list of changes on the wiki tracking page [1].
|
||
|
|
||
|
Upgrade instructions
|
||
|
|
||
|
Note 1: If you have manually changed your CHOST to a value different from
|
||
|
what the stages and profiles set, you may have to do that in the future too.
|
||
|
In that case you should know what you are doing, hopefully; please read the
|
||
|
instructions with a critical eye then.
|
||
|
|
||
|
Note 2: In case you are already familiar with binary packages, you should be
|
||
|
able to add "--getbinpkg" to the emerge calls to speed things up.
|
||
|
The use of binary packages is completely optional though, and also not
|
||
|
as much tested as the source-based upgrade path yet.
|
||
|
|
||
|
1. Ensure your system backups are up to date. Please also update
|
||
|
your system fully and depclean before proceeding.
|
||
|
glibc older than 2.36 and musl older than 1.2.4 is not supported anymore.
|
||
|
|
||
|
2. If you are still using one of the long-deprecated amd64 17.0 profiles
|
||
|
(other than x32 or musl), then first complete the migration to the
|
||
|
corresponding 17.1 profile. Instructions can be found at [3].
|
||
|
|
||
|
3. If you are currently using systemd in a split-usr configuration, then first
|
||
|
complete the migration to the corresponding merged-usr profile of the
|
||
|
same profile version. Details on how to do this can be found in the news
|
||
|
item [4].
|
||
|
If you are currently using openrc, migrate to 23.0 first, keeping your disk
|
||
|
layout. If you want to move from split-usr to merged-usr, do that afterwards.
|
||
|
|
||
|
4. Run "emerge --info" and note down the value of the CHOST variable.
|
||
|
|
||
|
5. Edit /etc/portage/make.conf; if there is a line defining the CHOST variable,
|
||
|
remove it. Also delete all lines defining CHOST_... variables.
|
||
|
|
||
|
6. Select the 23.0 profile corresponding to your current profile, either using
|
||
|
"eselect profile" or by manually setting the profile symlink.
|
||
|
Note that old profiles are by default split-usr and the 23.0 profiles by
|
||
|
default merged-usr. Do NOT change directory scheme now, since this will
|
||
|
mess up your system!
|
||
|
Instead, make sure that the new profile has the same property: for example,
|
||
|
OLD default/linux/amd64/17.1
|
||
|
==> NEW default/linux/amd64/23.0/split-usr
|
||
|
(added "split-usr")
|
||
|
OLD default/linux/amd64/17.1/systemd/merged-usr
|
||
|
==> NEW default/linux/amd64/23.0/systemd
|
||
|
(removed "merged-usr")
|
||
|
A detailed table of the upgrade paths can be found at [5]. Please consult it.
|
||
|
In some cases (hppa, x86) the table will tell you to pick between two choices.
|
||
|
What you need should be obvious from your *old* CHOST value (from step 4).
|
||
|
|
||
|
7. Delete the contents of your binary package cache at ${PKGDIR}
|
||
|
rm -r /var/cache/binpkgs/*
|
||
|
|
||
|
8. In the file or directory /etc/portage/binrepos.conf (if existing), update
|
||
|
the URI in all configuration such that they point to 23.0 profile binhost
|
||
|
directories. The exact paths can be found in the table at [5], too.
|
||
|
|
||
|
9. Rebuild or reinstall from binary (if available) the following packages in
|
||
|
this order, with the same version as already active:
|
||
|
emerge --ask --oneshot sys-devel/binutils
|
||
|
(you may have to run binutils-config and re-select your binutils now)
|
||
|
emerge --ask --oneshot sys-devel/gcc
|
||
|
(IMPORTANT: If this command wants to rebuild glibc first, do *not* let it do
|
||
|
that; instead, abort and try again with --nodeps added to the command line.)
|
||
|
(you may have to run gcc-config and re-select your gcc now)
|
||
|
and the C library, i.e. for glibc-based systems
|
||
|
emerge --ask --oneshot sys-libs/glibc
|
||
|
or for musl-based systems
|
||
|
emerge --ask --oneshot sys-libs/musl
|
||
|
|
||
|
10. Re-run "emerge --info" and check if CHOST has changed compared to step 4.
|
||
|
|
||
|
If the CHOST has NOT changed, skip to step 13 (env-update). Otherwise,
|
||
|
|
||
|
11. Recheck with binutils-config and gcc-config that valid installed versions
|
||
|
of binutils and gcc are selected.
|
||
|
|
||
|
12. Check /etc/env.d, /etc/env.d/binutils, and /etc/env.d/gcc for files that
|
||
|
refer to the *OLD* CHOST value, and remove them.
|
||
|
Examples how to do this can be found in the similar procedure at [6].
|
||
|
|
||
|
13. Run env-update && source /etc/profile
|
||
|
|
||
|
14. Re-emerge libtool:
|
||
|
emerge --ask --oneshot libtool
|
||
|
|
||
|
15. Just for safety, delete the contents of your binary package cache at
|
||
|
${PKGDIR} again:
|
||
|
rm -r /var/cache/binpkgs/*
|
||
|
|
||
|
16. Rebuild world:
|
||
|
emerge --ask --emptytree @world
|
||
|
|
||
|
[1] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_profile_transition
|
||
|
[2] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_profile_timeline
|
||
|
[3] https://www.gentoo.org/support/news-items/2019-06-05-amd64-17-1-profiles-are-now-stable.html
|
||
|
[4] https://www.gentoo.org/support/news-items/2022-12-01-systemd-usrmerge.html
|
||
|
[5] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_update_table
|
||
|
[6] https://wiki.gentoo.org/wiki/Changing_the_CHOST_variable#Verifying_things_work
|