Понимание portage и параметров emerge
Несколько дней назад поставили даный дистрибутив и вот начал знакомиться с portage и утилитой emerge. Читал хэндбук и маны, но некоторые вопросы есть, а именно детального понимания. Вот, например, в emerge есть параметр --deep, я так понимаю, что при использовании emerge --update без даного параметра мы можем обновить пакет или world, но emerge проверит только версию пакета, но ни его зависимости. В хэндбуке: написано "Portage не будет тщательно проверять их зависимости", как это понять, значит какие-то зависимости он проверяет? В случае --deep проверяется полное дерево - "This flag forces emerge to consider the entire dependency tree of packages", а какой уровень проверяет emerge без deep? И в чем может быть выгода использования deep, если, например, emerge update без deep в случае новой версии потянет за собой обновления зависимостей?
Еще интересен вопрос параметра --emptytree (-e), в чем отличии даного параметра от --deep, выходит, что --emptytree отслеживает полное дерево зависимостей, а --deep до определенного уровня?
И последний вопрос касается --depclean. Пишут, что может снести нужные пакеты, как это может произойти и можно ли как-то застраховаться от этого.
Всем заранее спасибо. Может вопросы нубские и очевидные, но пока нету полного представления устройства portage, а хочется начать знакомство з генту именно с этого.
- Для комментирования войдите или зарегистрируйтесь
Без '--deep' (-D) при
Без '--deep' (-D) при выполнении команды
emerge проверит только наличие новых версий пакетов, которые находятся в списке wordl, т.е. находятся в файле /var/lib/portage/world. Если доступна новая версия пакета, указанного в world, то в случае, если для сборки новой версии пакета не нужно обновлять зависимости, требуемые для сборки этого пакета, то пакет будет собран с текущими версиями зависимостей, даже если есть более новые версии пакетов-зависимостей для обновляемого пакета. Если для сборки пакета требуется и обновление пакета-зависимости, то в этом случае в начале обновиться зависимость.
Если же вы указываете опцияю '--deep' (-D), то при обновлении пакетов из world в начале проверятся доступные обновления для пакетов-зависимостей, а уже затем произойдёт обновление пакетов в world.
Параметр '--emptytree' (-e) заставит пересобрать все пакеты-зависимости указанного и пакеты-зависимости зависимостей, иак до самого низа, будут пересобраны все пакеты, которые на каком-либо из уровней являются пакетами-зависимостями для указанного, даже если нет новых версий этих пакетов.
emerge man
Вот еще нашел в man про '--deep': "This flag forces emerge to consider the entire dependency tree of packages, instead of checking only the immediate dependencies of the packages. " Странно, с этого описания выходит, что emerge без '--deep' проверит "immediate dependencies". Выходит, что это зависимости первого уровня - зависимости пакета.
А с deep написно - "entire dependency tree of packages", тут выходит полное дерево зависимостей - зависимости зависимостей, но это противоречит '--emptytree'. Значит '--deep' проверяет до определенного уровня, но не ясно до какого.
Цитата: но это противоречит
Ничему это не противоречит. Ещё раз, '--emptytree' (-e) просто принудительно пересоберёт все пакеты которые вляются зависимостью указанного на каком-либо уровне указанного.
kostik87
Ага, точно, --emptytree - пересборка, не обратил внимания на это ключевое слово.
Значит --emptytree будет пересобирать до того момента, пока не закончатся зависимости зависимостей. Я так понимаю, что --emptytree удобно использовать при смене use флагов.
Но вот интересен вопрос уровней обновления '--deep'.
Вот нашел еще похожую тему про --deep: http://www.gentoo.ru/node/24616
Тут есть такое сообщение:
Значит выходит, что в даном примере без использования '--deep' обновление пакетов X и Y будет происходить даже если пакет * не нуждается в обновлении. С "--deep" все пойдет глубже, и a,b,c,d,e тоже будут обновлены.
/
Результат решения задачи расчёта графа зависимостей зависит в том числе от правильности исходных данных.
Что гарантировать для произвольного пакета в произвольный момент времени... несколько затруднительно.
Если вдруг такая оказия произойдёт,
revdep-rebuild
(из пакетаapp-portage/gentoolkit
) спасёт вождя мирового пролетариата.ЗЫ: Типовой пример (насколько оно актуально с учётом последних нововведений пока не скажу): зависимости удовлетворяются и старой и новой версиями библиотек. Старая удаляется. Правда сами файлы оставляются (оставлялись) для последующей ручной зачистки, о чём честно предупреждает portage.
:wq
--
Live free or die