Diferença entre `dpkg -i` e` apt-get install`

16

De todas as outras perguntas e respostas (como: Qual é a diferença entre dpkg e aptitude / apt-get? ) Entendo que apt-geté um invólucro dpkge fornece gerenciamento de dependências.

Supondo que estou instalando algo que não possui nenhuma dependência (ou eles também estão instalados ao mesmo tempo), haveria alguma diferença entre instalá-lo usando apt-getvsdpkg

Por exemplo (tipo de diferenças concretas que estou procurando)

  • say dpkgnão pode baixar o pkg de algum lugar, devo fazer o download antes de iniciar a instalação, enquanto isso apt-getserá feito em meu nome.
  • dpkgnão irá configurar o pkg, apenas copiará os arquivos. apt-getirá configurar também.

...

Kashyap
fonte

Respostas:

16

dpkg -iinstala *.debpacotes, ou seja, pacotes que você já baixou de algum lugar. Também os configura, mas não baixa / instala dependências. Você precisa ter baixado os arquivos do pacote binário manualmente de algum lugar. Também pode haver riscos ao baixar pacotes de locais que não são os repositórios que sua distribuição incluiu / ativou por padrão, já que pacotes de terceiros podem ser maliciosos por natureza.


apt-get/aptitude install acessa automaticamente os repositórios e índices de PPAs que você ativou, procura o melhor candidato, baixa-o e todas as suas dependências, instala-os e os configura automaticamente.

Usando apt-get install -f, você pode instalar automaticamente dependências ausentes de pacotes, por exemplo, instaladas dpkg -i.

Byte Commander
fonte
5
Uma observação rápida aqui, apt-getpode instalar dependências de pacotes instalados com dpkg -i. Corra apt-get install -fpara conseguir isso.
Noirscape 04/04
11
@ Ev1l0rd Correto, eu adicionei isso à minha resposta.
Byte Commander
2
Outra diferença importante, e um caso para usar apt-getor aptitude, é que eles lembram se um pacote foi instalado manualmente (solicitado especificamente) ou se foi instalado para cumprir uma dependência. Dessa forma, quando você remover um pacote posteriormente, eles poderão remover automaticamente (ou pelo menos informar sobre) pacotes que foram "instalados automaticamente e não são mais necessários". Se você instalou cada pacote dpkg, precisará lembrar e remover manualmente não apenas o seu pacote, mas todas as suas dependências (assumindo que nada mais dependa deles).
Benjamin Staton
11
@BenjaminStaton Bem, como dpkg -inão se preocupa com dependências, tudo instalado com ele é de instalado curso "manualmente".
Byte Commander