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


600

Eu tenho um pacote deb para instalação.

Devo instalar por dpkg -i my.debou pelo apt?

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

Se pelo apt, como posso instalar a partir da deb pelo apt?


Você pode usar o aptitudeque remove pacotes desnecessários também.
Ramesh

2
Eu recomendo não usar diretamente dpkg. No caso de uma única deb, vá com gdebi e, no caso de várias debs, vá para o repositório local do APT .
Pandya

5
Por que ......... @Pandya
Tim

2
@ Tim porque dpkgnão resolve dependências.
Pandya

1
O @Tim gdebi identifica dependências ausentes, pode baixar e instalar (usando o apt), pode instalar e configurar (usando o dpkg).
quer

Respostas:


771

Quando você usa aptpara instalar um pacote, ele é usado sob o capô dpkg. Quando você instala um pacote usando o apt, ele primeiro cria uma lista de todas as dependências e o baixa do repositório.

Uma vez concluído o download, ele solicita dpkga instalação de todos esses arquivos, satisfazendo todas as dependências.

Então, se você tem um .debarquivo:

  • Você pode instalá-lo usando:

    sudo dpkg -i /path/to/deb/file
    sudo apt-get install -f
    
  • Você pode instalá-lo usando sudo apt install ./name.deb(ou sudo apt install /path/to/package/name.deb).

    Nas apt-getversões antigas, você deve primeiro mover seu arquivo deb para o /var/cache/apt/archives/diretório Para ambos, após executar este comando, ele fará o download automaticamente de suas dependências.

  • Instale gdebie abra o arquivo .deb usando-o ( clique com o botão direito do mouse -> Abrir com ). Ele instalará o pacote .deb com todas as suas dependências.

    ( Nota : O APT mantém o índice do pacote, que é um banco de dados de pacotes disponíveis, disponível no repositório definido no /etc/apt/sources.listarquivo e no /etc/apt/sources.list.ddiretório. Todos esses métodos falharão em satisfazer a dependência do software se as dependências exigidas pela deb não estiverem presentes no índice do pacote .)


Por que usar sudo apt-get install -fdepoissudo 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 dpkginstala um pacote e uma dependência de pacote não é satisfeita, ele deixa o pacote em um estado "não configurado" e esse pacote é considerado quebrado.

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


2
@ Tim, o apt-get foi projetado para instalar pacotes do repositório. Ele mantém a lista de pacotes, bem como o respectivo endereço de repositório. Portanto, apenas mover um arquivo .dev, que não está presente na lista de pacotes do apt, no diretório / var / cache / apt / archives não funcionará. Porque sempre que você tenta instalar este pacote usando o apt-get, ele procura seu repositório, que não está presente. Para isso, você deve criar um repositório local que, na minha opinião, é inútil.
6605 g_p

1
@g_p obrigado! Estou um pouco confuso em sua resposta acima. você escreve: "(funcionará se o pacote .deb estiver presente na lista de pacotes apt)" - Eu não entendo o que se entende aqui. Como garantir que o pacote .deb esteja presente na lista de pacotes apt?
precisa saber é o seguinte

1
@BKSpurgeon, adicionei informações pouco na minha resposta. Para descobrir se um pacote está presente no índice ou não é executado apt-cache search <package name>. Você também pode usar apt-cache policy <package name>, o que também fornecerá algumas informações adicionais.
g_p 29/01

1
Esses métodos ainda executarão a verificação de assinatura normalmente executada pelo apt? Ou é possível que um arquivo .deb violado seja instalado dessa maneira?
quer

8
O apt-get moderno pode ser usado para instalar um pacote simplesmente com apt-get install /path/to/package/name.deb. Seria legal se o autor desta resposta decidisse integrar isso. Se não, eu vou acrescentar que a resposta em algum momento quando tenho rep suficiente aqui
Sam Hartman

91

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


Eu Unable to locate packagetentei assim e fiquei confuso. Eu usei como no Windows apenas o nome do pacote depois de mudar para a pasta de arquivamento. Deve ser ./<file name>para Unix se estiver na pasta atual ou no caminho completo. Ou seja, se debnão estiver na pasta presente em PATH.
Alexei Martianov 28/05

60

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

sudo gdebi skype.deb

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

Por que gdebi?

gdebiprocurará todas as dependências do .debarquivo e as instalará antes de tentar instalar o .debarquivo. Acho isso muito preferível do que sudo dpkg -i skype.deb && sudo apt install -f. O ú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 compize unity! gdebideu uma mensagem de erro muito mais clara:

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

(Aqui está a solução para esse problema específico , a propósito.)


trabalhou muito bem! btw, poderia ser que a tentativa de remover fosse sobre pacotes transitórios / temporários? ou você acha que isso realmente quebraria o sistema?
Aquarius Power

Cara, eu tive um problema com sua solução. Eu estava tentando instalar o Rstudio. Ele encontrou automaticamente uma versão antiga do R para mim. Enquanto usava a solução @g_p, consegui instalar apenas o Rstudio.
Dr_Hope 19/01

39

Você pode instalar um pacote local .deb:

sudo apt install ./foo.deb

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


2
Isso deve ser marcado como a resposta correta.
Rael Gugelmin Cunha

@RaelGugelminCunha não está 100% correto. sudo apt install libstdc ++ 6_8-20180414-1ubuntu2_amd64.deb apt: erro ao carregar bibliotecas compartilhadas: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: cabeçalho ELF inválido
mvladk

2
@mvladk Por favor, preste atenção à sintaxe: você está perdendo o ./antes do debarquivo.
Rael Gugelmin Cunha

Absolutamente a melhor / mais simples resposta.
gerardw 14/07

15

Verifique as dependências com dpkg -I my.debe apt-get installas dependências antes dpkg -i my.deb.

Pode ser que você pode copiar o my.debem /var/cache/apt/archivese instalá-lo diretamente com apt-getmas eu nunca tentei. Não funciona apt-gete dpkgestá procurando pacotes listados nos arquivos.


Obrigado. no seu primeiro sentido, você quer dizer apt-get install my.debcom apt-get install? É para instalar a partir do arquivo deb? Por que precisamos dpkg -i my.debdepois disso?
Tim

Eu sempre instalado locais .debs com dpkg -i, meu entendimento é que aptnão tem uma opção para instalá-los, além do diretório no /var/cache/...qual são baixados (posso estar errado)
Alex

Parece que apt-get install ./my.debisso fará alguma coisa, porque gera muitas coisas. O que isso faz?
Tim

Ele faz muito :-) não funcionar, veja @Igor_Dvoretskyi resposta é simplesmente perfeito, eu esqueci-f
Alex

5

A resposta mais simples seria usar o dpkg executando dpkg -i packagename.deb. Você pode 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 fazer referência a ele como um pacote com dependências e não como um arquivo .deb independente.
Além disso, adicionando-o ao seu diretório apt-get archives, você tem a oportunidade de usar dependências apt-get install packagename. Isso permitiria que você o instalasse com quaisquer dependências adicionadas manualmente, em vez do sistema autônomo baseado em arquivamento do dpkg.



-3

É muito simples se eu quiser instalar o Chrome.

Instale seu arquivo Chrome como:

dpkg -i googlechrome.deb.

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

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

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

apt-get install -f

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.