Qual é a diferença entre dpkg e aptitude / apt-get?

125

Ao instalar um software via dpkg -i packageA.deb, as dependências requeridas packageAserão baixadas e instaladas automaticamente? Como isso é diferente de usar apt-getou aptitude?

Aniket Thakur
fonte
Relacionado (especialmente com relação às dependências): askubuntu.com/q/40779/250300
Melebius 15/18

Respostas:

168

Não, dpkgapenas instala um pacote; assim dpkg -i packageName.deb, o instalador instalará apenas este pacote Deb e notificará você sobre quaisquer dependências que precisam ser instaladas, mas não as instalará e não configurará o packageName.debporque porque ... as dependências são não está lá.

apt-geté um sistema de gerenciamento de pacotes que lida com a instalação de pacotes Deb em distribuições Linux baseadas no Debian . Um Sistema de Gerenciamento de Pacotes é um conjunto de ferramentas que ajudarão você a instalar, remover e alterar pacotes facilmente. Então apt-geté como um esperto dpkg.

Eu gosto de pensar na linha do tempo dessa maneira (a seguir, sou apenas eu falando por experiência própria. Ele serve apenas para lhe dar uma idéia de tudo isso):

  • Eles criaram uma maneira de "armazenar" os arquivos de um aplicativo em um "pacote" para que ele possa ser facilmente instalado. Então, o pacote Deb ( .debarquivo de extensão ) nasceu.

    Um .debarquivo contém os arquivos necessários para a execução de um aplicativo, bem como (eu gosto de chamá-lo) "metadados" que contêm outras informações, como os nomes das dependências que o aplicativo precisa. Se você deseja ver o conteúdo de um .debarquivo, pode usar o comando dpkg -c packageName.debe, se quiser ver essas informações de "metadados", use o comando dpkg -I pacakgeName.deb(e se quiser ver apenas as dependências, faça dpkg -I packageName.deb | grep Depends).

  • Eles precisavam de uma ferramenta para instalar esses .debarquivos, então criaram a dpkgferramenta. Essa ferramenta, no entanto, apenas instalará o .debarquivo, mas não instalará suas dependências porque não possui esses arquivos e não possui acesso a "repositórios" para obter as dependências.

  • Então, eles surgiram apt-get, o que automatiza os problemas no ponto anterior. Sob o capô, apt-geté basicamente dpkg(eu gosto de pensar nisso como apt-getum front-end para dpkg), mas um inteligente que procurará as dependências e as instalará. Ele ainda examina as dependências atualmente instaladas e determina aquelas que não estão sendo usadas por outros pacotes e informará que você pode removê-las.

aptitudeentão apareceu. Ele usa as bibliotecas apt-getusos e realmente tem uma interface do usuário interativa (interface de usuário). Se você quiser ver essa interface, basta digitar aptitudeo terminal. É isso aptitude . Ele aproveita as bibliotecas para fornecer mais opções e vantagens do que apt-get. Por exemplo, aptituderemoverá automaticamente pacotes elegíveis, enquanto apt-getprecisa de um comando separado para fazer isso. Mas, no final, fazer sudo aptitude install packageName.debdeve ser pelo menos o mesmo que sudo apt-get install packageName.deb. Pode haver diferenças sutis aqui e ali que eu não conheço, mas ambos procurarão as dependências e farão tudo isso. Você pode ler a resposta aqui para obter mais informações sobre as diferenças entre aptitudee apt-get.

Além disso, aptitudenão tem Super Cow Powers.

EDIT: Aparentemente, ele faz. aptitude -v[v[v[v[v]]]] moo.

aptitudepode não estar instalado por padrão. Para instalá-lo, faça sudo apt-get install aptitudeou clique aqui: aptitudeInstale o aptitude .


Extra

As informações a seguir não respondem diretamente diretamente " Qual é a diferença entre dpkg e aptitude / apt-get? ", Mas contribuem para o quadro geral.


De Carlos Campderrós ' comentário abaixo :

gdebié outra ferramenta que é uma espécie de mistura entre apt-gete aptitude. Quando você o usa para instalar um .debpacote ( gdebi packageName.deb), ele identifica as dependências ausentes, instala-as usando apt-gete, finalmente, instala e configura o pacote usando dpkg. Ele ainda possui uma GUI simples e elegante que fornece informações sobre o .debpacote, os arquivos incluídos no pacote e quais dependências precisam ser instaladas. Para ver esta GUI, você faria gdebi-gtk packageName.deb. Você pode gdebitentar instalando-o com sudo apt-get install gdebiou clique aqui: gdebiInstale o gdebi .


Não quero confundir ninguém, mas apenas para dar uma outra parte da imagem, existe outro formato popular de pacote Linux chamado RPM, e seus arquivos têm a .rpmextensão. Este formato de pacote é usado em distribuições Linux baseadas em RPM (como Red Hat, CentOS e Fedora). Eles usam o comando rpmpara instalar um pacote e yumé o front-end para ele, é o mais inteligente. Portanto, seus .rpmarquivos são nossos .debarquivos, sua rpmferramenta é nossa dpkgferramenta e a deles yumé nossa apt-get.

De Paddy Landau 's comentário abaixo :

aliené uma ferramenta que converte entre .rpme .debpacotes. Portanto, se você se deparar com a situação em que possui um .rpmpacote e quiser instalar no seu Ubuntu (ou qualquer outra distribuição baseada no Debian), poderá usar o comando alien rpm_packageName.rpmpara convertê-lo .debe instalá-lo usando dpkg. Você pode fazer o inverso (converter .debpara .rpm) usando alien -r packageName.deb.

Alaa Ali
fonte
5
Isso foi muito útil e exatamente o que eu estava procurando. Tx!
Aniket Thakur
4
Além disso, você pode usar gdebi( apt-get install gdebi-core) que combina apt-get/ aptitudecom dpkg. Você o chama gdebi some_package.debe ele analisará suas dependências, ligará apt-getpara instalar as que estão faltando e quando todas as dependências forem cumpridas, depois ligará dpkgpara finalmente instalar seu pacote.
Carlos Campderrós
2
@ Laaa Sob Extra , você também pode mencionar que alienconverte pacotes entre .rpme .deb. Isso é útil para pacotes disponíveis para RPM, mas não para DEB (ou vice-versa). Por exemplo, alien packagename.rpmpara torná-lo utilizável no Ubuntu.
Paddy Landau
1
@AlaaAli aptitudenão é uma interface para apt-get. Ambos os programas são interfaces para a libapt-pkgbiblioteca.
Eliah Kagan
1
@edwardtorvalds AskUbuntu é um site de perguntas e respostas. Pesquise sua resposta aqui no site a partir de milhares de perguntas antigas e, se não a encontrar, faça sua própria pergunta, pessoas mais experientes do que eu esperamos que também respondam.
Alaa Ali
5

apt-get

O gerenciamento de pacotes apt-geté executado de mãos dadas com o /etc/apt/sources.listarquivo.

apt-get install <package_name> instala um novo pacote no seu computador.

apt-get build-dep <package_name> Este comando procura nos repositórios e instala as dependências de construção. Se o pacote não estiver nos repositórios, ele retornará um erro.

apt-get install <package1_name> <package2_name> <package3_name> O apt-get permite a instalação de vários pacotes. separe os pacotes com um espaço.

auto-apt run <command_string> Quando invocado, o comando auto-apt instala pacotes automaticamente quando o acesso ao arquivo está ausente. Se um programa tentar acessar um arquivo que pertence a um pacote desinstalado, o auto-apt instalará esse pacote usando apt-get. Este recurso requer o apt e o sudo para funcionar.

Visite a página de instruções do apt-get

aptidão

aptitudefornece a funcionalidade dselecte apt-getmuitos recursos adicionais não encontrados em nenhum dos programas.

aptitude possui um shell próprio que é ativado por teclado ou mouse e roda em uma janela de terminal

aptitude build-dep <package> - Instale as dependências de compilação dos pacotes - o que significa os pacotes necessários para compilar (ou compilar ) seu pacote de origem. Por exemplo, muitos pacotes precisam debhelperou autotoolsdevem ser construídos, mas não precisam deles para serem executados.

Visite a página de instruções do aptitude

dpkg

é uma ferramenta para instalar, construir, remover e gerenciar pacotes Debian. ligação

dpkg -i <package.deb>instala um pacote Debian no seu computador. Ele não instala nenhuma dependência até onde posso descobrir nos arquivos de ajuda.

Para detalhes, digite dpkg --helpem uma janela do terminal.

Guias

um guia para gerenciamento de arquivos pode ser encontrado aqui

SimplySimon
fonte
0

Eu acho que a coisa mais importante e também a diferença é que você deve usar a apt-getferramenta para instalar pacotes. ( aptou aptitudeestá bom também).

Isso ocorre porque o dpkgobjetivo é instalar pacotes sem instalar pacotes dependentes. Por isso, apenas a instalação de um pacote dpkgpode levar a um problema posterior, em que a resolução de dependências pode acabar com um sistema danificado.

Você deve usar a linha de comando apt-getou a aptferramenta (desde 14.04) para instalar pacotes. Essas ferramentas estão sendo usadas dpkgpor você e, ao mesmo tempo, possuem o mecanismo de resolução de dependências.

prosti
fonte