Назад | Перейти на главную страницу

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

Вот как я долгое время обновлял Gentoo. Это рекомендуемые метод? Есть какие-то ошибки или лучшие методы?

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

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

  • 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. emerge --sync или eix-sync или emerge-delta-webrsync и eix-update
  2. emerge -av portage
  3. eclean-dist

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

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

  1. rm -rf $(portageq pkgdir)/* - очистка кеша в PKGDIR
  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

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

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

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

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

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

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

Это то, что вам следует запустить в первую очередь. В этом нет необходимости, если вы обновите все пакеты.

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

Вот что я делаю:

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

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

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

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

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

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

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

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

Вот как я это делаю на своем 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/*