Faça com que o “aptitude” escolha automaticamente a solução “Install” em vez de “Keep”

0

Estou tentando instalar pacotes automaticamente sem fazer perguntas ao usuário. Para a situação abaixo, aptitude escolhe "Manter" como a solução primeiro e não instala pkg_b . E eu quero forçar o aptitude a selecionar a solução "Instalar" e atualizar o 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]

Se eu manualmente (sem -y ) executar o comando acima e responder . ( . : passar para a próxima solução), aptitude sugere outra solução:

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)]

Portanto, esta solução é melhor para mim.

    
por Sergey Voronezhskiy 24.05.2016 / 13:49

1 resposta

0

Solução trabalhada, é adicionar este parâmetro:

-o Aptitude::ProblemResolver::SolutionCost='100*canceled-actions,200*removals'

Veja o manual . Como funciona - nós apenas aumentamos os custos das soluções que serão usadas em aptitude :

  • Não mantenha , se você puder instalar ou atualizar (aumentando canceled-actions counter)
  • Aumentar removals contador, porque queremos manter os pacotes se aptitude decidir excluir
por Sergey Voronezhskiy 24.05.2016 / 17:44