Ubuntu dpkg e .deb
Um arquivo .deb é um programa empacotado no formato do Debian e do Ubuntu, como um instalador .exe no Windows. O dpkg é a ferramenta que instala, remove e consulta esses pacotes. O apt, que você já conhece, usa o dpkg por baixo dos panos.
- A diferença entre
aptedpkg, e quando usar cada um. - Três formas de instalar um
.debbaixado de um site. - Como descobrir quais arquivos um pacote instalou e de qual pacote veio um arquivo.
- Como ler a tabela do
dpkg -l(o que significamii,rc,iU). - Como consertar o sistema quando uma instalação é interrompida no meio.
Antes do comando: o que é um pacote
Um pacote .deb é um arquivo compactado com três coisas dentro:
- Os arquivos do programa, já com o caminho onde devem ficar (
/usr/bin/nano,/etc/nanorc…). - Informações: nome, versão, descrição e a lista de dependências (outros pacotes que ele precisa para funcionar).
- Scripts que rodam antes e depois de instalar, como "criar um usuário" ou "ligar um serviço".
O Ubuntu registra cada pacote instalado num banco de dados em /var/lib/dpkg/. É esse banco que o dpkg consulta quando você pergunta "o nano está instalado?".
apt × dpkg: quem faz o quê
| apt | dpkg | |
|---|---|---|
| Baixa da internet | Sim, dos repositórios | Não. Só trabalha com arquivos que já estão no disco |
| Resolve dependências | Sim, baixa o que faltar | Não. Se faltar algo, para no meio |
| Consulta o que está instalado | Um pouco (apt list --installed) | Muito (-l, -L, -S, -s) |
| Uso no dia a dia | Instalar, atualizar, remover | Consultar e consertar |
Resumindo: para instalar, use o apt; para investigar, use o dpkg.
Instalar um .deb baixado
Alguns programas (Google Chrome, Zoom, Discord…) oferecem um .deb para baixar no site. Imagine que a Ana baixou programa_2.1_amd64.deb para a pasta Downloads.
Forma 1 (recomendada): apt install ./arquivo.deb
- sudo
- Roda como administrador. Instalar programas mexe no sistema todo.
- apt install
- O apt, no modo instalar.
- ./programa_2.1_amd64.deb
- O arquivo. O
./é obrigatório: diz "é um arquivo nesta pasta", e não um pacote do repositório.
$ sudo apt install ./programa_2.1_amd64.deb [sudo: authenticate] Senha: Nota, selecionando 'programa' em vez de './programa_2.1_amd64.deb' Instalando: programa Instalando dependências: libfoo2 « o apt achou e vai baixar o que falta Resumo: Atualizando: 0, Instalando: 2, Removendo: 0, Não atualizando: 0 Tamanho de download: 84,2 kB Você quer continuar? [S/n] S
O apt lê as dependências de dentro do .deb, baixa as que faltam dos repositórios e instala tudo de uma vez. A saída varia de programa para programa; os nomes e tamanhos acima são ilustrativos.
./?
Sem ele, sudo apt install programa_2.1_amd64.deb procura um pacote com esse nome nos repositórios e responde que não encontrou. O ./ (ou um caminho como ~/Downloads/programa.deb) avisa que é um arquivo.
Forma 2: dpkg -i
- sudo
- Precisa de administrador.
- dpkg
- O programa (de Debian package).
- -i
- De install, "instalar". No dpkg, as ações são opções com hífen.
- programa_2.1_amd64.deb
- O arquivo. Aqui o
./não é necessário.
O dpkg não baixa nada. Se faltar uma dependência, a instalação fica pela metade:
$ sudo dpkg -i programa_2.1_amd64.deb Selecionando pacote previamente não selecionado programa. Desempacotando programa (2.1) ... dpkg: dependency problems prevent configuration of programa: programa depends on libfoo2; however: O pacote libfoo2 não está instalado. « faltou uma dependência dpkg: error processing package programa (--install): problemas de dependência - deixando desconfigurado
Repare que a mensagem mistura inglês e português: parte da tradução do dpkg não está pronta no Ubuntu 26.04. "depends on … however" quer dizer "depende de … porém".
Para terminar a instalação, peça ao apt que baixe o que falta:
- sudo apt
- O apt como administrador.
- -f
- De fix broken, "consertar o que está quebrado". Forma longa:
--fix-broken. - install
- Sem nome de pacote: instala só o que falta para os pacotes pela metade.
$ sudo apt -f install
Forma 3: duplo clique no arquivo
No desktop, dê duplo clique no .deb no app Arquivos. Ele abre a Central de Aplicativos, que instala com dependências, como o apt.
Qual forma usar?
| Forma | Baixa dependências? | Melhor quando… |
|---|---|---|
sudo apt install ./arq.deb | Sim | Sempre que houver internet. É a forma padrão. |
sudo dpkg -i arq.deb | Não | Máquina sem internet, com todas as dependências já instaladas. |
| Duplo clique | Sim | Você está no desktop e prefere a interface gráfica. |
.deb roda como administrador
Um pacote é instalado com poder total sobre o sistema, e seus scripts podem fazer qualquer coisa. Só instale .deb baixado do site oficial do programa. Nunca instale um .deb recebido por mensagem ou de um site desconhecido.
Espiar um .deb antes de instalar
Você pode ver o que tem dentro de um pacote sem instalar nada, e sem sudo:
$ dpkg -I programa_2.1_amd64.deb Package: programa Version: 2.1 Architecture: amd64 Depends: libc6 (>= 2.38), libfoo2 « o que ele precisa Description: um programa de exemplo $ dpkg -c programa_2.1_amd64.deb drwxr-xr-x root/root 0 2026-09-01 10:00 ./usr/bin/ -rwxr-xr-x root/root 184320 2026-09-01 10:00 ./usr/bin/programa « onde ele vai ficar
| Opção | Origem | Mostra |
|---|---|---|
-I (i maiúsculo) | info | Nome, versão, dependências, descrição |
-c | contents, "conteúdo" | A lista de arquivos e onde serão instalados |
Consultar pacotes instalados
Estas consultas não precisam de sudo: só leem o banco de dados.
Listar: -l
- dpkg
- O programa.
- -l
- De list, "listar".
- nano curl
- Opcional: só esses pacotes. Sem nomes, lista todos (são milhares).
$ dpkg -l nano curl +-- Desired=Unknown/Install/Remove/Purge/Hold |+- Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend ||+ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||| Nome Versão Arquitetura Descrição +++-==============-=================-============-======================================================= ii curl 8.18.0-1ubuntu2.7 amd64 command line tool for transferring data with URL syntax ii nano 8.7.1-1ubuntu0.1 amd64 small, friendly text editor inspired by Pico
As três primeiras linhas são a legenda das letras que aparecem antes do nome. As que mais importam:
| Código | Significado | O que fazer |
|---|---|---|
ii | Instalado e funcionando | Nada, está tudo certo |
rc | Removido, mas a configuração ficou (foi usado remove, não purge) | sudo apt purge pacote para limpar |
iU | Desempacotado, mas não configurado (instalação pela metade) | sudo dpkg --configure -a |
iF | A configuração falhou | Leia o erro e rode sudo apt -f install |
hi | Instalado e "congelado" (hold): não será atualizado | Veja apt-mark em apt |
Para procurar um pacote no meio de todos, combine com grep:
$ dpkg -l | grep openssh ii openssh-client 1:10.0p1-5ubuntu1 amd64 secure shell (SSH) client, for secure access to remote machines
Os arquivos de um pacote: -L
Quer saber onde um programa foi parar? O -L (de list files) mostra todos os arquivos que um pacote instalou:
$ dpkg -L nano | head -8 /. /etc /etc/nanorc « o arquivo de configuração /usr /usr/bin /usr/bin/nano « o programa /usr/share /usr/share/doc
De qual pacote veio este arquivo? -S
O -S (de search, "procurar") faz o caminho contrário: você dá o arquivo e ele diz o pacote.
- dpkg
- O programa.
- -S
- Procura qual pacote instalou o arquivo.
- /usr/bin/nano
- O caminho completo do arquivo.
$ dpkg -S /usr/bin/nano nano: /usr/bin/nano $ dpkg -S /usr/bin/ls coreutils-from-uutils: /usr/bin/ls « no 26.04, o ls vem da versão em Rust
Não sabe o caminho? Use o which para descobrir e passe o resultado direto:
$ dpkg -S $(which curl) curl: /usr/bin/curl
O $(which curl) roda o which primeiro e coloca a resposta no lugar. Isso se chama substituição de comando.
Detalhes de um pacote: -s
$ dpkg -s nano Package: nano Status: install ok installed « está instalado corretamente Priority: important Section: editors Installed-Size: 872 « em KiB Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Architecture: amd64 Version: 8.7.1-1ubuntu0.1 Depends: libc6 (>= 2.38), libncursesw6 (>= 6), libtinfo6 (>= 6)
O que o comando devolve
Em scripts, o código de saída do dpkg -s responde "está instalado?": 0 se sim, 1 se não.
$ dpkg -s nano > /dev/null 2>&1; echo $? 0 « instalado $ dpkg -s htop > /dev/null 2>&1; echo $? 1 « não instalado
O > /dev/null 2>&1 joga fora toda a saída, para mostrar só o código. Veja Redirecionamento.
Remover com o dpkg
$ sudo dpkg -r programa # remove, mantendo a configuração $ sudo dpkg -P programa # remove tudo, inclusive a configuração
-r é de remove e -P de purge ("expurgar"). Mesmo assim, prefira sudo apt remove e sudo apt autoremove: o apt também tira as dependências que ficaram sem uso.
Consertar uma instalação interrompida
Se a energia caiu ou a internet parou no meio de uma atualização, os pacotes podem ficar "desconfigurados". O próximo apt avisa:
$ sudo apt upgrade Erro: dpkg foi interrompido, você deve executar manualmente 'sudo dpkg --configure -a' para corrigir o problema.
A mensagem já diz o comando. Rode na ordem:
- Terminar a configuração pendente.
- sudo dpkg
- O dpkg como administrador.
- --configure
- Configura pacotes que foram desempacotados mas não configurados.
- -a
- De all: todos os pendentes.
$ sudo dpkg --configure -a
- Baixar dependências que faltarem.
$ sudo apt -f install
- Atualizar normalmente.
$ sudo apt update && sudo apt upgrade
Quando não funciona
$ dpkg -i programa_2.1_amd64.deb dpkg: erro: a operação solicitada requer privilégios de superusuário
O que aconteceu: instalar e remover mexem no sistema e exigem administrador.
Como resolver: coloque sudo na frente. Consultas (-l, -L, -S, -s) não precisam.
$ dpkg -l htop dpkg-query: nenhum pacote encontrado correspondente a htop
O que aconteceu: o pacote não está instalado, ou o nome está errado. O dpkg só conhece o que está instalado; ele não procura nos repositórios.
Como resolver: para procurar no repositório, use apt search htop. Para instalar, sudo apt install htop.
$ dpkg -S /usr/local/bin/meuscript dpkg-query: nenhum caminho encontrado correspondente ao padrão /usr/local/bin/meuscript
O que aconteceu: o arquivo não veio de nenhum pacote. Foi criado à mão, por um script de instalação, ou por snap/flatpak.
Como resolver: isso é normal para arquivos em /usr/local, /opt e na sua pasta pessoal. Programas snap ficam em /snap e são consultados com snap list.
$ sudo dpkg -i programa_2.1_amd64.deb dpkg: erro: dpkg frontend lock was locked by another process with pid 4321
O que aconteceu: outro programa está instalando pacotes agora, normalmente a atualização automática.
Como resolver: espere alguns minutos e tente de novo. Veja quem é com ps -fp 4321. Não apague os arquivos de trava em /var/lib/dpkg/: isso pode corromper o banco de pacotes. A página apt detalha esse caso.
Referência de opções
| Opção | Descrição | Precisa de sudo? | Exemplo |
|---|---|---|---|
-i | Instala um arquivo .deb | Sim | sudo dpkg -i arq.deb |
-r | Remove, mantendo a configuração | Sim | sudo dpkg -r pacote |
-P | Remove tudo (purge) | Sim | sudo dpkg -P pacote |
-l | Lista pacotes (aceita padrão: 'nginx*') | Não | dpkg -l 'python3*' |
-L | Arquivos de um pacote instalado | Não | dpkg -L curl |
-S | Qual pacote instalou o arquivo | Não | dpkg -S /usr/bin/ssh |
-s | Estado e detalhes de um pacote | Não | dpkg -s nano |
-I | Informações de um arquivo .deb | Não | dpkg -I arq.deb |
-c | Arquivos dentro de um .deb | Não | dpkg -c arq.deb |
--configure -a | Termina configurações interrompidas | Sim | sudo dpkg --configure -a |
--get-selections | Lista simples de pacotes (útil para backup) | Não | dpkg --get-selections > pacotes.txt |
Exercícios
1. Instalar um .deb da forma recomendada
Complete para instalar o arquivo zoom_amd64.deb, que está na pasta atual, deixando o apt resolver as dependências:
2. De onde veio esse arquivo?
Complete para descobrir qual pacote instalou /usr/bin/ssh:
3. Instalação interrompida
O apt disse que o dpkg foi interrompido. Complete o comando de conserto:
4. No dpkg -l, um pacote aparece com rc. O que isso significa?
5. Por que sudo apt install ./arq.deb é preferível a sudo dpkg -i arq.deb?
Resumo
- Para instalar um
.deb:sudo apt install ./arquivo.deb(com o./). - O
dpkgé a ferramenta de consulta:-llista,-Lmostra arquivos,-Sacha o pacote de um arquivo,-smostra detalhes. - Consultas não precisam de
sudo; instalar e remover precisam. ii= instalado;rc= sobrou configuração;iU/iF= algo ficou pela metade.- Instalação interrompida:
sudo dpkg --configure -ae depoissudo apt -f install.