Обновление 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 60% complete.
Outdated translations are marked like this.

У Gentoo есть собственный подход к обновлениям; данная статья объясняет, как обновлять систему Gentoo и как поддерживать её в актуальном состоянии.

It is important to keep Gentoo up to date. In addition to the need to have the latest security patches, Gentoo installations can get too out of sync with the current version and sometimes become complex to update.

Update Gentoo Linux between daily and weekly to keep a Gentoo Linux installation running smoothly with the latest security updates. Waiting more than a few weeks to update may make things a little more complicated when the update is attempted. Please don't synchronize more than once daily, to avoid strain on the servers.
Any instructions that only affect ten or more year old systems will not be retained here. See page history for previous versions.

Об архитектуре Gentoo и обновлениях

Gentoo differs from most other Linux distributions when it comes to updates. Most distributions have regular releases, every few months or years, which can be anticipated events for some distributions.

Gentoo, by contrast, is a rolling release distribution. There is no need to wait for a release to come out in order to get the latest version of packages - software can be installed as soon as it becomes stable. Gentoo was designed from the beginning around this concept of fast, incremental updates, and there are frequent updates to Gentoo software, with new and updated packages most days. Further information on Gentoo specifics can be found in the FAQ, about releases and Gentoo and what makes Gentoo different.

Как только программное обеспечение будет установлено, регулярные обновления будут поддерживать все пакеты в последних доступных версиях.

In rare cases, changes made to the core system, to certain packages, profile changes, or certain updates of Portage, may require manual intervention during or after an update. A news item will be published in such critical cases and/or will be signaled after a Gentoo repository synchronization. Always read and follow the news items and Portage messages.

Profiles are central to a Gentoo system because they can define core system functionality, and new profiles are made available when there are fundamental changes to the way Gentoo works. A profile is selected at install time, according to the intended use of the system and is usually only changed if necessary, or for an update.

Обновление пакетов

The Handbook has detailed information on updating the Gentoo repository and on updating the system. See man emerge for more detailed information. See repository synchronization for complete information on how to use emaint to synchronize repositories.

It is important to read and follow any and all news items that may be listed after performing a repository sync.

To update all installed packages to the latest available versions, first update the Gentoo repository with emaint:

root #emaint --auto sync

Или, в краткой форме:

root #emaint -a sync

This may output messages that should be read and followed, notably the news items previously mentioned. If config file updates are pending from a previous update, it may remind to update the config files.

Run emerge to update the whole system, with dependencies:

root #emerge --ask --verbose --update --deep --newuse @world

Или, с использованием коротких параметров:

root #emerge -avuDN @world

--changed-use may be used in place of --newuse, but only if you do not build binary packages. --changed-use will not trigger reinstallation when disabled USE flags are added or removed from a package. See the Binary package guide.

--with-bdeps=y can be used to update build time dependencies also.

Pay attention to any information provided by Portage at the end of the update. Some of this information may be available in the Portage log.

If Portage reports dependency issues, sometimes using the --backtrack=30 (or an even higher number) can help. By default, Portage has a relatively low limit on how far it tries to resolve dependencies (for performance reasons), occasionally it is not enough.

Any configuration file changes should be addressed, this can be managed by dispatch-conf:

root #dispatch-conf

Очистка после обновления

After the update, Portage recommends running emerge --depclean. Be very careful running emerge --depclean, it can remove important packages (e.g. kernel sources or virtual package optional dependencies when an alternative gets merged).

См. также
See remove orphaned packages for information on how to use emerge --depclean to remove potentially unused packages safely. See also the Portage FAQ.

Инструкции по обновлению профиля

Прочтите соответствующую документацию перед любыми изменениями профиля.
Прочтите документацию systemd перед переходом на systemd профиль.
Убедитесь, что главный Gentoo репозиторий (дерево Portage) синхронизирован перед любыми изменениями профиля.

When a new profile is available, Portage will inform the user with a news item (recent news items are listed on the website).

If a system is too old, it may be non trivial to get the system up to date, it may even be easier to start from scratch.

Как правило, такие миграции не являются обязательными, и система может продолжать использовать старый профиль - просто обновите пакеты, как объяснено в настольной книге Gentoo.

Когда миграция профиля очевидна, обновление необходимо выполнить вручную. Способ обновления может существенно отличаться от релиза к релизу; он зависит от степени изменений, привносимых новым профилем.

Exactly what is required to migrate to a new profile is detailed in the relevant news item.

Основные инструкции

This is a generic outline of what is done to update a profile. As stated previously, specific instructions will be provided in a news item, for each new profile. A profile update often requires manual intervention, beyond just switching the profile version.

Для большинства архитектур существуют субпрофили desktop и server. Тщательно изучите эти субпрофили, так как они могут лучше удовлетворять вашим требованиям, чем минимальные профили по умолчанию.
Профиль developer предназначен для задач разработки Gentoo. Он не предназначен для настройки сред разработки в целом.

Смена профилей с eselect

Make sure warnings in parent section have been read.

Сначала запустите emerge eselect. Утилита eselect облегчает просмотр и выбор профилей, без необходимости вручную создавать или удалять символьные ссылки.

root #eselect profile list
root #eselect profile set <число>

Смена профилей вручную

Make sure warnings in parent section have been read.

Изменение профиля вручную все еще возможно:

root #rm /etc/portage/make.profile
root #cd /etc/portage
root #ln -s ../../var/db/repos/gentoo/profiles/<selected profile> make.profile

Обновление до профиля 17.1

See the appropriate news item. At this point all installations should already be using the 17.1 profile, and migration could be difficult.

Обновление до профиля 17.0

See the appropriate news item. At this point all installations should be using the 17.1 profile, and migration could be difficult.

Обновление старых систем

Sometimes, systems are too old to easily upgrade. It may be possible to manually update a very old system, but it may be better to start from scratch and copy system configuration an files from the old system to the new one.

Here is a rough guide to updating an old system. Another method can be found here.

Идея обновления

Идея этого обновления заключается в создании промежуточного сборочного chroot, в который распаковывается новый stage3. Затем, при помощи утилит, доступных в stage3 chroot, обновляются пакеты на самой системе.

Нижеследующие команды могут быть неполными и являются скорее подсказкой, чем рабочими инструкциями. Если подход не вполне ясен, возможно, проще сделать резервную копию важных файлов и переустановить Gentoo.

Подготовка промежуточного chroot для сборки

Сначала создадим каталог для промежуточного chroot для целей сборки, например, /mnt/build, и распакуем в него новый архив stage3.

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

Затем создадим точку монтирования внутри этого окружения chroot, и смонтируем (bind-mount) реальное (старое) окружение.

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

Теперь реальная (старая) система также доступна в /mnt/build/mnt/host. Это позволяет нам получить доступ к старой системе и обновить пакеты, даже находясь в промежуточном сборочном chroot.

Сеть, chroot и обновление

Новой установке требуется доступ к сети, поэтому скопируйте сетевую информацию:

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

Теперь выполните chroot в местоположение промежуточной сборки и приступите к обновлению наиболее важных пакетов на старой системе, пока не появится возможность обновить реальную (старую) систему изнутри самой реальной системы (в противоположность промежуточному сборочному chroot):

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

It may be a good idea to check that the profile and Portage configuration are compatible between the (old) live system and the chroot.

Теперь приступите к сборке пакетов в (старой) live системе. Если Portage старая или отсутствует, лучше начать с нее:

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

Не закрывайте эту сессию chroot и попробуйте обновить (старую) реальную систему. При возникновении проблем используйте сессию chroot для обновления пакетов, используя сборочные утилиты, доступные в промежуточном сборочном chroot (новые sys-libs/glibc, sys-devel/gcc и так далее). Утилиты можно добавлять к сборочному chroot по мере необходимости.

Не забывайте добавлять --root=/mnt/host --config-root=/mnt/host ко всем командам emerge внутри chroot! В противном случае, вместо обновления (старой) реальной системы будет обновлен сам chroot.

На некоторых системах может понадобиться обновить конфигурационные файлы для того, чтобы установить новое программное обеспечение. Вносите изменения в окружении chroot.

Чтобы полностью обновить систему перед выходом из chroot, соберите набор @world (все пакеты) в (старой) реальной системе:

(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.