Como fazer com que o apt ignore dependências não preenchidas do pacote instalado?

3

Eu instalei o Opera 12.16 de um .deb por razões. Apenas suponha que eu preciso deste navegador específico desta versão específica e que não há alternativa.

No entanto, esse deb depende de pacotes (como a série gstreamer0.10) que não estão mais na minha distribuição (teste Debian). Isso faz com que o apt falhe em todas as operações , exceto apt remove opera com erros de dependência:

# apt install cli-common
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 opera : Depends: gstreamer0.10-plugins-good but it is not installable
         Recommends: flashplugin-nonfree but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

apt --fix-broken install apenas proporá a remoção da ópera:

# apt --fix-broken install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages will be REMOVED:
  opera
0 upgraded, 0 newly installed, 1 to remove and 92 not upgraded.
1 not fully installed or removed.
After this operation, 46.6 MB disk space will be freed.
Do you want to continue? [Y/n]

Atualmente, minha solução é instalar o Opera quando eu precisar dele e removê-lo assim que qualquer outra coisa precise ser feita com o apt. Isso é chato.

Alguma sugestão? Idealmente, gostaria de fazer com que o apt ignore as dependências da ópera para sempre, já que funciona bem o suficiente para os meus propósitos.

    
por Jonas Schäfer 14.11.2017 / 10:30

2 respostas

5

Não é possível fazer apt ignorar dependências, mas você pode criar um pacote gstreamer0.10-plugins-good falso que satisfará a dependência ausente. A maneira mais simples de fazer isso é usar equivs :

  1. instale equivs

    sudo apt install equivs
    
  2. gera um arquivo de controle de modelo

    equivs-control gstreamer0.10-plugins-good.control
    
  3. corrija o nome do pacote

    sed -i 's/<package name; defaults to equivs-dummy>/gstreamer0.10-plugins-good/g' gstreamer0.10-plugins-good.control
    
  4. construa o pacote

    equivs-build gstreamer0.10-plugins-good.control
    
  5. instale-o

    sudo dpkg -i gstreamer0.10-plugins-good_1.0_all.deb
    

Isso deve satisfazer a dependência do pacote opera .

    
por 14.11.2017 / 10:43
2

Você também pode remover a dependência gstreamer0.10-plugins-good do pacote opera editando /var/lib/dpkg/status .

Basta abri-lo com um editor de texto, pesquise a linha Package: opera e, abaixo dela, na linha Depends: , remova o pacote ofender gstreamer0.10-plugins-good .

Depois disso, apt funciona novamente.

    
por 12.04.2018 / 10:03