Re: aptitude предлагаетгромадноеколичестворазрешенийконфликтов,котороеменянеустраивает, apt-get remove --purge --auto-remove справляетсясзадачей.
- To: debian-russian@lists.debian.org
- Subject: Re: aptitude предлагаетгромадноеколичестворазрешенийконфликтов,котороеменянеустраивает, apt-get remove --purge --auto-remove справляетсясзадачей.
- From: Dmitry Alexandrov <321942@gmail.com>
- Date: Fri, 13 Nov 2015 20:18:38 +0300
- Message-id: <[🔎] n2561l$nvu$1@ger.gmane.org>
- In-reply-to: <loom.20150811T140049-539@post.gmane.org>
- References: <loom.20150811T140049-539@post.gmane.org>
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: