Gentoo: обновление системы

Пожалуй стоит немного поговорить об этом

Ну если само обновление системы достаточно просто и делается в 2 строки
Обновляем дерево портэжей

korp # emerge --sync

Теперь обновляем саму систему

korp # emerge -avuDN world --quiet

В конце получим что то типа:

[ebuild U ] sys-kernel/genkernel-3.4.12.6 [3.4.12.1]
[ebuild U ] dev-lang/perl-5.12.3 [5.12.2-r6]
[ebuild U ] app-misc/mc-4.7.5 [4.7.4-r1] USE="ncurses%*"
[ebuild U ] dev-lang/php-5.3.5-r1 [5.3.5]
Would you like to merge these packages? [Yes/No]

ну и соответственно нам нужно ответить y/n

Порой бывает так, что обновляются не все пакеты, что бы это проверить, нужно запустить

korp # emerge -pv --update --newuse --emptytree --deep world
[ebuild U ] dev-util/cmake
...
[ebuild U ] app-admin/eselect-ctags
...

Там где мы увидим U — нам необходимо обновить в ручную, для этого собираем все не обновлённые пакеты и запускаем на выполнение

korp # emerge -1av dev-util/cmake app-admin/eselect-ctags --quiet

В данном случае 1 говорит о том что данные пакеты не нужно заносить в nano /var/lib/portage/world (там храняться записи о ПО, установленно пользователем непосредственно, различные системные зависимости нам там не нужны, так что периодически поглядываем и удаляем не нужное).

После установки обновлений, в самом конце длинного листинга мы получим сообщение типа

* IMPORTANT: 1 config files in '/etc' need updating.
* See the CONFIGURATION FILES section of the emerge
* man page to learn how to update config files.

Для того, что бы обновить конфигурационные файлы, мы должны воспользоваться утилитой etc-update

korp # etc-update

После запуска мы получим список конфигурационных файлов, требующих обновление.

Scanning Configuration files...
The following is the list of files which need updating, each
configuration file is followed by a list of possible replacement files.
1) /etc/locale.gen (1)
Please select a file to edit by entering the corresponding number.
(don't use -3, -5, -7 or -9 if you're unsure what to do)
(-1 to exit)
(-3 to auto merge all remaining files)
(-5 to auto-merge AND not use 'mv -i')
(-7 to discard all updates)
(-9 to discard all updates AND not use 'rm -i'):

Дальше у нас есть 2 варианта:
1. доверится системе и выполнить всё автоматически (как нам предложено выше (именно с тире перед цифрой!)): -1, чтобы просто выйти, -3 — обновит все автоматически, но будет задавать вопросы про каждый конфиг отдельно, -5 обновит без вопросов, -7 удалит все, но будет спрашивать, -9 удалит предложенные обновления конфигурационных файлов без вопросов).
2. (лично для меня более примечательный) выполнить всё в ручную. для этого нам необзодимо набрать номер конфигурационного файла (в данном случае 1), после чего нам будет показано сравнение старого и нового конфига:

Showing differences between /etc/init.d/net.lo and /etc/init.d/._cfg0000_net.lo
--- /etc/init.d/net.lo 2005-10-11 19:34:57.000000000 -0400
+++ /etc/init.d/._cfg0000_net.lo 2005-10-13 02:32:47.000000000 -0400
@@ -180,7 +180,7 @@
umods=( "${umods[@]}" "${modules[@]}" )

# Add our preferred modules
- npref=3
+ npref=4
umods=( "${umods[@]}" "iproute2" "dhcpcd" "iwconfig" "netplugd" )

# First we strip any modules that conflict from user settings
lines 1-12/12 (END)

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

1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again
Please select from the menu above (-1 to ignore this update):

Ну и соответственно набираем то что нам подходит: 1 — заменит полностью старый конфиг новым, 2- удалит новый конфиг и оставит старый, 3 — попытается слить 2 конфига в один (никогда не пользовался, ибо опасался последствий, и вам не советую экспериментировать), 4 — ещё раз покажет различия.

Теперь можно удалить старые версии, ставших ненужными пакетов

korp # emerge -a --depclean

В конце мы проверим все зависимости и восстановим если что то было случайно удалено

korp # revdep-rebuild -i -- --ask

И ещё будет полезно обновить в ручную модули perl`а и python`а

korp # python-updater
korp # perl-cleaner --reallyall

Не забывайте обновляться, это очень полезно! Но всегда внимательно следите за тем — что и как обновляется!!!

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

2 ответа к «Gentoo: обновление системы»

Добавить комментарий