Комментарии к проблемам использования портежей
George Shapovalov
Вводное слово разместителя: В связи обсуждением топика Отношения использования и зависимости на форуме Gentoo.ru Георгий Шаповалов (senjor developer of Gentoo Linux) любезно согласился прокомментировать некоторые из возникших там вопросов. Текст этих комментариев и приводится ниже. Надесюь, он поможет прояснить возникавшие проблемы (а также избажать таковых впредь).
Что касаемо проблемы, с которой Вы столкнулись, то это может быть связано с portage-2.0.46-р11, он имел какие-то проблемы (правда, о том, чтобы он пытался выполнить unmerge gcc/glibs, я не слышал) и просуществовал всего несколко часов, прежде чем был маскирожан в package.mask. Стабильный профиль не был затронут, то есть все происходило только в профиле ~arch. Время в headers постингов примерно соответствует тому моменту, так что если Вы перед этим или в процессе видели portage-2.0.46-р11 в списке пакетов, подвергнутых upgrade, то это вполне могло быть из-за этой версии portage.
В этой связи лишь хочу отметить, что рекомендация Kot'а очень дельная -
если хотите избежать подобных ситуаций (а особенно при начальной установке,
выполняя bootstrap или emerge system), стоит ораничиться стабильным профилем, то есть сохранить значение
ACCEPT_KEYWORDS=x86
Этот профиле обновляется реже и более планомерно, и по стабильности в общем-то не уступает Debian'у, да и сильно не отстает от профиля ~arch. Если нужна последняя версия определенного пакета, можно выполнить:
ACCEPT_KEYWORDS=~arch emerge pkgname
Тестовый профиль предназначен в первую очередь для тестирования вновь
поступающих пакетов, использование его как базового достаточно рискованно
и, соответственно, требует осторожности. В любом случае, при использовании
тестового профиля рекомендуется всегда выполнить предварительно
emerge -p ...
Впрочем, это хорошая привычка в любом случае.
Рассматриваемые ситуации также могли быть связаны (и это, пожалуй, даже более вероятно) с пакетом baselayout: его версия 1.8.6.2 случайно проскочила из package.mask в unstable profile и была вскорости обратно "hard masked" (то есть переведена package mask).
Еще одна вещь, о которой следует упомянуть, - это команда
emerge ingect =pkg-PV-PR
Она позволяет зарегистрироватт определенную версию пакета без его установки.
Ее можно применить, если, скажем, после очередного выполнения rsync Вы проверили результат
emerge -pu world
и в целом Вам все нравится, вот только Вы не хотите выполнить upgrade какого-то определенного пакета. Тогда его можно просто принудительно включить в дазу данных как обновленный, выполнив команду
emerge inject =pkg-PV-PR
и затем спокоино выполнять
emerge -u world
Естественно, при этом желательно знать, что и зачем делается :). Впрочем, если такой принудительно включенный пакет был необходимой зависимостью для какого-то другого, это будет поймано при компиляции. Но зато такой способ позволяет обходить узкие места, если, скажем, новая версия какой-то библиотеки конфликтует с чем-либо необходимым, а старая позволяет установить все остальное. Параллельно с таким обходным маневром очень желательно создать в Gentoo Bugzilla новый bug, описывающий проблему. И если есть идеи о том, как это разрешить - тоже очень рекомендуется включить их в описание bug'а. Хотя, конечно, такая необходимость может возникнуть и на вполне законных основаниях:).
Примечание разместителя: О том, как правильно составлять сообщения об ошибках для проекта Gentoo Linux, Георгий в скором времени расскажет на страницах нашего сайта.