k001
k001
:...

April 2032
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

k001 [userpic]
gentoo portage problem

Я таки на втором году использования Gentoo Linux, в чём заключается одна довольно глобальная проблема с ним.

Проблема в том, что апгрейд системы -- часто "разорванный", двухстадийный. Сначала emerge предлагает нам заапдейтить какую-нибудь libsmth, и уже потом, после этого апдейта, выясняется (запуском revdep-rebuild), что теперь десяток пакетов, использующих старую версию этой библиотеки, работать не будут и их тоже нужно перебилдить. Таким образом, апгрейд пусть временно, но ломает систему. Что для домашней машины неприятно, а для продакшен системы неприемлемо.

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

Если сформулирую это лучше, зафайлю баг в Генту. Впрочем, не удивлюсь, если он там есть.

Comments

"То, что является геморроем майнтайнеров в binary-based дистрибутивах, является геморроем пользователей в source-based", что и требовалось доказать :)

В том же Debian о таких проблемах приходится думать не пользователю, а автору buildd, на которой пакеты собираются.

Гы, а если некая старая libfoo не пересобирается с новой версией libsmth, тогда и её придётся проапгрейдить? А потом все зависящие от libfoo пакеты =) И так много раз.

Опция --deep у emerge разве не для этого самого предназначена ?

почему — см. ниже

а --deep для чего?

       --deep (-D)
              When used in conjunction with --update, this flag forces  emerge
              to  consider  the entire dependency tree of packages, instead of
              checking only the immediate dependencies of the packages.  As an
              example, this catches updates in libraries that are not directly
              listed in the dependencies of a package.


При этом, если app/some (в случае --deep — в том числе и косвенно) требует libsmth, а последняя апгрейдится, то app/some будет «considered» — то есть если для неё новой версии нет, она всё равно не будет перебилживаться.

Ну так извини меня, у нас весь софт за редкими исключениями backwards-compatible. Причём если изначально не брать grp, то у меня, к примеру, revdep-rebuild ещё ни разу ничего не пересобирал.
А насчёт prod-серверов - тут вопрос политики. На работающем серваке ещё что-то левое собирать - только время зря тратить. Я для апдейта останавливаю машину и накатываю rsyncом.

У меня пересобирал. чаще всего mplayer ломается — много либ очень у него.

На работающем серваке … Я для апдейта останавливаю машину

ого

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

Ну в смысле вывожу её из обоймы работающих ;) Не выключаю же ;)

(Anonymous)
все просто

emerge -NDp world
и man emerge спасет тебя!

Re: все просто

Не понимаю, каким образом флаг --newuse (ну или флаг --deep) тут поможет.