Я пытаюсь автоматически установить пакеты, не задавая пользователю вопросов. Для ниже ситуации, aptitude
выбирает "Keep" в качестве первого решения и не устанавливает pkg_b. И я хочу вызвать aptitude
выбрать решение "для Установки" и обновить pkg_a.
$ sudo aptitude install -y -f --no-gui --without-recommends \
-o Dpkg::Options::='--force-confnew' \
-o Debug::pkgProblemResolver=yes \
pkg_a=1.1 pkg_b=1.2
The following NEW packages will be installed:
pkg_b{b}
0 packages upgraded, 1 newly installed, 0 to remove
The following packages have unmet dependencies:
pkg_b : Depends: pkg_a (= 1.2) but 1.1 is installed.
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) pkg_b [Not Installed]
Если я вручную (без -y
) выполненный выше команды, и затем отвечают .
(.
: переместитесь в следующее решение), способность предлагает другое решение:
The following actions will resolve these dependencies:
Install the following packages:
1) pkg_b [1.2 (stable)]
Upgrade the following packages:
2) pkg_a [1.1 (now, stable) -> 1.2 (stable)]
Таким образом, это решение является лучшим для меня.
Обработанное решение, должен добавить этот параметр:
-o Aptitude::ProblemResolver::SolutionCost='100*canceled-actions,200*removals'
Найденный путем рассмотрения этот руководство. Как это работает - мы просто увеличиваем затраты на решения, которые aptitude
будут использованием:
canceled-actions
счетчик) removals
счетчик, потому что мы хотим, сохраняют pkgs, если aptitude
решают к , удаляют это