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

264

Digamos que eu tenha foo-1.2.3.deb , 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

10 respostas

354

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
108

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
35

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
30

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
9

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=$1
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
1

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
0

Na verdade, a resposta é que dpkg gerenciador de pacotes não pode instalar dependências prontas para uso. Você cam man dpkg e descobriu isso. Portanto, você precisa usar ferramentas como apt , apt-get , aptitude , ..., com base em dpkg .

Eu diria que o mesmo caso é para o gerenciador de pacotes rpm no outro hemisfério Linux. rmp não foi feito para fazer instalações baseadas em dependência. Ele pode instalar pacotes únicos e, para instalar as dependências que você usa yum , urpmi , up2date , todos eles são baseados em RPM.

Como foi observado, há um pequeno risco de instalar pacotes com dpkg diretamente, porque a resolução posterior de resolução de dependência pode acabar com um sistema corrompido como descrito por @Rinzwind.

    
por prosti 16.08.2018 / 21:05