apt ou apt-get
Para digitar manualmente no terminal, use apt; em scripts, use apt-get e apt-cache.
A página de manual apt(8) deixa claro: apt foi projetado para o usuário de terminal, e o comportamento pode mudar entre versões; mesmo evitando quebrar a compatibilidade, não há garantia dela se uma mudança for benéfica para o uso interativo. O apt reúne as funcionalidades do apt-get e do apt-cache; apenas altera os valores padrão de algumas opções. Os comandos antigos priorizam a compatibilidade retroativa, por isso devem ser usados em scripts.
Quando a saída de apt é ligada a um pipe, ele mesmo avisa:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Ao ver essa mensagem, verifique primeiro se você chamou apt dentro de um script.
Atualização e upgrade
sudo apt update
sudo apt upgrade
update apenas baixa os índices de pacotes de cada repositório; não instala nem remove nenhum software. upgrade é que realmente atualiza os pacotes instalados, e a página de manual impõe duas condições: para satisfazer dependências, ele pode instalar pacotes novos; mas pacotes já instalados nunca serão removidos por ele. Se a atualização de um pacote exigir a remoção de outro pacote instalado, esse pacote não é atualizado.
full-upgrade faz tudo o que upgrade faz e, além disso, remove pacotes instalados quando a atualização geral exigir. Portanto, a diferença entre os dois é uma só: full-upgrade pode remover pacotes, upgrade não.
Antes de atualizar, veja quais pacotes estão pendentes:
apt list --upgradable
Quando não há pacotes a atualizar, a saída é apenas Listing....
Simule antes de instalar
Com -s (simulate) você não altera o sistema e vê apenas o que o apt pretende fazer:
apt install -s htop
No fim da saída há uma linha de resumo, por exemplo Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0, precedida por linhas começadas em Inst e Remv que listam as ações concretas. Em operações que envolvem remoções ou upgrades em massa, simule antes e confira principalmente se o número em Removing é o que você esperava.
A página de manual também descreve algumas sintaxes:
- O nome do pacote pode ser o nome exato, uma expressão regular ou um glob; um curinga escrito de qualquer jeito pode casar com muitos pacotes, e a simulação ajuda a perceber isso antes.
pacote=versãoespecifica a versão;pacote/codinomepega a versão de uma determinada distribuição.- Acrescentar
+depois do nome do pacote significa instalar;-significa remover. Testei em um contêiner comapt install -s cron htop-: o resumo mostrouRemoving: 1, ou seja, htop.
Consultas
apt show htop
apt policy htop
apt search palavra-chave
dpkg -S /usr/bin/htop
apt show traz campos como versão, prioridade, seção, origem, mantenedor e tamanho instalado; a página de manual lembra que dá para consultar essas informações antes de remover um pacote. apt policy mostra a versão instalada, a Candidate (versão candidata) e a prioridade da origem; se você suspeita que a versão instalada não é a certa, use-o para ver de qual repositório ela veio. apt search faz busca por expressão regular na lista de pacotes; para buscar o pacote a partir de um arquivo, a página de manual sugere o apt-file. dpkg -S responde "a qual pacote este arquivo pertence"; em teste, dpkg -S /usr/bin/htop produziu htop: /usr/bin/htop.
apt list tem três opções de uso frequente: --installed, --upgradeable (--upgradable também funciona) e --all-versions.
remove, purge e autoremove
remove apaga os arquivos de programa do pacote, mas mantém os arquivos de configuração que você alterou, de modo que uma reinstalação após uma remoção por engano recupera o estado original. purge elimina também esses resíduos, e pode ser executado igualmente em pacotes que já passaram por remove. A página de manual destaca: ele não toca nos dados e configurações do seu diretório home.
Verifiquei com cron em um contêiner:
sudo apt remove cron
dpkg -l cron
A coluna de estado fica rc (removido, arquivos de configuração presentes); executando em seguida sudo apt purge cron, o estado passa a un (não instalado, sem resíduos).
autoremove remove pacotes "instalados automaticamente para satisfazer dependências e que agora ninguém mais precisa". Pacotes que você instalou explicitamente não serão propostos para remoção, mas a página de manual recomenda dar uma olhada na lista, para não apagar por engano um software de costume. Se quiser manter um pacote instalado automaticamente, marque-o como instalação manual com apt-mark manual pacote. Simule antes de executar:
apt autoremove -s
Travar versões
sudo apt-mark hold htop
apt-mark showhold
sudo apt-mark unhold htop
São, respectivamente, travar, listar os pacotes travados e destravar; as saídas são, nessa ordem, htop set on hold., htop e Canceled hold on htop..
Histórico de transações e desfazer
O APT 3.x acrescentou um conjunto de comandos organizados por transação, que muitos tutoriais antigos não cobrem. Verifiquei os usos abaixo em um contêiner Ubuntu 26.04.1 LTS (apt 3.2.0); na sua máquina, confirme primeiro com apt --help se esses comandos existem.
apt history-list
apt history-info 88
sudo apt -y history-undo 88
sudo apt -y history-redo 88
history-list lista as transações do histórico; cada linha traz ID, linha de comando, horário, ação e número de alterações; a linha de comando é truncada, e para ver o conteúdo completo use history-info. No meu caso, o ID 88 era um apt-get install -y -qq htop, e history-info 88 mostrou Install htop:arm64 (3.4.1-5build2). Ao executar history-undo sobre ela, o apt removeu o htop e dpkg -l htop não encontrou o pacote; um history-redo em seguida reinstalou, com estado ii. history-undo, history-redo e history-rollback exigem um ID; sem ele, retornam Error: Incorrect usage, no ID was given.
O desfazer tem limites. Executei history-undo sobre uma transação de "reinstalação do bash": o apt listou que removeria o bash, avisou This should NOT be done unless you know exactly what you are doing! e por fim se recusou a executar:
Error: Essential packages were removed and -y was used without --allow-remove-essential.
Transações que envolvem pacotes essenciais do sistema não são desfeitas só porque -y foi usado. A opção citada na mensagem de erro desativa essa proteção, e não é recomendado acrescentá-la apenas para fazer o comando passar.
A descrição de history-rollback é "rollback transactions"; não executei de fato e não vou me estender. Independente da versão do apt, o /var/log/apt/history.log registra o horário, a linha de comando e as mudanças de versão de pacotes de cada operação; lê-lo pode exigir sudo.
Por que o pacote está instalado: why e why-not
A definição da página de manual para esses dois comandos: apt why pacote explica por que um pacote instalado foi instalado. Pacotes instalados automaticamente recebem uma explicação razoável; pacotes instalados manualmente não têm outra razão a dar; e, se o pacote não está instalado, não há como descobrir a razão. apt why-not pacote explica por que um pacote foi considerado não instalável, e nem sempre há resultado. Os dois comandos aceitam um único nome de pacote.
No meu contêiner mínimo a saída deles é simples: por exemplo, apt why htop resulta em htop:arm64 is selected for install, e para um pacote não instalado, is undecided. Em máquinas com dependências complexas a saída é mais informativa, e aí o why ajuda a julgar se um pacote pode passar por autoremove sem preocupação.
Repositórios
Os repositórios do Ubuntu 26.04.1 ficam em /etc/apt/sources.list.d/ubuntu.sources, no formato deb822, com muitos comentários começados em ## explicando os campos.
sudo apt edit-sources
Abre o arquivo de repositórios no editor de sua preferência e faz uma verificação básica. A página de manual o marca como work-in-progress, ou seja, ainda não está consolidado. A lista de comandos também traz apt modernize-sources, que converte arquivos .list do estilo antigo em arquivos .sources; não o executei, então consulte man apt antes de usar.
Alguns casos comuns
- Depois do upgrade, alguns pacotes não mudaram: a atualização deles exige remover outros pacotes instalados, e
upgradenão faz esse tipo de atualização. Veja primeiroapt list --upgradablee, confirmado isso, usefull-upgrade. - Depois de remove, o pacote ainda aparece no
dpkg -l: o estadorcindica resíduo de arquivos de configuração;purgelimpa. - Quer desfazer uma instalação que acabou de fazer: se os comandos
historyexistem, usehistory-undo; se não, façaremovemanualmente dos pacotes registrados nohistory.log.




