Como instalar um arquivo deb, por dpkg -i ou por apt?

454

Eu tenho um pacote deb para instalação.

Devo instalar por dpkg -i my.deb ou pelo apt?

Os dois lidarão bem com o problema de dependência de software?

Se por apt, como posso instalar a partir do deb pelo apt?

    
por Tim 03.10.2014 / 17:52

8 respostas

575

Quando você usa apt para instalar um pacote, internamente ele usa dpkg . Quando você instala um pacote usando o apt, ele primeiro cria uma lista de todas as dependências e faz o download do repositório.

Quando o download terminar, ele chamará dpkg para instalar todos esses arquivos, satisfazendo todas as dependências.

Então, se você tiver um arquivo .deb :

  • Você pode instalá-lo usando sudo dpkg -i /path/to/deb/file seguido por sudo apt-get install -f .

  • Você pode instalá-lo usando sudo apt install ./name.deb (ou sudo apt install /path/to/package/name.deb ).
    Com as versões apt-get antigas, você deve primeiro mover seu arquivo deb para o diretório /var/cache/apt/archives/ . Para ambos, depois de executar este comando, ele baixará automaticamente suas dependências.

  • Instale gdebi e abra seu arquivo .deb usando-o ( Clique com o botão direito do mouse em - > Abrir com ). Ele irá instalar o seu pacote .deb com todas as suas dependências.

    ( Observação : o APT mantém o índice de pacotes, que é um banco de dados de pacotes disponíveis no repositório definido no arquivo /etc/apt/sources.list e no diretório /etc/apt/sources.list.d . Todos esses métodos falharão para satisfazer a dependência do software se as dependências exigidas pelo deb não estiverem presentes no índice do pacote.)

Por que usar sudo apt-get install -f após sudo dpkg -i /path/to/deb/file (mencionado no primeiro método).

De man apt-get

 -f, --fix-broken
           Fix; attempt to correct a system with broken dependencies in place.

Quando dpkg instala uma dependência de pacote e pacote não é satisfeita, deixa o pacote em unconfigured state e esse pacote é considerado quebrado.

O comando

sudo apt-get install -f tenta corrigir este pacote quebrado instalando a dependência ausente.

    
por 03.10.2014 / 18:59
84

Instale seu arquivo foo.deb com dpkg -i foo.deb . Se houver alguns erros com dependências não resolvidas, execute apt-get install -f posteriormente.

    
por 03.10.2014 / 18:15
48

Aqui está a melhor maneira de instalar um arquivo .deb no Ubuntu na linha de comando:

sudo gdebi skype.deb

Se você não tiver o gdebi instalado, instale-o usando sudo apt install gdebi-core .

Por que gdebi?

gdebi procurará todas as dependências do arquivo .deb e as instalará antes de tentar instalar o arquivo .deb . Eu acho isso muito preferível do que sudo dpkg -i skype.deb && sudo apt install -f . Este último está muito ansioso para remover dependências em determinadas situações. Por exemplo, quando tentei instalar o Skype, ele tentou remover 96 (!) Pacotes, incluindo pacotes como compiz e unity ! gdebi deu uma mensagem de erro muito mais clara:

 $ sudo gdebi skype.deb
 Cannot install 'libqtgui:i386'

(Aqui está a solução para essa questão em particular , a propósito.)

    
por 27.12.2016 / 10:15
19

Você pode instalar um pacote .deb local por:

sudo apt install ./foo.deb

Certifique-se de especificar um caminho relativo ou absoluto local ( ./ se estiver no diretório atual), caso contrário, ele procurará foo.deb nos repositórios remotos e falhará.

    
por 28.06.2017 / 03:26
12

Verifique as dependências com dpkg -I my.deb e apt-get install das dependências antes de dpkg -i my.deb .

Pode ser que você possa copiar o my.deb em /var/cache/apt/archives e instalá-lo diretamente com apt-get , mas nunca tentei. Não funciona, apt-get e dpkg estão procurando por pacotes listados em arquivos.

    
por 03.10.2014 / 17:59
5

A resposta mais simples seria usar o dpkg executando dpkg -i packagename.deb . Você pode então desinstalá-lo executando dpkg -r packagename.deb .
apt-get é um instalador de nível superior baseado no dpkg e, como tal, você poderia apt-get install packagename.deb .
Seria benéfico adicioná-lo ao seu diretório apt-get archives ( /var/cache/apt/archives ) para que você possa referenciá-lo como um pacote com dependências e não um arquivo .deb independente.
Além disso, adicionando-o ao diretório apt-get archives, você tem a oportunidade de usar dependências com apt-get install packagename . Isso permitiria que você o instalasse com quaisquer dependências adicionadas manualmente, em vez do sistema baseado em archive independente do dpkg.

    
por 02.03.2015 / 03:53
4

O moderno apt-get pode ser usado para instalar um pacote simplesmente com apt-get install /path/to/package/name.deb .

(deve ser feito como edição para a resposta principal, mas foi rejeitado - consulte o link )

    
por 17.07.2017 / 11:01
-2

É muito simples se eu quiser instalar o Chrome.

Instale seu arquivo do Chrome como:

dpkg -i googlechrome.deb.

Às vezes, há uma chance de obter alguns erros de dependência, como o seguinte:

dpkg: dependency problems prevent configuration of google-chrome-stable:
google-chrome-stable depends on libappindicator1; however:
Package libappindicator1 is not installed.

Então, para resolver os problemas acima, você precisa adicionar dependências; dê o seguinte comando:

apt-get install -f

Depois de dar o comando acima, as dependências serão adicionadas à sua máquina e o seu pacote Debian ( .deb ) será instalado.

    
por 14.12.2017 / 10:22