[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: aptitude предлагаетгромадноеколичестворазрешенийконфликтов,котороеменянеустраивает, apt-get remove --purge --auto-remove справляетсясзадачей.



On 11/08/15 16:07, Oleksandr Gavenko wrote:
Вместо:

   bash# sudo apt-get purge --auto-remove systemd

я пометил пакет на удаление в интерактивном режиме aptitude и пометил
sysvinit на установку.

aptitude было предложено громадное количество разрешений конфликтов. У меня
не хватило терпения пересмотреть все (там их за сотню), но необходимый мне
вариант не был представлен.

aptitude упорно предлагал оставить/обновить systemd и не ставить sysvinit.

apt-get purge конешно справился с задачей, но мне интересно как завтавить
aptitude в интерактивном режиме быстрее прийти с нужному мне решению?

Одним из способов во многих сесиях работы с aptitude было прочтение причин
почему пакет не устанавливается или кто его требует, искать и помечать на
удаление/инсталяцию следующие пакеты, пока предложения aptitude по
разрешению конфликтов не станут приемлимыми. Но это иногда занимало 5-10 мин
клацанья.

Возможно дополнительную сложность представляют зависимости из используемых
веток testing/sid + i386 еще мешается.

  Полагаю, легкий некропостинг здесь будет уместным.

У Аптитьюда действительно зело «умный» решатель, по умолчанию опирающийся на некую величину под названием «безопасность» (safety), которая согласно документации «возрастает по мере того, как действия становятся менее „безопасными“» и настраивается пятью весовыми коэффициентами [1].

Мои попытки крутить эти коэффициенты не увенчались никаким успехом, посему я у себя везде расчет этой «безопасности» отключил и задал такое вот простое правило поиска уместного решения:

Aptitude {
    ProblemResolver {
	SolutionCost "removals, canceled-actions, non-default-versions";
    };
};

Это выдержка из apt.conf (конкретно у меня — из /etc/apt/apt.conf.d/99aptitude) и читается она так: чем меньше удалений, тем лучше; при равном их количестве — чем меньше отказов на мои прямые указания установить / обновить / удалить что-либо, тем лучше; при равных — чем меньше пакетов не-умолчательного происхождения, тем лучше.

Мне сложно сказать, как это соотносится с алгоритмом решателя apt или apt-get’а, но теперь предложения Аптитьюда я нахожу в целом здравыми, тогда как раньше предложения удалить полсистемы или сделать все что угодно, но только не то, что я приказал (ваш случай), были не редкостью.

  Не хватает, по моему мнению, здесь только возможности добавить счетчик
устарений (downgrades) и поставить его перед non-default-versions, ибо при наличии в системе пакетов из следующих выпусков Дебиана Аптитьюд при таких настройках ожидаемо предлагает их откатить.

  Надо было как минимум фичреквест, наверное, написать — может и добавили
бы уже (счетчик ‘upgrades’ же уже есть, так что, наверное, не проблема), но лень. :-)

[1]: https://aptitude.alioth.debian.org/doc/en/ch02s03s04.html#secDependencyResolutionCostsSafetyCosts


Reply to: