Оптимальная процедура обновления Gentoo Linux?


23

Так я давно обновлял Gentoo. Это рекомендуемый метод? Любые ошибки или более эффективные методы?

emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all

6
Я добавляю флаг -N к появлению лично
Том Риттер

2
--tree (-t) также удобен для понимания происходящего
lkraav

Ответы:


5

Похоже, что вы покрыли это. Единственный другой совет, возможно, взять его немного медленнее, чем слепое оптовое обновление. Вы всегда можете обновить пакеты или цепочки зависимостей по отдельности с помощью emerge -DNuav <atom>вместо world(используйте --oneshot для вещей, которые вы не хотите добавлять в файл мира, например, для системных библиотек).

Обратите внимание, что это всегда легче сделать, если вы будете регулярно обновляться, а не переходить на монолитные пакетные обновления каждые пару месяцев. Кроме того, чтобы избежать слишком большого количества сюрпризов, вам может быть полезно подписаться на один из списков рассылки, таких как gentoo-user(ВНИМАНИЕ: ~ 100 писем в день в этом списке), так как практически любые серьезные проблемы с обновлением могут появляться в списке с много обсуждений, объясняющих, как их решить.

Я полагаю, что следующим серьезным «проблемным» обновлением станет миграция на openrc, как только он станет стабильным (это было сделано в середине прошлого года в iirc только с несколькими проблемами, прежде всего с сетевыми изменениями).


2
Да, определенно +1 за то, чтобы идти в ногу со временем на регулярном, а не на огромных кусках. Есть случайные изменения, которые просто ломают много. github.com/lkraav/gentoo-cron-weekly - это мой упрощенный набор инструментов для еженедельных отчетов.
lkraav

8

Я использовал почти те же шаги, что и вы, за исключением:

  • eix-syncа не emerge --syncпотому, что мне нравится видеть изменения в дереве портежей. Это особенно хорошо для того, чтобы заметить пакеты, которые я мог бы установить, которые являются новыми для дерева.

  • layman -S (время от времени) до появления основного синхронизировать любые изменения в оверлеях.

  • eclean-dist -dпосле того, revdep-rebuildкак очистить устаревшие тарболы. Я делаю это после каждого появления, потому что пакеты не так распространены.

  • eix-test-obsoleteв качестве последнего шага, чтобы сохранить мои файлы / etc / portage в чистоте и актуальности. Это также позволяет мне узнать, когда я установил пакеты, которые были полностью удалены из portage, поэтому мне нужно получить ebuild из репозитория. Недавний пример, я должен замаскировать все версии iproute2> 2.6.22.20070710 из-за более старого ядра, работающего на моем Xen VPS, но оно было недавно удалено из portage.

eix-syncи eix-test-obsoleteнаходятся в app-portage / eix.

eclean-dist находится в app-portage / gentoolkit.


+1 для eix-sync
Тим

5
  1. emerge --syncили eix-syncили emerge-delta-webrsyncиeix-update
  2. emerge -av portage
  3. eclean-dist

Убедитесь, что один из заголовков linux, glibc, binutils, libtool или gcc имеет обновление magor (например, обновления gcc с 4.6 до 4.8). Если это не так, перейдите к шагу 11.

Полная перестройка:

  1. rm -rf PKGDIR/* Замените PKGDIR на ваш путь к пакету dir!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Переключиться на новый GCC
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

Если у вас есть какие-либо проблемы на шаге 10 или 11, то исправьте и попробуйте снова

Обновление мира:

  1. Очистите файл мира /var/lib/portage/worldот ненужных пакетов и проверьте /etc/portageобъекты
  2. fixpackages
  3. emerge -avuDN world
  4. eselect python update
  5. python-updater -- -av
  6. perl-cleaner --all -- -av
  7. emerge -a --depclean
  8. revdep-rebuild -i -- -av

Если у вас возникли проблемы с шагами 14-18, исправьте их и повторите все шаги с шага 13

  1. etc-update или dispatch-conf
  2. glsa-check -vp affected Вы можете повлиять на пакеты в слотах после обновления
  3. emaint --check all

3

Если ваша цель состоит в том, чтобы иметь абсолютную последнюю версию всех пакетов, то да, похоже, она охватывает все основы. Я удивлен, что это работает для вас долгое время, потому что я представляю, что вас будут часто кусать блоки, разбитые загадки и т. Д. В последние пару лет я стал гораздо более осторожным с оптовыми обновлениями, выбрав вместо этого сделать это по частям после просмотра дерева обновлений. Развитие Gentoo, похоже, прошло свое расцвет. Может быть, это связано с появлением Ubuntu.

В любом случае, еще одна вещь, которую вы можете попробовать, просто чтобы быть очень разборчивой во всем процессе, это очистить ваши дистрибутивные файлы. Есть сценарии, если вы ищете.


1
Если вы придерживаетесь немаскированных ebuild-ов, то, на мой взгляд, Gentoo стал довольно стабильным и не все ломается, выполняя синхронизацию и появляясь в мире. Вам нужно знать, что вы делаете, но то же самое можно сказать и о apt или yum. Я был укушен обоими.
Джон Дауни

1
Я могу вспомнить о трех недавних блокировках / поломках: libcomerr / e2fsprogs, firefox2 / 3 и xorg 1.3 / 1.5. Во всех этих случаях потребовалось нетривиальное массирование, чтобы сделать оптовое обновление работающим, и не было задействовано ни одного ключевого слова.
Адам Д'Амико

2
Последние версии portage - скажем, в течение последних 6 месяцев - автоматически разрешают практически все блоки и разрывы. Включая libcomerr / e2fsprogs.
Дэн Карли

3
glsa-check -t all
glsa-check -f all

Это то, что вы должны бежать в первую очередь. Это не нужно, если вы обновляете все пакеты.

Ох, и я предпочитаю cfg-update;)


1

Это то, что я делаю:

emerge --sync         //Synchronize the package manager with the latest 
                      //version of each package.


emerge -aDvNu system  //updates the system, but only important if you want the
                      //latest stable version of the actual compiler and libraries
                      //with the core system.

emerge -uDNav world   //world means everything we've asked to be emerged before
                      //this does not include things that came pre installed.
                      //N means if you change your use directives in 
                      //your make.conf file to pull in the new packages.

emerge -av depclean   //removes libraries or programs that don't have any other 
                      //dependencies because of an update.


revdep-rebuild        //means if something is broken by an update, it 
                      //recompiles it.  Fixes dynamic and static linking problems.

Если вы не совсем понимаете комментарии, прочитайте это, потому что это авторитет в том, как обновить ваши пакеты gentoo.

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1


0

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


0

В течение долгого времени я всегда использовал эту процедуру:

emerge -f --update --newuse --deep world && emerge --update --newuse --deep world

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

Возможно, ключ --newuse не нужен, но я часто редактирую свой make.conf, поэтому он имеет смысл для меня.


Вы можете использовать «--reinstallified-use» вместо «--newuse», это переустанавливает пакеты с использованием флагов использования, которые вы явно изменили. Вместо устаревших, добавленных флагов использования и т. Д. Вы все равно должны время от времени запускать с параметром --newuse.
Хаялчи

0

Выглядит хорошо, хотя я бы не стал так быстро запускать depclean.

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


0

Вот как я делаю это на своем VPS:

шаг 0 (из / etc / crontab)

0 0   * * *     root    emerge --sync &> /dev/null

шаг 1:

emerge --update --deep --newuse world -av

шаг 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.