Como deixar o 'dpkg -i' instalar dependências para mim?

248

Digamos que eu tenha foo-1.2.3.deb , o que depende de perl e python , no entanto, executando o comando:

dpkg -i ./foo-1.2.3.deb

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

Como fazer com que dpkg -i instale essas dependências automaticamente?

    
por Xiè Jìléi 04.05.2011 / 15:11

9 respostas

332

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

sudo apt-get -f install

No geral, 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...

Observe a linha sobre Setting up package_with_unsatisfied_dependencies . Este corrige (e completa) a instalação de package_with_unsatisfied_dependencies.deb .

    
por Arindom 04.05.2011 / 17:38
107

Você pode instalar o gdebi-core , que é a versão de linha de comando do instalador do pacote 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
    
por Andrew Gunnerson 04.05.2011 / 16:47
34

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.

Veja 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:

    
por dv3500ea 04.05.2011 / 18:56
24

iniciando 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 comunicado de lançamento

    
por textshell 05.07.2016 / 11:23
18

executando

sudo apt-get install -f

depois de instalar o pacote com o dpkg pode resolver as partições quebradas (pelo menos o homem apt-get diz isso ...). Eu vou atualizar quando eu vou verificar isso.

    
por Denwerko 04.05.2011 / 15:17
8

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 é considerado obsoleto (...).

Precisa ser linha de comando? (instalação do servidor?) Em caso afirmativo, dê uma olhada em apt-get -f mas tenha cuidado: resolver dependências após a instalação pode resultar em um sistema corrompido.

gdebi (frontend gui) costumava ser capaz de fazer isso, mas foi substituído pela 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 !!

    
por Rinzwind 04.05.2011 / 15:32
3

Como alternativa ao 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.

    
por Henrique 10.05.2011 / 09:55
3

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

#!/bin/bash

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

Suponho que você tenha criado 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
    
por BuZZ-dEE 28.01.2013 / 17:01
0

Acabei de me deparar com este problema. No entanto, chamar apt-get install -f não instalará dependências recomendadas ! A única solução para isso seria criar um repositório local e adicionar a /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
    
por Alex Kläser 10.02.2016 / 16:19

Tags