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

2015-11-21 Пенетрантность Oleksandr Gavenko
On 2015-11-13, Dmitry Alexandrov wrote:

>   Полагаю, легкий некропостинг здесь будет уместным.
>
>   У Аптитьюда действительно зело «умный» решатель, по умолчанию опирающийся на
> некую величину под названием «безопасность» (safety), которая согласно
> документации «возрастает по мере того, как действия становятся менее
> „безопасными“» и настраивается пятью весовыми коэффициентами [1].
>
>   Мои попытки крутить эти коэффициенты не увенчались никаким успехом, посему я
> у себя везде расчет этой «безопасности» отключил и задал такое вот простое
> правило поиска уместного решения:
>
> Aptitude {
> ProblemResolver {
>   SolutionCost "removals, canceled-actions, non-default-versions";
> };
> };
>
>   Это выдержка из apt.conf (конкретно у меня — из
> /etc/apt/apt.conf.d/99aptitude) и читается она так: чем меньше удалений, тем
> лучше; при равном их количестве — чем меньше отказов на мои прямые указания
> установить / обновить / удалить что-либо, тем лучше; при равных — чем меньше
> пакетов не-умолчательного происхождения, тем лучше.
>
Класно!

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

Позднее я вчитывался в документацию aptitude-doc-en и освоился с кнопочками
'A'/'R':

  You can guide the dependency resolver to a solution of which you approve by
  approving or rejecting the individual actions of a solution. If you approve an
  action, the resolver will choose it whenever possible, ignoring alternatives
  (when there are several approved alternatives, any one of them could be
  chosen). On the other hand, if you reject an action, the resolver will never
  choose that action.

Пометки позволяют быстрее приблизится к удовлетворительному решению в
**большинстве случаев**.

После пометок следующее решение будет ближе к тому что хочется и т.д. Но если
руками заставим чего то установиться/удалиться - то пометки "сбрасываются" и
нужно наклацывать заново.

Работа решателя описана в aptitude-doc-en

  Costs in the interactive dependency resolver

и там оказывается можно даже арифметические выражения использовать!

-- 
Best regards!



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

2015-11-13 Пенетрантность Dmitry Alexandrov

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




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

2015-08-11 Пенетрантность Oleksandr Gavenko
Вместо:

  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 еще мешается.