Folha de consulta

Comandos apt: instalar, atualizar e remover pacotes no Ubuntu e Debian

Atualizado: · Skillaria.Top

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

ComandoO que faz
sudo apt updateatualizar a lista de pacotes dos repositórios
sudo apt upgradeinstalar as atualizações sem remover pacotes
sudo apt full-upgradeatualizar, removendo ou substituindo pacotes quando necessário
sudo apt install pacoteinstalar um pacote com as dependências
sudo apt reinstall pacotereinstalar um pacote
sudo apt remove pacoteremover o pacote, mantendo as configurações
sudo apt purge pacoteremover o pacote junto com as configurações do sistema
sudo apt autoremoveremover dependências que deixaram de ser necessárias
apt search palavrabuscar pacote pelo nome e pela descrição
apt show pacotedescrição, versão, dependências e tamanho
apt list --installedlista de pacotes instalados
apt list --upgradableo que pode ser atualizado
apt policy pacoteversão instalada, versões disponíveis e origens
sudo apt cleanlimpar o cache dos .deb baixados
sudo apt --fix-broken installcorrigir 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

ComandoProgramaConfigurações em /etcDependências
apt removeremovidomantidasmantidas
apt purgeremovidoremovidasmantidas
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.

Aprenda este tema em vídeo

Este tema é abordado em profundidade, com prática, no curso “Linux: с нуля до уверенного администрирования”.

Ir para o curso