Обновление Gentoo

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

Other languages:
English • ‎español • ‎français • ‎日本語 • ‎한국어 • ‎português do Brasil • ‎русский • ‎中文(中国大陆)‎

Данная статья объясняет, как новые выпуски Gentoo влияют на уже существующие системы.

Обновление

Философия

Здесь, на земле Gentoo, концепция обновление понимается совсем не так, как во всем остальном мире Linux. Это широко известный факт, что Gentoo никогда не следовала «классическому» способу обновления программ: дождаться нового релиза, скачать его, прожечь, засунуть диск в дисковод и, наконец, следовать инструкциям по обновлению.

Gentoo пользователи знают, что такой процесс раздражает опытного пользователя, стремящегося всегда быть на переднем крае. Учитывая популярность и распространенность инструментов типа apt или apt-rpm, облегчающих быстрые и частые обновления, мы полагаем, что и опытные пользователи других дистрибутивов испытывают те же чувства. Однако ни один дистрибутив не приспособлен для удовлетворения нужд требовательных пользователей лучше Gentoo, поскольку Gentoo с самого начала строился на идее быстрых последовательных обновлений.

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

Выпуски и профили

О процессе выпуска версий Gentoo постоянно задают вопрос: «Зачем нужно часто делать новые выпуски, если они не предназначены для обновления программ у пользователей?». Тому есть ряд причин:

  • Новый выпуск — это новые CD с исправлениями и дополненными возможностями.
  • Новый выпуск несет обновленный набор пакетов GRP, так что пользователи, избирающие «быстрый способ» установки (stage3 + заранее скомпилированные пакеты), получают не устаревшую систему.
  • Наконец, в новых выпусках время от времени реализуются функции, несовместимые с предыдущими выпусками.

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

Профиль представляет собой набор конфигурационных файлов, хранимый в подкаталоге /usr/portage/profiles, которые описывают вещи, такие как ebuild для system (системных) пакетов, USE-флаги по умолчанию, отображение по умолчанию для виртуальных пакетов, и архитектуру, на которой работает система.

Используемый профиль определяется символьной ссылкой /etc/portage/make.profile, указывающей на один из подкаталогов каталога /usr/portage/profiles, содержащего файлы профиля. Например, профиль 13.0, являющийся профилем по умолчанию для x86, находится в каталоге /usr/portage/profiles/default/linux/x86/13.0. Файлы, находящиеся в родительском каталоге, также являются частью профиля (и, следовательно, используются различными субпрофилями) — поэтому эти профили называются каскадными (cascaded profiles).

Устаревшие профили хранятся в каталоге /usr/portage/profiles вместе с текущими, но они помечены как не рекомендованные к использованию (deprecated). В этом случае файл под названием deprecated помещается в каталог профиля. Этот файл содержит название профиля, до которого следует "обновить" текущий профиль; Portage использует эту информацию для автоматического предупреждения администраторов о необходимости обновления профиля.

Существует несколько причин почему новый профиль должен быть создан: выпуск новой версии основных пакетов (таких как sys-apps/baselayout, sys-devel/gcc или sys-libs/glibc), которые не совместимы с предыдущими версиями, изменения в USE-флагах по умолчанию, отображения в виртуальных пакетах или, возможно, изменения в системных настройках.

Обновление до нового релиза

Релизы без изменения профиля

Если новый релиз Gentoo не содержит новый профиль, то сделайте вид что ничего не произошло. 😀

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

Релизы с изменением профиля

Если релиз (такой как 13.0 в x86) вводит новый профиль, в этом случае есть выбор для миграции на новый профиль.

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

Тем не менее, Gentoo настоятельно рекомендует обновить профиль, если он становится устаревшим. Когда это происходит, то это означает, что разработчики Gentoo больше не планируют поддерживать его.

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

В простейшем случае пользователь должен только изменить ссылку /etc/portage/make.profile, в худшем случае, возможно, придется перекомпилировать всю систему с нуля, при этом сплясав танец вуду. Миграция, как правило, рассматриваются в примечаниях к выпуску. Необходимые инструкции есть далее в этом руководстве.

Поддерживаемые профили

Чтобы увидеть список поддерживаемых профилей, вызовите eselect (который можно установить с помощью команды emerge eselect) так:

root #eselect profile list

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

Некоторые системы являются слишком старыми для простого переключения профиля. Новым профилям могут требоваться более новые версии Portage, также может отсутствовать возможность установки других программ, так как определения пакетов (файлы ebuild) для более старых версий программ более недоступны.

В этом случае, в системе нужно сначала установить более старые снимки дерева Portage и обновить по крайней мере Portage (но, желательно, все пакеты в наборе system), постепенно увеличивая дату снимка дерева Portage, пока она не станет достаточно недавней для того, чтобы снова следовать инструкциям переключения профиля:

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

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

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

Даже если ключи подписи релиза истекли, подпись все еще должна работать для старых релизов.

Обновление (очень) старых систем

Некоторые системы слишком стары для простого обновления. В процессе обновления могут потребоваться промежуточные версии программ (таких, как portage), которые больше недоступны. В этом случае потребуется обновлять дерево Portage поэтапно (например, инкрементально обновлять дерево Portage с интервалами в 3-4 месяца).

Для обновления таких систем может использоваться текущий stage3. Дальнейшие инструкции смотрите в разделе Обновление старых систем.

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

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

Важно
Убедитесь, что синхронизировали основной репозиторий Gentoo (дерево Portage) перед любыми изменениями профиля.

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

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

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

root #rm /etc/portage/make.profile
root #cd /etc/portage
root #ln -s ../../usr/portage/profiles/<нужный profile> make.profile
Заметка
Для большинства архитектур существуют субпрофили desktop и server. Тщательно изучите эти субпрофили, так как они могут лучше удовлетворять вашим требованиям, чем минимальные профили по умолчанию.
Заметка
Профиль developer предназначен для задач разработки Gentoo. Он не предназначен для настройки сред разработки в целом.

Обновление до 2008.0, 2007.0 или 2006.1

Для обновления с этих профилей в системе необходимо установить локаль Unicode по умолчанию; конкретнее, необходимо установить UNICODE="yes" в файле /etc/rc.conf. Для того, чтобы это сработало, в системе необходимо создать локаль Unicode. Чтобы узнать, как создать нужную локаль, читайте статью UTF-8.

В качестве альтернативного варианта, если устанавливать локаль нежелательно, то нужно указать UNICODE="no" в файле /etc/rc.conf и переустановить sys-apps/baselayout (или подождать следующего обновления baselayout) с USE-флагом -unicode. Это можно сделать следующим образом:


root #echo "sys-apps/baselayout -unicode" >> /etc/portage/package.use
root #emerge --ask sys-apps/baselayout
  • либо установить его глобально для всех пакетов, добавив в переменную USE в файле /etc/portage/make.conf:
Файл /etc/portage/make.confГлобальное выключение поддержки unicode
USE="-unicode"
root #emerge --ask sys-apps/baselayout
Заметка
Пользователям, обновляющим систему до профиля 2007.0 на архитектуре Sparc, нужно следовать инструкциям руководства по обновлению GCC, поскольку gcc-4 является компилятором по умолчанию.

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

Обновление до 2006.0

Для переключения на профиль 2006.0 измените местоположение, на которое указывает символьная ссылка /etc/portage/make.profile. Перед изменением профиля убедитесь, что Portage обновлен.

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

alpha — Пользователям, которые используют ядро 2.4 или не хотят использовать NPTL, следует использовать профиль default-linux/alpha/no-nptl. Более подробную информацию можно найти в the alpha release notes.

ppc — Процесс слияния профилей ppc32 и ppc64 шагнул вперед. Профиль ppc32 теперь предоставляет профиль общего назначения. Он находится в default-linux/ppc/ppc32. Профиль, зависящий от релиза, оптимизирован для использования на настольных системах. Он находится в default-linux/ppc/ppc32/2006.0. Доступен ряд субпрофилей для процессоров G3 и G4, а также G3/Pegasos и G4/Pegasos для Pegasos Open Desktop Workstation. Не забудьте выбрать правильный субпрофиль при миграции на профиль 2006.0.

sparc — Обновление до профиля 2006.0/2.4 на базе ядра 2.4 требует ручного вмешательства (удаления пакетов, связанных с java), а также emerge -e @world по причине обновления gcc. Для обновления до профиля 2006.0 на базе ядра 2.6, который считается нестабильным, также необходимо отредактировать файл /etc/portage/package.unmask и размаскировать исходный код ядра sys-kernel/gentoo-sources версии 2.6. Также необходимо полностью пересобрать систему.

Прочие архитектуры — Этот профиль не содержит существенных изменений. Дополнительные действия не требуются.

Обновление до 2005.1

Чтобы переключиться на профиль 2005.1, измените местоположение, на которое указывает символьная ссылка /etc/portage/make.profile. Перед изменением профиля убедитесь, что Portage обновлен.

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

Все архитектуры — Этот профиль не содержит существенных изменений. Дополнительные действия не требуются.

ppc — В релизе 2005.1 профили ppc и ppc64 были соединены и был создан ряд субпрофилей для конкретных субархитектур. Не забудьте выбрать правильный субпрофиль при миграции на профиль 2005.1.

Обновление до 2005.0

С появлением 2005.0, в некоторых архитектурах были определены дополнительные профили. Перед тем, как принять решение о миграции на эти профили, прочитайте их описание. Также, большинство архитектур, ранее по умолчанию использовавших дерево ядра 2.4, теперь используют 2.6.

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

Профиль Описание Руководство по обновлению
default-linux/alpha/2005.0 Профиль по умолчанию Alpha 2005.0 для ядер 2.6
default-linux/alpha/2005.0/2.4 Профиль Alpha 2005.0 для ядер 2.4
default-linux/amd64/2005.0 Профиль по умолчанию AMD64 2005.0 для ядер 2.6
default-linux/amd64/2005.0/no-multilib Профиль AMD64 2005.0 для систем с выключенным multilib
default-linux/arm/2005.0 Профиль по умолчанию ARM 2005.0 для ядер 2.6
default-linux/hppa/2005.0 Профиль по умолчанию HPPA 2005.0 для ядер 2.6
default-linux/hppa/2005.0/2.4 Профиль HPPA 2005.0 для ядер 2.4
default-linux/mips/2005.0 Профиль по умолчанию MIPS 2005.0
default-linux/mips/cobalt/2005.0 Cobalt специфический профиль MIPS 2005.0
default-linux/mips/mips64/n32/2005.0 Профиль 2005.0 платформ MIPS, поддерживающих n32
default-linux/mips/mips64/ip28/2005.0 Indigo2 Impact специфический 64-битный профиль 2005.0
default-linux/mips/mips64/2005.0 64-битный профиль MIPS 2005.0
default-linux/ppc/2005.0 Профиль по умолчанию PPC 2005.0 для ядер 2.6
default-linux/ppc64/2005.0 Профиль по умолчанию PPC64 2005.0 для ядер 2.6
default-linux/s390/2005.0 Профиль по умолчанию S390 2005.0
default-linux/sparc/sparc32/2005.0 Профиль по умолчанию Sparc 32-bit 2005.0
default-linux/sparc/sparc64/2005.0 Профиль по умолчанию Sparc 64-bit 2005.0
default-linux/x86/2005.0 Профиль по умолчанию x86 2005.0 для ядер 2.6
default-linux/x86/2005.0/2.4 Профиль x86 2005.0 для ядер 2.4

Чтобы переключиться на выбранный профиль, измените местоположение, на которое указывает символьная ссылка /etc/portage/make.profile. Перед изменением профиля убедитесь, что Portage обновлен!

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

Если планируется обновление Linux-системы, основанной на ядре 2.4, на ядро 2.6, обязательно прочитайте Gentoo Linux 2.6 Migration Guide.

Обновление до 2004.3

Профили 2004.3 не привносят в систему существенных изменений (подробнее смотрите ниже). Тем не менее, разработчики Gentoo решили вытеснить этот профиль и пометить множество старых профилей, как не рекомендованные, для ускорения перехода на профили stacked (stacked profiles), которые используют новый формат каталога /usr/portage/profiles, например, /usr/portage/profiles/default-linux/x86/2004.3 (поддерживающийся в Portage 2.0.51 и более поздних).

Чтобы переключиться на профиль 2004.3, измените местоположение, на которое указывает символьная ссылка /etc/portage/make.profile.

Предупреждение
Не забудьте обновить Portage до изменения профиля!!!
root #rm /etc/portage/make.profile
root #ln -s ../usr/portage/profiles/default-linux/<arch>/2004.3 /etc/portage/make.profile

Все архитектуры — Как сказано выше, этот профиль не несет в себе существенных изменений. Однако, стоит отметить, что пакеты sys-apps/slocate и net-misc/dhcpcd больше не считаются системными пакетами. Это означает, что при запуске emerge --depclean Portage попытается удалить их из системы. Если требуется сохранить какой-либо из этих пакетов, их нужно либо добавить в /var/lib/portage/world после переключения профиля, либо установить вручную.

ppc — На новых системах по умолчанию устанавливается sys-fs/udev вместо sys-fs/devfs. Это не влияет на уже установленные системы.

Обновление Portage для поддержки каскадных профилей

Хотя этот раздел не совсем вписывается в данное руководство по обновлению, он довольно важен. Все перечисленные выше профили требуют наличия версии Portage, поддерживающей каскадные профили. Однако, некоторые устаревшие профили не позволяют обновить Portage, либо используемый профиль более недоступен — тогда обновить Portage не удастся.

Решить эту проблему можно, создав временную символьную ссылку, указывающую на устаревший профиль. Это позволит обновить Portage, после чего можно продолжить процедуру обновления, описанную в этом руководстве. Замените <arch> соответствующей системной архитектурой:

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

Чтобы переключиться на профиль 2004.2, измените местоположение, на которое указывает символьная ссылка /etc/portage/make.profile:

Предупреждение
Не забудьте обновить Portage до изменения профиля!!!
root #rm /etc/portage/make.profile
root #ln -s ../usr/portage/profiles/default-linux/<arch>/2004.2 /etc/portage/make.profile

x86 — Этот профиль заменяет использующуюся по умолчанию реализацию X11 x11-base/xfree (не рекомендована) на x11-base/xorg-x11. Это изменяет только значение по умолчанию, и актуально только для тех, кто еще не установил X-сервер. Если X-сервер уже установлен, это никак не повлияет на систему; пользователи могут свободно переключаться между X-серверами, как и раньше.

amd64 — Этот профиль не содержит существенных изменений по сравнению с предыдущими профилями, дополнительные действия не требуются.

Обновление до 2004.0

Чтобы переключиться на профиль 2004.0, измените местоположение, на которое указывает символьная ссылка /etc/portage/make.profile:

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

Все архитектуры — Этот профиль не содержит существенных изменений по сравнению с предыдущими профилями, дополнительные действия не требуются.

Обновление профилей старше 1.4 до 1.4

Инструкции для этого обновления довольно сложны, их можно найти здесь.

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

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

Идея этого обновления заключается в создании промежуточного сборочного 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


Теперь приступите к сборке пакетов в (старой) 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 article 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 as the 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 the history page.