LINUX.ORG.RU

Правильное полное обновление Gentoo

 , ,


6

2

Сначала выполняю eix-sync чтобы обновить дерево portage. Потом, естественно, emerge -avuDN world с изучением списка изменений. Так же потом имеет смысл выполнить emerge -a --depclean, затем emerge @preserved-rebuild. Иногда - emerge -a @module-rebuild. Ещё есть какие-то (какие?) команды для обновления python, perl и так далее. Что вообще нужно выполнять после обновления мира для поддержания системы в актуальном состоянии?

★★

cat ~/.zshrc

...

function 0w()
        case "$1" in
                *) sudo emerge -auDN1 --keep-going=y @world && \
                   sudo emerge -1 @live-rebuild       && \
                   sudo emerge -1 @preserved-rebuild        && \
                   sudo revdep-rebuild -- -1                && \
                   sudo python-updater -- -aD1              && \
                   sudo perl-cleaner --all                  && \
                   sudo /usr/sbin/prelink -amfR ;;
        esac
...
blackst0ne ★★★★★
()

eclean-dist -d && eclean-pkg -d
emerge --depclean -av --with-bdeps y && revdep-rebuild

haku ★★★★★
()
Ответ на: комментарий от blackst0ne

Ага, понял, спасибо. Вопросы: Зачем -1 при rebuild-ах, если их результат, вроде, в world?

Valdor ★★
() автор топика

У меня gcc4.9 не собрался дальше этапа конфигурации. :/

// Хм, со 2 захода собрался, похоже. Мир пересобирать никакого желания, наверняка lto во многих пакетах опять некорректно отрабатывать будет, да и graphite… Рандомные глюки в рантайме очень неприятны.

wakuwaku ★★★★
()
Последнее исправление: wakuwaku (всего исправлений: 1)
Ответ на: комментарий от Deleted

Мне был очень нужен gcc4.8, и 4.7, и 4.6, а 4.9 не вдохновляет. Последний раз такое было с gcc~3.4.

wakuwaku ★★★★
()

Скрипт, который написал для себя:

#!/bin/bash
echo "Start full upgrade?"
read answer
if [ "$answer" = "y" ] || [ "$answer" = "yes" ] || [ "$answer" = "д" ] || [ "$answer" = "да" ]
then
echo "Syncing portage tree..."
eix-sync
echo "\nUpgrading world..."
emerge -avuDN world --keep-going=y world && \
echo "\nRebuilding live..." && \
emerge -a @smart-live-rebuild && \
echo "\nRebuilding preserved..." && \
emerge -a @preserved-rebuild && \
echo "\nRevdep-rebuild..." && \
revdep-rebuild -- -aD && \
echo "\nUpgrading python..." && \
python-updater -- -aD && \
echo "\nCleaning perl..." && \
perl-cleaner --all -- -a
fi
Почему-то на этапе выполнения python-updater, когда нашлось что пересобирать, portage спросил, уверен ли я (от опции -a), сам получил ответ и, как результат, начал обновление сам. Чзх и как лечить?

Valdor ★★
() автор топика
Ответ на: комментарий от anonymous


sudo /usr/sbin/prelink -amfR ;;



Купи SSD.


Уже. Информация из «архива», скажем так.

blackst0ne ★★★★★
()
Ответ на: комментарий от wakuwaku
minix ~ # gcc --version | head -n1 && uname -a
gcc (Gentoo 4.9.0) 4.9.0
Linux minix 3.0.36+ #6 SMP PREEMPT Tue Oct 22 19:23:25 CST 2013 armv7l ARMv7 Processor rev 0 (v7l) RK30board GNU/Linux

Ну не знаю, что там можно было накосячить.

devl547 ★★★★★
()
Ответ на: комментарий от anonymous

у меня им собраны из постоянно работающего icedtea, polipo, tor и php (ну и вся остальная система до кучи).
изменений с 4.8.x не заметил, если честно.

devl547 ★★★★★
()
world_update(){
	## Sync portage tree and all overlays
	emerge --sync
	layman -S

	emerge -NDuav world
	emerge -av "@smart-live-rebuild"
	emerge -av "@revdep-rebuild"
	emerge -av "@module-rebuild"

	python-updater -- -avD1
	perl-cleaner --all
	revdep-rebuild -i -- -avD
	emerge -ca
	eclean -di distfiles -f

	etc-update
	env-update
	source /etc/profile

	eix-update
}

у меня так.

funeralismatic ★★★
()
Ответ на: комментарий от daemonpnz


почему live-rebuild, а не smart-live-rebuild?


Давно это было, уже не помню.

blackst0ne ★★★★★
()
Ответ на: комментарий от Black_Shadow


Зачем нужен case?


Legacy. Раньше было больше одного варианта в функции.

blackst0ne ★★★★★
()

Много правильных слов было сказано. От себя еще добавлю:
- Если есть обновление portage, то его рекомендуют установить первым
- Сейчас любят говорить, что revdep-rebuild больше не нужен. Мой опыт показывает что не обманывают.
- python-updater и perl-cleaner имеет смыл запускать только если обновляется perl и python. В скрипт я бы такого не ставил ибо в 95% случаев будет просто отъедать время.
- Рекомендую добавить --exclude gentoo-sources , ибо обновить ядро не значит сделать emerge.
- Еще рекомендую --exclude gcc --exclude glibc : есть мнение, что после такого неплохо бы пересобрать мир.
- Для ежедневного обновления рекомендую еще -exclude firefox --exclude libreoffice --exclude chromium --exclude kde-base/* --exclude qt-* ибо ежедневное обновление на то и ежедневное, чтобы успеть завершиться пока ты разденешься и примешь душ.

Сугубо мое ИМХО.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

Portage, ЕМНИП, автоматически предлагает обновить себя первым.

Касательно redvep-rebuild я прочитал следующее:

revdep-rebuild надо использовать тогда, когда разработчики какого-либо из пакетов решили изменить (повысить как правило) версию shared библиотек, которые этот пакет предоставляет. Возникает ситуация, когда фактически зависимости пакетов удовлетворены (с точки зрения emerge), но все зависимые пакеты перестают работать, т.к. используемая shared библиотека отсутствует. 
Как я понимаю, то же самое делает и emerge @preserved-rebuild — Какой-то пакет обновился, обновились его либы, старые были сохранены для совместимости с ещё не пересобранными пакетами, preserved-rebuild их пересобирает.

Про сырцы согласен. Как я понимаю, если сырцы обновлены, а ядро - ещё нет, то при попытке сборки какого-нибудь левого модуля (virtualbox или дров) получится незапускаемое на текущем ядре.

--exclude gcc --exclude glibc добавлю, спасибо

libreoffice у меня собирается час, остальное - меньше, так что, пусть живёт.

Спасибо за комментарий.

Valdor ★★
() автор топика
Ответ на: комментарий от Valdor

--exclude gcc --exclude glibc добавлю, спасибо

Учти, здесь мнения расходятся. Наверняка здесь по этому пункту кто-то скажет «у меня все работает». Вот здесь я уже на такое отвечал. Если вкратце (цитата): If one of the toolchain packages (Glibc, GCC or Binutils) needs to be upgraded to a newer minor version, it is safer to rebuild LFS. Так что дело каждого.


Как я понимаю, то же самое делает и emerge @preserved-rebuild

revdep-rebuild сканит запускаемые файлы и находит в них ссылки (зависимости) на несуществующие библиотеки (которых уже не существуют по причине апдейта или удаления). emerge @preserved-rebuild позволяет сохранять старые библиотеки при апдейте. То есть это не одно и то же, но emerge @preserved-rebuild обеспечивает то, что revdep-rebuild не найдет ссылок на несуществующие библиотеки. Я предпочитаю revdep-rebuild рассматривать как тулзу на случай «если что-то поломалось», тогда как emerge @preserved-rebuild - стандартный элемента апдейта.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

Старые библиотеки сохраняются автоматически при FEATURES=«preserve-libs». emerge @preserved-rebuild пересобирает пакеты, которые эти старые либы использовали. Вроде как, библиотекам в такой ситуации некуда деться, чтобы потребовался revdep-rebuild.

Valdor ★★
() автор топика
Ответ на: комментарий от wakuwaku

через день пофиксили, но нигде никаких упоминаний об этом. wtf? и вообще зачем его размаскировали, не совсем понятно.

wakuwaku ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.