Вот как я долгое время обновлял 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.
emerge --sync
или eix-sync
или emerge-delta-webrsync
и eix-update
emerge -av portage
eclean-dist
Убедитесь, что один из заголовков linux, glibc, binutils, libtool или gcc имеет серьезные обновления (например, обновления gcc с 4.6 до 4.8). Если нет, переходите к шагу 11.
Полная перестройка:
rm -rf $(portageq pkgdir)/*
- очистка кеша в PKGDIRemerge -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
Похоже, вы это прикрыли. Единственный другой совет - возможно, сделайте это немного медленнее, чем слепое оптовое обновление. Вы всегда можете обновить пакеты или цепочки зависимостей индивидуально с помощью 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/*