Так я давно обновлял Gentoo. Это рекомендуемый метод? Любые ошибки или более эффективные методы?
emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all
Так я давно обновлял Gentoo. Это рекомендуемый метод? Любые ошибки или более эффективные методы?
emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all
Ответы:
Похоже, что вы покрыли это. Единственный другой совет, возможно, взять его немного медленнее, чем слепое оптовое обновление. Вы всегда можете обновить пакеты или цепочки зависимостей по отдельности с помощью emerge -DNuav <atom>
вместо world
(используйте --oneshot для вещей, которые вы не хотите добавлять в файл мира, например, для системных библиотек).
Обратите внимание, что это всегда легче сделать, если вы будете регулярно обновляться, а не переходить на монолитные пакетные обновления каждые пару месяцев. Кроме того, чтобы избежать слишком большого количества сюрпризов, вам может быть полезно подписаться на один из списков рассылки, таких как gentoo-user
(ВНИМАНИЕ: ~ 100 писем в день в этом списке), так как практически любые серьезные проблемы с обновлением могут появляться в списке с много обсуждений, объясняющих, как их решить.
Я полагаю, что следующим серьезным «проблемным» обновлением станет миграция на openrc, как только он станет стабильным (это было сделано в середине прошлого года в iirc только с несколькими проблемами, прежде всего с сетевыми изменениями).
Я использовал почти те же шаги, что и вы, за исключением:
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.
emerge --sync
или eix-sync
или emerge-delta-webrsync
иeix-update
emerge -av portage
eclean-dist
Убедитесь, что один из заголовков linux, glibc, binutils, libtool или gcc имеет обновление magor (например, обновления gcc с 4.6 до 4.8). Если это не так, перейдите к шагу 11.
Полная перестройка:
rm -rf PKGDIR/*
Замените PKGDIR на ваш путь к пакету dir!emerge -av linux-headers glibc binutils gcc-config libtool gcc
gcc-config <number of new gcc>
Переключиться на новый GCCsource /etc/profile
emerge -avb glibc binutils gcc libtool
emerge -avbke system
emerge -avbke world
Если у вас есть какие-либо проблемы на шаге 10 или 11, то исправьте и попробуйте снова
Обновление мира:
/var/lib/portage/world
от ненужных пакетов и проверьте /etc/portage
объектыfixpackages
emerge -avuDN world
eselect python update
python-updater -- -av
perl-cleaner --all -- -av
emerge -a --depclean
revdep-rebuild -i -- -av
Если у вас возникли проблемы с шагами 14-18, исправьте их и повторите все шаги с шага 13
etc-update
или dispatch-conf
glsa-check -vp affected
Вы можете повлиять на пакеты в слотах после обновленияemaint --check all
Если ваша цель состоит в том, чтобы иметь абсолютную последнюю версию всех пакетов, то да, похоже, она охватывает все основы. Я удивлен, что это работает для вас долгое время, потому что я представляю, что вас будут часто кусать блоки, разбитые загадки и т. Д. В последние пару лет я стал гораздо более осторожным с оптовыми обновлениями, выбрав вместо этого сделать это по частям после просмотра дерева обновлений. Развитие Gentoo, похоже, прошло свое расцвет. Может быть, это связано с появлением Ubuntu.
В любом случае, еще одна вещь, которую вы можете попробовать, просто чтобы быть очень разборчивой во всем процессе, это очистить ваши дистрибутивные файлы. Есть сценарии, если вы ищете.
Это то, что я делаю:
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.
Если у вас нет таких требований, как нехватка места на жестком диске, вы можете вернуться и убрать с меньшими регулярными интервалами. Нет ничего плохого в том, чтобы они были рядом в течение короткого периода. Если вам не повезло заметить некоторые поврежденные пакеты после обновления, вы были бы уверены, что они не являются результатом удаления каких-либо свободных зависимостей.