Comandos apt: instalar, atualizar e remover pacotes no Ubuntu e Debian
O apt é o gerenciador de pacotes do Ubuntu e do Debian: sudo apt update atualiza a lista de pacotes, sudo apt upgrade instala as atualizações, sudo apt install nome instala um pacote, sudo apt remove o remove (purge remove também as configurações) e apt autoremove elimina dependências desnecessárias. Para buscar pacotes use apt search e apt show, e para corrigir dependências quebradas use sudo apt --fix-broken install.
O apt é o gerenciador de pacotes padrão do Ubuntu, do Debian e de derivados como Linux Mint e Pop!_OS. Ele baixa programas dos repositórios, instala as dependências automaticamente e atualiza o sistema com um único comando. Abaixo estão os comandos apt usados no dia a dia, agrupados por tarefa, com os erros mais comuns e suas soluções.
Como o apt funciona
Um pacote é um arquivo .deb com o programa, os metadados e a lista de dependências. Os repositórios são servidores onde os pacotes ficam; seus endereços estão em /etc/apt/sources.list e no diretório /etc/apt/sources.list.d/. O apt guarda uma cópia local da lista de pacotes disponíveis e consulta justamente essa cópia na instalação, por isso ela precisa ser atualizada com regularidade.
Por baixo, o apt chama o dpkg, de nível mais baixo, que descompacta e registra os pacotes, mas não resolve dependências. Os comandos apt-get e apt-cache são a interface antiga, com a mesma funcionalidade: a saída é estável e eles são úteis em scripts. O apt é um invólucro mais novo, voltado para as pessoas: barra de progresso, cores e comandos mais curtos.
Quase todos os comandos que alteram o sistema exigem privilégios de administrador, por isso são executados com sudo. Pesquisar e consultar informações funciona sem ele.
Cola: principais comandos apt
| Comando | O que faz |
|---|---|
sudo apt update | atualizar a lista de pacotes dos repositórios |
sudo apt upgrade | instalar as atualizações sem remover pacotes |
sudo apt full-upgrade | atualizar, removendo ou substituindo pacotes quando necessário |
sudo apt install pacote | instalar um pacote com as dependências |
sudo apt reinstall pacote | reinstalar um pacote |
sudo apt remove pacote | remover o pacote, mantendo as configurações |
sudo apt purge pacote | remover o pacote junto com as configurações do sistema |
sudo apt autoremove | remover dependências que deixaram de ser necessárias |
apt search palavra | buscar pacote pelo nome e pela descrição |
apt show pacote | descrição, versão, dependências e tamanho |
apt list --installed | lista de pacotes instalados |
apt list --upgradable | o que pode ser atualizado |
apt policy pacote | versão instalada, versões disponíveis e origens |
sudo apt clean | limpar o cache dos .deb baixados |
sudo apt --fix-broken install | corrigir dependências quebradas |
apt update e apt upgrade: como atualizar o sistema
São duas operações diferentes, e costumam ser confundidas. O apt update não instala nada: ele só baixa listas atualizadas de pacotes. O apt upgrade instala as novas versões dos programas já instalados, com base nessas listas.
$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
...
12 packages can be upgraded. Run 'apt list --upgradable' to see them.
$ apt list --upgradable
$ sudo apt upgrade
A combinação habitual para um servidor, em uma linha só, com confirmação automática:
sudo apt update && sudo apt upgrade -y
Diferença entre upgrade e full-upgrade
O apt upgrade pode instalar novas dependências, mas nunca remove pacotes já instalados. Se a atualização exigir a remoção de algo (por exemplo, ao trocar a versão do kernel ou de uma biblioteca), esses pacotes ficam "retidos": a saída mostra a linha The following packages have been kept back. O apt full-upgrade (equivalente ao apt-get dist-upgrade) permite essas remoções e conclui a atualização. Antes dele, leia com atenção o que o apt pretende remover.
Atualizar apenas um pacote
sudo apt install --only-upgrade nginx
Se o pacote não estiver instalado, o comando com --only-upgrade não o instala, o que protege contra instalações acidentais.
apt install: instalação de pacotes
sudo apt install nginx # um pacote
sudo apt install git curl htop # vários de uma vez
sudo apt install -y docker.io # sem a pergunta Y/n
sudo apt install nginx=1.24.0-2ubuntu7 # versão específica
sudo apt install --no-install-recommends ffmpeg # sem os pacotes recomendados
sudo apt install ./google-chrome-stable_current_amd64.deb # .deb local
Ao instalar, o apt mostra quais pacotes serão adicionados e quanto espaço ocupam, e pede confirmação. A opção -y responde "sim" automaticamente, o que é útil em scripts e Dockerfiles, mas no trabalho interativo é melhor ler a lista.
Por padrão, o apt instala não só as dependências obrigatórias (Depends), mas também as recomendadas (Recommends). Em servidores e contêineres, --no-install-recommends reduz bastante o tamanho.
Instalar um arquivo .deb: apt ou dpkg -i
Um .deb baixado deve ser instalado com apt install ./arquivo.deb — o caminho precisa começar com ./ ou ser absoluto, senão o apt procura um pacote com esse nome no repositório. Diferente do dpkg -i, o apt baixa sozinho as dependências que faltam. Se você já instalou o pacote com o dpkg e apareceu um erro de dependências, o sudo apt --fix-broken install resolve.
sudo dpkg -i pacote.deb
sudo apt --fix-broken install
apt remove, purge e autoremove: remoção de pacotes
| Comando | Programa | Configurações em /etc | Dependências |
|---|---|---|---|
apt remove | removido | mantidas | mantidas |
apt purge | removido | removidas | mantidas |
apt autoremove | — | — | removidas as desnecessárias |
sudo apt remove nginx
sudo apt purge nginx # o mesmo, mais as configurações
sudo apt autoremove # resíduos de dependências
sudo apt autoremove --purge # resíduos junto com as suas configurações
O remove serve quando você pretende voltar a usar o programa e quer manter as configurações. O purge serve para reinstalar do zero. Atenção: os arquivos no diretório pessoal do usuário (por exemplo, ~/.config) não são apagados por nenhum desses comandos.
Para encontrar pacotes que foram removidos, mas deixaram configurações para trás, procure pelo status rc:
dpkg -l | grep '^rc'
Busca de pacotes e informações sobre eles
apt search postgresql # busca pelo nome e pela descrição
apt search --names-only '^php8' # somente pelo nome, com expressão regular
apt show htop # versão, tamanho, dependências e descrição
apt policy docker.io # quais versões existem e de onde vêm
apt list --installed | grep python3
apt-cache depends curl # do que o pacote depende
apt-cache rdepends libssl3 # quem depende do pacote
A que pacote pertence um arquivo
$ dpkg -S /usr/bin/curl
curl: /usr/bin/curl
$ dpkg -L curl # quais arquivos o pacote instalou
Se o comando ainda não existe no sistema, o Ubuntu sugere o pacote ao tentar executá-lo (mensagem Command 'tree' not found, but can be installed with: sudo apt install tree). Para buscar arquivos em pacotes não instalados existe o utilitário apt-file: apt-file search bin/dig, depois de sudo apt-file update.
Fixar a versão: apt-mark hold
Às vezes um pacote não pode ser atualizado: por exemplo, a versão de um SGBD ou do kernel em produção só muda manualmente. Para isso, o pacote é "congelado":
sudo apt-mark hold postgresql-16
apt-mark showhold
sudo apt-mark unhold postgresql-16
Outro par útil é apt-mark manual e apt-mark auto. Pacotes instalados como dependências ficam marcados como automáticos e entram no autoremove quando deixam de ser necessários. A marca manual protege o pacote contra isso.
Repositórios: como adicionar e onde ficam
A lista de fontes está em /etc/apt/sources.list e nos arquivos /etc/apt/sources.list.d/*.list. No Ubuntu 24.04 e no Debian 12+, cada vez mais se usa o formato deb822, com extensão .sources (por exemplo, /etc/apt/sources.list.d/ubuntu.sources).
Repositório de terceiros com chave
A forma atual é guardar a chave do repositório em separado e vinculá-la pelo signed-by. O comando apt-key está obsoleto e foi removido nas versões mais novas.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce
PPA no Ubuntu
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo add-apt-repository --remove ppa:deadsnakes/ppa
PPAs são repositórios pessoais no Launchpad. Adicione apenas os que você conhece e em que confia: os pacotes deles são instalados com privilégios de root.
Cache e espaço em disco
Os pacotes baixados ficam em /var/cache/apt/archives/. Em discos pequenos e em imagens Docker, vale limpar esse cache.
du -sh /var/cache/apt/archives
sudo apt clean # apagar todo o cache de .deb
sudo apt autoclean # apagar apenas versões desatualizadas
Em um Dockerfile, a instalação é escrita em uma única camada, com a remoção imediata das listas de pacotes:
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl ca-certificates \
&& rm -rf /var/lib/apt/lists/*
Em scripts usa-se apt-get, e não apt: a interface do apt não é estável, e ele avisa isso (WARNING: apt does not have a stable CLI interface). Para que o instalador não faça perguntas, acrescenta-se DEBIAN_FRONTEND=noninteractive.
Erros comuns do apt e como corrigi-los
Could not get lock /var/lib/dpkg/lock-frontend
Outro processo já está trabalhando com os pacotes: outro terminal com apt aberto, a Central de Programas ou as atualizações automáticas em segundo plano (unattended-upgrades). Aguarde alguns minutos e veja quem está segurando o bloqueio:
ps aux | grep -E 'apt|dpkg'
Enquanto o processo estiver vivo, não apague os arquivos de lock manualmente: uma instalação interrompida pode deixar o sistema inconsistente. Se o processo travou ou foi finalizado, depois que ele terminar execute sudo dpkg --configure -a.
Unable to locate package
O apt não encontrou o pacote. Na maioria das vezes, você não executou sudo apt update em um sistema recém-instalado, digitou o nome errado ou o pacote está em um componente desativado (universe, no Ubuntu). O componente é ativado com sudo add-apt-repository universe.
Unmet dependencies / held broken packages
As dependências não se encaixam — geralmente depois de instalar um .deb manualmente ou de misturar repositórios de versões diferentes da distribuição.
sudo apt --fix-broken install
sudo dpkg --configure -a
apt policy pacote-com-problema
dpkg was interrupted
A instalação foi interrompida (o terminal foi fechado ou faltou energia). A própria mensagem indica a solução: sudo dpkg --configure -a.
NO_PUBKEY ao executar apt update
O repositório de terceiros não tem a chave de assinatura ou ela está desatualizada. Baixe a chave atual do site do projeto para /etc/apt/keyrings/ e indique-a em signed-by, como no exemplo do Docker acima.
Atualizações automáticas de segurança
No Ubuntu Server, por padrão, está instalado o pacote unattended-upgrades, que aplica sozinho as atualizações de segurança. Para verificar e ativar:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
cat /var/log/unattended-upgrades/unattended-upgrades.log
Se é preciso reiniciar depois de uma atualização, mostra o arquivo /var/run/reboot-required: se ele existe, foi atualizado o kernel ou alguma biblioteca essencial.
Conclusão
Os comandos apt básicos cabem em um ciclo curto: update antes de qualquer ação, install para instalar, upgrade para atualizar, remove ou purge para remover e autoremove para limpar. Para versões há o apt policy e o apt-mark hold; para quebras, o --fix-broken install e o dpkg --configure -a; e em scripts, use o apt-get. O gerenciamento de pacotes é praticado no curso de Linux.
Perguntas frequentes
Qual a diferença entre apt e apt-get?
São interfaces do mesmo sistema de pacotes. O apt é mais cômodo no terminal (progresso, cores, comandos curtos), enquanto o apt-get tem saída estável e é recomendado para scripts e Dockerfiles.
Preciso executar apt update antes de cada instalação?
É recomendável quando as listas não foram atualizadas há bastante tempo: caso contrário, o apt pode não encontrar o pacote ou tentar baixar uma versão que já saiu do espelho e devolver um erro 404.
Como ver o histórico de instalações e remoções do apt?
O histórico fica em /var/log/apt/history.log (registros antigos em arquivos history.log.N.gz), e o log detalhado do dpkg, em /var/log/dpkg.log.
Como voltar um pacote para uma versão anterior?
Veja as versões disponíveis com apt policy pacote e instale a desejada com sudo apt install pacote=versão. Depois fixe-a com apt-mark hold, para que a próxima atualização não traga a nova de volta.
O apt funciona no CentOS ou no Fedora?
Não. Essas distribuições usam outro formato de pacotes (rpm) e gerenciadores próprios, como dnf e yum. O apt funciona no Debian, no Ubuntu e em seus derivados.
Este tema é abordado em profundidade, com prática, no curso “Linux: с нуля до уверенного администрирования”.
Ir para o curso