Questão Como deixar o `dpkg -i` instalar dependências para mim?


Diga, eu tenho foo-1.2.3.deb que depende perl e pythonNo entanto, executando o comando:

dpkg -i ./foo-1.2.3.deb

não instalará essas dependências. Então eu devo apt-get install perl python à mão.

Como fazer dpkg -i instalar essas dependências para mim automaticamente?


260
2018-05-04 13:11


origem


Duplicação possível de Como buscar automaticamente as dependências ausentes ao instalar o software de .deb? - pd12
@ pd12: Hooray para referências circulares! :-D - David Foerster
heh, eu decidi ligar os dois e ver qual deles os mods selecionariam. - pd12
É incrível que em 2016, um A instalação gráfica do .deb ainda falha silenciosamente sem informar ao usuário nada sobre falta de dependências. - Dan Dascalescu


Respostas:


Depois de usar dpkg, executando o seguinte comando me ajudou a instalar as dependências necessárias:

sudo apt-get -f install

Ao todo, o seu terminal deve ficar assim:

$ sudo dpkg -i package_with_unsatisfied_dependencies.deb
dpkg: dependency problems prevent ... 
[additional messages]

$ sudo apt-get -f install
[apt messages]
Setting up [dependency]...
Setting up package_with_unsatisfied_dependencies...

Aviso prévio a linha sobre Setting up package_with_unsatisfied_dependencies. este Conserta (e conclui) a instalação de package_with_unsatisfied_dependencies.deb.


348
2018-05-04 15:38



Devo correr sudo dpkg -i mypackage.deb novamente ? - Muhammad Gelbana
Depois de correr sudo apt-get -f install meu pacote e suas dependências foram todos instalados. Corrida sudo dpkg -i my_package.deb é desnecessário e apenas instalará o pacote novamente. - Gus E
Seguintes trabalhos no Ubuntu 14.04: sudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.deb. O primeiro dpkg -i run correções dependências, apt-get -f install instala dependências necessárias e o segundo dpkg -iinstala com êxito o pacote. Observe que apt-get install -f é um comando totalmente diferente. - Mikko Rantalainen
@ysth não, não faça dpkg -i --force; isso forçará a instalação de um pacote quebrado! Corrida dpkg /sem/ --force fará a entrada necessária no banco de dados de pacotes para que apt-get -f install fará a coisa certa. - Brian A. Henning
@Lotharyx: Eu não posso tentar agora, mas eu não acho que o dpkg sem força (que falha devido a falta de dependências) faria uma entrada no banco de dados de pacotes - ysth


Você pode instalar gdebi-core, que é a versão de linha de comando do instalador de pacotes do GDebi de 10.04 e anterior. Nas versões mais recentes do Ubuntu, o Centro de Software é usado para instalar o debs, que não possui uma linha de comando equivalente.

Para instalar um pacote deb usando gdebi, apenas execute:

sudo gdebi my_package_1.0.deb

108
2018-05-04 14:47





Gdebi

gdebi instala um pacote deb e suas dependências. Para usá-lo, execute:

sudo gdebi package.deb

Nas versões mais recentes do Ubuntu, isso não é instalado por padrão, então você precisará instalá-lo a partir dos repositórios.

Vejo man gdebi para uma lista completa de opções.

gdebi é a linha de comando equivalente à ferramenta gráfica de mesmo nome que costumava ser incluída por padrão no Ubuntu. O comando para a ferramenta gráfica é gdebi-gtk e tem funcionalidade semelhante:

gdebi-gtk


35
2018-05-04 16:56



O gdebi-gtk não mostrará os deps necessários (a versão que eu tenho aqui pelo menos, e parece um bug), mas a linha de comando irá! Se tivermos outra máquina com os pacotes, podemos usar dpkg-repack nele baseado em tal lista deps :) - Aquarius Power


começando com o apt 1.1 (disponível no Xenial (16.04), stretch) apt install também permite arquivos locais:

sudo apt install ./foo-1.2.3.deb

Muito mais simples e limpo.

Veja o anúncio de lançamento


27
2017-07-05 09:23



Já é hora de isso estar disponível - Mike
Esta solução não funcionou. Tudo o que aconteceu foi uma lista de erros. - Billy S
@BillyS Lamentamos saber que não funcionou para você, mas sem a versão de distro que você está usando e os erros que você recebeu não são acionáveis. - textshell
O comando não funcionou para mim, mas apt ./install foo-1.2.3.deb trabalhado. - Cenk Alti
Corrigido o comando, os comentários acima referiam-se à versão anterior da resposta que não atendia aos requisitos necessários. ./ ou caminho - Zanna


corrida

sudo apt-get install -f

depois de instalar o pacote com o dpkg pode resolver dependências quebradas (pelo menos o homem apt-get diz isso ...). Eu vou atualizar quando eu vou verificar isso.


18
2018-05-04 13:17



Devo correr sudo dpkg -i mypackage.deb novamente ? - Muhammad Gelbana
apt-get -f install funciona, mas apt-get install -f Não é a mesma coisa. - 200_success


O dpkg não possui suporte a dependências. Há uma maneira de contornar isso, mas isso exigiria que você fizesse um banco de dados local (e, portanto, você já conheceria as dependências) e seria considerado obsoleto (...).

Tem que ser linha de comando? (instalação do servidor?) Se sim, dê uma olhada apt-get -f mas tenha cuidado: resolver dependências após a instalação pode fazer com que você acabe com um sistema corrompido.

gdebi (frontend gui) costumava ser capaz de fazer isso, mas foi substituído pelo USC.

Como você baixou o .deb. Alguns dos novos recursos do 11.04 são o manuseio do .deb baixado de um site: ele é aberto no USC, então as dependências serão resolvidas pelo instalador.

EDIT com base no comentário de andrew: sudo gdebi foo-1.2.3.deb  faria o truque !!


9
2018-05-04 13:32



O gdebi ainda pode ser usado para isso. O Centro de Software agora é apenas o aplicativo padrão. Além disso, como observa Chen Xiao-Long, o gdebi também pode ser usado na linha de comando. - andrewsomething
legal! então a pergunta tem uma resposta porque o gdebi também pode ser usado na linha de comando. - Rinzwind
Essa deve ser a resposta aceita. - prosti


Como uma alternativa para gdebi-gtk você pode usar o Ubuntu Software Center.

Clique duas vezes no pacote e um botão de instalação deve estar disponível.


3
2018-05-10 07:55





Você poderia criar um arquivo dpkg-dep-inst com o seguinte conteúdo.

#!/bin/bash

DEBIAN_FILE1=$1
dpkg -i $DEBIAN_FILE1 || apt-get --fix-broken install

Eu suponho que você criou o arquivo em sua pasta pessoal. Torne-o executável com chmod +x dpkg-dep-inst e mova-o para /usr/local/bin com sudo cp dpkg-dep-inst /usr/local/bin.

Agora você pode instalar o pacote debian com dependências automaticamente com:

sudo dpkg-dep-inst foo-1.2.3.deb

3
2018-01-28 16:01



Usar apt-get --yes --fix-broken install e faça a fixação automática. - Lucas
@ysth Não, não em geral. - BuZZ-dEE


Acabei de me deparar com este problema. Chamando apt-get install -f vai não instalar recomendadodependências, embora! A única solução para isso seria criar um repositório local e adicionar /etc/apt/sources.list, ou seja:

apt-ftparchive packages . > Packages && gzip < Packages > Packages.gz
sudo echo "deb file://$PWD /" >> /etc/apt/sources.list
sudo apt-get update

1
2018-02-10 15:19