升级Gentoo

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Upgrading Gentoo and the translation is 46% complete.

本文档解释了新的 Gentoo 版本如何影响现有安装。

升级

思想

在 Gentoo 领域,升级的概念与 Linux 世界的其他地方相比完全不同。众所周知,Gentoo 从未接触过“经典”的软件升级方式:等待新版本、下载、刻录、放入光驱,然后按照升级说明进行操作。

Gentoo users know however that this process is extremely frustrating for power users that want to live on the bleeding edge. Even power users from other distributions probably share the same feelings, given the popularity and spread of tools like apt or apt-rpm which make it possible to have quick and frequent updates. However, no distribution is more suited than Gentoo to satisfy these kind of demanding users. From the beginning, Gentoo was designed around the concept of fast, incremental updates.

理想情况下,用户安装一次软件,从不担心发布:只需按照 Gentoo 手册 中的 Portage 介绍 中的说明进行操作,该说明解释了如何保持系统处于最新状态。虽然这是通常的方式,但有时会对核心系统进行更改,这需要手动完成更新。

发布和特性配置文件

关于 Gentoo 发布过程的一个反复出现的问题是:“如果新版本不是为了让用户更新软件,为什么要频繁推出新版本?”有多种原因:

  • 新版本意味着带有错误修正和更多功能的新安装 CD
  • 新版本提供了一组更新的 GRP 包,以便选择“快速方式”安装(stage3 + 预编译包)的用户最终得到一个未过时的系统
  • 最后,新版本可能会不时实现一些与以前版本不兼容的功能

当一个版本包含新的不兼容特性,或者提供了一组深入修改系统行为的核心包和设置时,我们说它提供了一个新的“特性配置文件”。

特性配置文件 是一组配置文件,存储在 /usr/portage/profiles 的子目录中,描述诸如被视为“系统”包的 ebuild 等内容,默认情况下的 USE 标志、虚拟包的默认映射以及系统运行的体系结构。

The profile in use is determined by the symbolic link /etc/portage/make.profile, which points to a subdirectory of /usr/portage/profiles which holds the profile files. For instance, the default x86 13.0 profile can be found at /usr/portage/profiles/default/linux/x86/13.0. The files in the parent directories are part of the profile as well (and are therefore shared by different subprofiles). This is why we call these cascaded profiles.

Profiles obsoleted by new ones are kept in /usr/portage/profiles along with the current ones, but they are marked as deprecated. When that happens a file named deprecated is put in the profile directory. The content of this file is the name of the profile that should be "upgraded to"; Portage uses this information to automatically warn administrators when they should update to a new profile.

There are various reasons that a new profile may be created: the release of new versions of core packages (such as sys-apps/baselayout, sys-devel/gcc, or sys-libs/glibc) that are incompatible with previous versions, a change in the default USE flags or in the virtual mappings, or maybe a change in system-wide settings.

紧跟新版本

不更改特性配置文件的版本

如果一个新的 Gentoo 版本不包含一个新的特性配置文件,那么就假装它从未发生过。 :)

When the installed packages are upgraded as explained in the Gentoo Handbook, then the system will be exactly the same as one that has been installed using the new release.

Releases with profile changes

如果是发布(例如 13.0 为 x86)引入了一个新配置文件,那么就可以选择迁移到新配置文件。

Generally, such migrations are not mandatory, and systems can continue to use the old profile - just update the packages as explained in the Gentoo Handbook.

但是,Gentoo 强烈建议更新已弃用的配置文件。当这种情况发生时,它意味着 Gentoo 开发人员不再计划支持它。

When a profile migration is apparent, then the upgrade has to be executed manually. The way to update may vary significantly from release to release; it depends on how deep the modifications introduced in the new profile are.

In the simplest case users only have to change the /etc/portage/make.profile symlink, in the worst case they may have to recompile the entire system from scratch while doing a neat voodoo dance. Migration is usually covered in the release notes. The necessary instructions are explained further in this guide.

支持的配置文件

要查看支持的配置文件列表,请使用 eselect(可以使用 emerge eselect 安装):

root #eselect profile list

从旧系统升级

Some systems are too old to just switch the profile. Newer profiles might need more recent Portage versions or other software that cannot be installed anymore because the package definitions (ebuilds) for those older software versions are not available anymore.

If this is the case, the system should first receive older Portage tree snapshots and upgrade at least Portage (but preferably all packages in the system set), gradually increasing the Portage tree snapshot date until it is recent enough to follow the profile switching instructions again:

root #mv /usr/portage /usr/portage.latest
root #tar xjpf /path/to/portage-20090720.tar.bz2 -C /usr
root #emerge -u portage

Older snapshots are often still available on some mirrors on the Internet or on specific locations dedicated for this purpose. It is recommended to verify the integrity of those files to make sure they are not tampered with:

root #gpg --verify portage-20090720.tar.bz2.gpgsig portage-20090720.tar.bz2

Although the release signing keys might be expired, the signature should still be OK.

从(非常)旧的系统升级

Sometimes, systems are too old to easily upgrade. The upgrade path might need intermediate versions of software (such as portage) that does not exist any more, requiring to update the portage tree in steps (for instance incremental tree updates with steps of 3 to 4 months).

To upgrade such systems, a recent stage3 can be used to update the system. Instructions for that are given in the Updating old systems section.

配置文件更新说明

通用信息

重要
确保在执行任何配置文件的更改之前已同步 Gentoo 主存储库(Portage 树)。

首先,运行 emerge eselecteselect 程序使查看和选择配置文件简单更,无需手工创建或删除符号链接。

root #eselect profile list
root #eselect profile set <number>

手动更改配置文件仍然支持:

root #rm /etc/portage/make.profile
root #cd /etc/portage
root #ln -s ../../usr/portage/profiles/<selected profile> make.profile
Note
There are desktop and server subprofiles for most architectures. Examine these profiles carefully, as they may serve the requirements better than the extremely minimal default profiles.
Note
The developer subprofile is specifically for Gentoo Linux development tasks. It is not meant to help set up general development environments.

更新到 2008.0、2007.0 或 2006.1

Be aware that, if an upgrade from these profiles is selected, that they expect the system to be set to a Unicode locale by default; specifically that UNICODE="yes" is set in /etc/rc.conf. For this to work, a Unicode locale for the system must be created. Please read the UTF-8 article to learn how to create the proper locale.

Alternatively, if setting a locale is not preferred, then users need to specify UNICODE="no" in /etc/rc.conf, and re-emerge sys-apps/baselayout (or wait until the next baselayout update) with the -unicode USE flag. This can be accomplished through:


root #echo "sys-apps/baselayout -unicode" >> /etc/portage/package.use
root #emerge --ask sys-apps/baselayout
  • or setting it globally for all packages by adding it to the USE variable in /etc/portage/make.conf:
FILE /etc/portage/make.confDisable Unicode support globally
USE="-unicode"
root #emerge --ask sys-apps/baselayout
Note
Users updating to a 2007.0 profile on the SPARC architecture will need to follow the GCC Upgrading Guide, as gcc-4 is the default compiler.

Finally, follow the general upgrade instructions for updating the profile.

更新到 2006.0

To switch to the 2006.0 profile, point the /etc/portage/make.profile symlink to the new location. Make sure Portage is updated before changing the profile.

root #rm /etc/portage/make.profile
root #ln -s ../usr/portage/profiles/<selected profile> /etc/portage/make.profile

alpha - Users that use a 2.4 kernel or don't want to use NPTL should use the default-linux/alpha/no-nptl profile. More information is available in the alpha release notes.

ppc - The merge of the ppc32 and ppc64 profiles went forward. The ppc32 profile has been changed in a way that offers a minimalistic generic profile for all purposes, located in default-linux/ppc/ppc32. The release-dependent profile is optimized for desktop-usage and located in default-linux/ppc/ppc32/2006.0. There are some subprofiles available for G3 and G4 processors, and G3/Pegasos and G4/Pegasos for the Pegasos Open Desktop Workstation. Make sure to choose the correct subprofile for the system when migrating to a 2006.0 profile.

sparc - Upgrading to the 2.4 -kernel based 2006.0/2.4 profile requires manual user intervention (unmerging Java stuff) and an emerge -e @world because of the GCC upgrade. Upgrading to the 2.6 -kernel based 2006.0 profile which is not considered stable also requires an entry in /etc/portage/package.unmask to unmask a 2.6 version of sys-kernel/gentoo-sources and a full rebuild.

All other archs - There are no fundamental changes in this profile. No specific action needs to be performed.

更新到 2005.1

To switch to the 2005.1 profile, point the /etc/portage/make.profile symlink to the new location. Make sure Portage is updated before changing the profile.

root #rm /etc/portage/make.profile
root #ln -s ../usr/portage/profiles/<selected profile> /etc/portage/make.profile

All archs - There are no fundamental changes in this profile. No specific action needs to be performed.

ppc - With the 2005.1 release, the ppc and ppc64 profiles were merged and a number of subprofiles for specific subarchitectures were created. Make sure to choose the correct subprofile for the system when migrating to a 2005.1 profile.

更新到 2005.0

With the introduction of 2005.0, several architectures have decided to define additional profiles. Make sure to read the description of said profiles before deciding to migrate to one of them. Most architectures now also default to the 2.6 kernel tree where 2.4 was chosen previously.

Some architectures require a bit more actions to be completed in order to convert from one profile to another. If that is the case, the step-by-step guides are linked from the table.

Profile Description Specific upgrade guide
default-linux/alpha/2005.0 Default Alpha 2005.0 profile for 2.6 kernels
default-linux/alpha/2005.0/2.4 Alpha 2005.0 profile for 2.4 kernels
default-linux/amd64/2005.0 Default AMD64 2005.0 profile for 2.6 kernels
default-linux/amd64/2005.0/no-multilib AMD64 2005.0 profile for multilib-disabled system installations
default-linux/arm/2005.0 Default ARM 2005.0 profile for 2.6 kernels
default-linux/hppa/2005.0 Default HPPA 2005.0 profile for 2.6 kernels
default-linux/hppa/2005.0/2.4 HPPA 2005.0 profile for 2.4 kernels
default-linux/mips/2005.0 Default MIPS 2005.0 profile
default-linux/mips/cobalt/2005.0 Cobalt specific MIPS 2005.0 profile
default-linux/mips/mips64/n32/2005.0 2005.0 profile for n32-supporting MIPS platforms
default-linux/mips/mips64/ip28/2005.0 Indigo2 Impact specific 64-bit 2005.0 profile
default-linux/mips/mips64/2005.0 64-bit MIPS 2005.0 profile
default-linux/ppc/2005.0 Default PPC 2005.0 profile for 2.6 kernels
default-linux/ppc64/2005.0 Default PPC64 2005.0 profile for 2.6 kernels
default-linux/s390/2005.0 Default S390 2005.0 profile
default-linux/sparc/sparc32/2005.0 Default SPARC 32-bit 2005.0 profile
default-linux/sparc/sparc64/2005.0 Default SPARC 64-bit 2005.0 profile
default-linux/x86/2005.0 Default x86 2005.0 profile for 2.6 kernels
default-linux/x86/2005.0/2.4 x86 2005.0 profile for 2.4 kernels

To switch to the selected profile, point the /etc/portage/make.profile symlink to the new location. Make sure Portage is updated before changing the profile!

root #rm /etc/portage/make.profile
root #ln -s ../usr/portage/profiles/<selected profile> /etc/portage/make.profile

When an upgrade is planned from a Linux 2.4-based system to a 2.6 kernel, make sure to read our Gentoo Linux 2.6 Migration Guide.

更新到 2004.3

With the introduction of the 2004.3 profiles, users are not going to see huge modifications of their systems (see below for details). However, Gentoo developers decided to push out this new profile and to deprecate quite a few of the old ones to speed up the adoption of stacked profiles, that is, the profiles that follow the new layout of the /usr/portage/profiles directory, for instance /usr/portage/profiles/default-linux/x86/2004.3 (supported by Portage 2.0.51 or later).

To switch to the 2004.3 profile, point the /etc/portage/make.profile symlink to the new location:

Warning
Don't forget to upgrade Portage before changing the profile!
root #rm /etc/portage/make.profile
root #ln -s ../usr/portage/profiles/default-linux/<arch>/2004.3 /etc/portage/make.profile

All archs - As said above, there are no big changes introduced in this profile. However, it should be noted that sys-apps/slocate (deprecated) and net-misc/dhcpcd are no longer considered system packages. This means that during a emerge --depclean, Portage will try to remove them from the system. If any of those packages are needed, add them to /var/lib/portage/world after the profile switch, or manually emerge them.

ppc - sys-fs/udev is now the default instead of sys-fs/devfs (deprecated) for newly installed machines. This has no effect on already installed machines, though.

Updating Portage to support cascading profiles

Although this section does not seem to integrate well in this upgrading guide, it is quite important. Any profile listed above this section requires a Portage version that supports cascading profiles. However, some obsoleted profiles don't allow the user to upgrade Portage or the user is using a profile that isn't available anymore - any attempt to upgrade Portage will result in a failure.

To work around this problem, users can set a temporary symbolic link to the obsolete profile, allowing them to upgrade their Portage after which they can continue with the upgrade procedure set forth in this guide. Please substitute <arch> with the respective system architecture:

root #rm /etc/portage/make.profile
root #cd /etc/portage
root #ln -sf ../usr/portage/profiles/obsolete/<arch> make.profile
root #emerge -n '>=sys-apps/portage-2.0.51'

更新到 2004.2

To switch to the 2004.2 profile, point the /etc/portage/make.profile symlink to the new location:

Warning
Don't forget to upgrade Portage before changing the profile!
root #rm /etc/portage/make.profile
root #ln -s ../usr/portage/profiles/default-linux/<arch>/2004.2 /etc/portage/make.profile

x86 - This profile changes the default X11 implementation from x11-base/xfree (deprecated) to x11-base/xorg-x11. This change only touches the default value, and is only relevant for those who have not installed an X server yet. If one is already installed, then it will not affect the system at all; users are free to switch from one X server to the other exactly as before.

amd64 - There are no fundamental changes from previous profiles, no specific action needs to be performed.

更新到 2004.0

To switch to the 2004.0 profile, point the /etc/portage/make.profile symlink to the new location:

root #rm /etc/portage/make.profile
root #ln -s ../usr/portage/profiles/default-<arch>-2004.0 /etc/portage/make.profile

All archs - There are no fundamental changes from previous profiles, no specific action needs to be performed.

从早于 1.4 的配置文件更新到 1.4

The instructions for this upgrade are quite complex, and can be found here.

更新旧的系统

Idea of the upgrade

The idea with this upgrade approach is that we create an intermediate build chroot in which a recent stage3 is extracted. Then, using the tools available in the stage3 chroot we upgrade the packages on the live system.

Warning
The commands below might be incomplete and serve more as a guidance rather than work instructions. Unless the approach is clear, it might be faster to just backup the important files and re-install Gentoo.

Preparing the intermediate build chroot

Let's first create the intermediate build chroot location, say /mnt/build, and extract a recent stage3 archive into it.

root #mkdir -p /mnt/build
root #tar -xf /path/to/stage3-somearch-somedate.tar.bz2 -C /mnt/build
root #mount --rbind /dev /mnt/build/dev
root #mount --rbind /proc /mnt/build/proc
root #mount --rbind /sys /mnt/build/sys

Next, we create a mount point inside this chroot environment, on which we then bind-mount the live (old) environment.

root #mkdir -p /mnt/build/mnt/host
root #mount --rbind / /mnt/build/mnt/host

So now the live (old) system is also reachable within /mnt/build/mnt/host. This will allow us to reach the live (old) system and update the packages even when chrooted inside the intermediate build chroot.

网络、chroot 和更新

新安装需要访问网络,因此复制网络相关的信息:

root #cp -L /etc/resolv.conf /mnt/build/etc/

Now chroot into the intermediate build location, and start updating vital packages on the live system, until the live system can be updated from within the live system (rather than through the intermediate build chroot):

root #chroot /mnt/build
root #source /etc/profile
root #export PS1="(chroot) ${PS1}"
(chroot) root #emerge --sync


Now start building packages into the (old) live system. If Portage is old or missing, it is a good idea to start with that:

(chroot) root #emerge --root=/mnt/host --config-root=/mnt/host --verbose --oneshot sys-apps/portage

Keep this chrooted session open and try to update the (old) live system. When failures occur, use this chrooted session to update packages using the build tools available in the intermediate build chroot (which includes recent sys-libs/glibc, sys-devel/gcc, etc.). Tools can be added as needed to the build chroot.

重要
别忘了将 --root=/mnt/host --config-root=/mnt/host 添加到 chroot 中执行的所有 emerge 命令!否则,将更新 chroot 本身而不是(旧的)实时系统。

For some installations it may be necessary to update configuration files in order to install new software. Make the changes in the chroot environment.

To get the system fully up-to-date before exiting the root, build the @world set (all packages) into the (old) live system:

(chroot) root #emerge --root=/mnt/host --config-root=/mnt/host --update --newuse --deep --ask @world

一旦完成,系统现已应是最新!


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Gregorio Guidi, Chris Gianelloni, Joshua Saddler
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.