Ubuntu 18.04 Server / apt: instalar, remover e atualizar pacotes

No Ubuntu 18.04 Server, use apt update para atualizar os índices de pacotes e apt install, apt remove e apt upgrade para instalar, remover e atualizar pacotes. Atualizar o índice não atualiza os programas; confira as alterações previstas antes de remover pacotes ou atualizar todos os pacotes do sistema.

Função do APT e verificações iniciais

APT (Advanced Package Tool) é um conjunto de ferramentas que gerencia software usando informações de pacotes e dependências dos repositórios. Dependências são bibliotecas ou outros pacotes necessários para um programa funcionar. Os exemplos se referem ao APT 1.6 do Ubuntu 18.04; versões e alterações reais dependem dos repositórios e dos pacotes instalados.

A manutenção de segurança padrão do Ubuntu 18.04 LTS terminou em maio de 2023. Em um servidor existente, verifique também a cobertura de manutenção expandida com Ubuntu Pro ou o plano de atualização do sistema operacional. Trocar o espelho ou executar apt upgrade não prolonga o suporte. Consulte o ciclo oficial de versões do Ubuntu.

Instalar, remover e atualizar índices normalmente exige privilégios sudo; pesquisar e consultar informações não exige. Em produção, faça backup das configurações e dos dados importantes e planeje o trabalho considerando possíveis reinicializações de serviços. No início, evite a confirmação automática com -y para revisar pessoalmente as alterações.

apt é uma interface voltada ao uso interativo no terminal. Em scripts, prefira apt-get e apt-cache quando a compatibilidade da saída e do comportamento for importante. Em particular, apt upgrade e apt-get upgrade não tratam dependências da mesma forma por padrão. Veja o manual de apt do Ubuntu 18.04.

Pesquisar e instalar um pacote

O exemplo usa tree, que exibe estruturas de diretórios. No servidor real, substitua pelo pacote necessário, mas confira primeiro a descrição e a versão candidata.

  1. Baixe as informações atuais dos repositórios. Se ocorrer algum erro, resolva-o antes de continuar.
sudo apt update
  1. Pesquise o pacote e confira os detalhes. apt-cache policy distingue a versão instalada, a candidata e as origens dos pacotes.
apt search tree
apt show tree
apt-cache policy tree

apt search também pesquisa descrições, portanto pode mostrar pacotes sem tree no nome. Examine descrição, dependências e tamanho com apt show, depois compare Installed e Candidate em apt-cache policy. Se não houver versão candidata, verifique primeiro os repositórios e a atualização dos índices. Veja o manual de apt-cache.

  1. Simule a instalação para conferir os pacotes que seriam instalados, atualizados ou removidos, e só então realize a instalação.
sudo apt-get --simulate install tree

--simulate não altera os pacotes de fato. O plano reflete o estado naquele momento, por isso leia também a confirmação imediatamente antes da instalação real. Se aparecerem remoções inesperadas, pare e confira as dependências e os repositórios.

sudo apt install tree
  1. Após instalar, confirme o registro do pacote e se o executável funciona.
dpkg-query -W tree
tree --version

O primeiro comando mostra o nome e a versão do pacote registrado; o segundo mostra a versão do executável. Se não houver uma versão nova para instalar, o APT pode informar que o pacote já está atualizado. As dependências necessárias são instaladas junto. O manual de apt-get explica as operações e a simulação.

Atualizar índices e pacotes

update atualiza apenas os índices dos repositórios, sem modificar programas instalados. Use os comandos a seguir para conferir as atualizações disponíveis.

sudo apt update
apt list --upgradable
apt list --installed

apt list --upgradable mostra pacotes com atualizações disponíveis, enquanto apt list --installed mostra os instalados. apt list sozinho pode listar pacotes conforme critérios de nome, mas produzir uma saída extensa.

Para atualizar normalmente os pacotes instalados, use sudo apt upgrade. No Ubuntu 18.04, apt upgrade pode instalar novas dependências necessárias, mas não remove pacotes existentes. Já o apt-get upgrade padrão também evita instalar novos pacotes e pode deixar algumas atualizações pendentes.

sudo apt upgrade

sudo apt full-upgrade pode remover pacotes existentes para resolver dependências. Não o execute automaticamente apenas porque uma atualização comum manteve pacotes pendentes: primeiro confira o plano de instalação e remoção e os efeitos nos serviços importantes. Também não é um comando para atualizar o Ubuntu 18.04 para outra versão da distribuição.

Se ainda houver atualizações, veja também os pacotes retidos intencionalmente com apt-mark showhold. Para limitar a operação a alguns pacotes ou às atualizações de segurança, consulte como atualizar pacotes específicos ou apenas atualizações de segurança. Depois, confira novamente apt list --upgradable e avalie separadamente se os serviços ou o kernel precisam reiniciar.

Remover pacotes e limpar dependências ou cache

Escolha o método conforme as configurações que deseja preservar e o que deve ser removido. Os comandos abaixo são alternativas, não uma sequência que precisa ser executada por completo.

Comando O que é removido
apt remove tree Remove o pacote, normalmente preservando os arquivos de configuração gerenciados por ele.
apt purge tree Remove o pacote e seus arquivos de configuração gerenciados. Isso não significa apagar todos os arquivos dos diretórios pessoais dos usuários.
apt autoremove Remove dependências instaladas automaticamente que o APT considera desnecessárias no estado atual.

Para remover tree, por exemplo, simule primeiro a operação e confira tudo o que será removido, depois execute a remoção real. Acrescente sudo aos comandos da tabela que fazem alterações, como no exemplo abaixo.

sudo apt-get --simulate remove tree
sudo apt remove tree

Se também quiser remover configurações, escolha sudo apt purge tree após confirmar a necessidade. Um pacote removido por engano com remove pode ser reinstalado com sudo apt install tree, mas isso pode não recuperar configurações personalizadas apagadas por purge; mantenha backup.

Confira a lista antes de limpar dependências também. Não prossiga se ela incluir ferramentas usadas diretamente ou pacotes necessários à operação.

sudo apt-get --simulate autoremove
sudo apt autoremove

Um pacote ainda necessário proposto para remoção automática pode ser marcado como instalado manualmente com sudo apt-mark manual PACKAGE. Substitua PACKAGE pelo nome real. Essa marcação não corrige outros problemas de dependências. Veja o manual de apt-mark.

Para manter os programas instalados e limpar apenas os arquivos de pacotes baixados, use sudo apt clean. sudo apt autoclean remove arquivos em cache de pacotes que já não podem ser baixados. Esses comandos não removem pacotes instalados como autoremove.

Verificar repositórios e trocar de espelho

No Ubuntu 18.04, os repositórios normalmente são configurados em /etc/apt/sources.list e em arquivos individuais de /etc/apt/sources.list.d/. Se o download estiver lento ou um espelho falhar, identifique primeiro o host indicado no erro e o arquivo de configuração real.

cat /etc/apt/sources.list
ls /etc/apt/sources.list.d/

Escolha na lista oficial de espelhos dos arquivos de pacotes do Ubuntu, diferente da lista de espelhos de CD para ISOs de instalação. Confira a sincronização e a disponibilidade de bionic, além da proximidade geográfica. Nenhum espelho específico é garantidamente o mais rápido em todas as situações.

  1. Faça backup do arquivo que será realmente editado. Se o nome de backup abaixo já existir, escolha outro para preservar a cópia anterior.
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.backup
  1. Abra o arquivo no editor padrão e altere somente a URI do espelho Ubuntu correspondente. Se a entrada estiver em um arquivo separado, faça backup e edite esse arquivo.
sudoedit /etc/apt/sources.list

A linha a seguir ilustra o formato; não substitua todo o arquivo apenas por ela. Preserve as seções necessárias, como bionic e bionic-updates, e os componentes existentes, como main e universe. Não faça substituições globais nos endereços de segurança, Ubuntu Pro ou repositórios de terceiros.

deb http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
  1. Após salvar, atualize os índices e confira a versão candidata e a origem do pacote necessário. Não instale nem atualize enquanto persistirem erros.
sudo apt update
apt-cache policy tree

Consulte o manual de sources.list do Ubuntu 18.04 para a sintaxe. Um erro 404 não justifica trocar bionic pelo codinome de outra versão do Ubuntu. Primeiro confira a cobertura do espelho e o caminho do repositório atualmente suportado.

Resolver erros e entender a recuperação

  • Pacote não encontrado: confira a grafia, erros de apt update, componentes necessários dos repositórios e arquiteturas suportadas. Um comando não faz aparecer um pacote ausente dos repositórios configurados.
  • Erro de bloqueio: verifique se outra operação apt ou dpkg, ou uma atualização automática, está em execução e espere a conclusão normal. Não comece apagando arquivos de bloqueio nem encerrando processos à força.
  • Erro de assinatura ou arquivo Release: confira URI, versão da distribuição, chaves e horário do servidor. Não desative as verificações de autenticidade nem adicione um repositório sem verificar sua confiabilidade.

Se uma operação anterior realmente foi interrompida e não há outra tarefa de gerenciamento em execução, a sequência abaixo pode concluir configurações pendentes e verificar o plano de reparo das dependências. O primeiro comando realiza configurações de fato, portanto leia a saída. O segundo apenas mostra o plano.

sudo dpkg --configure -a
sudo apt-get --simulate --fix-broken install

Execute sudo apt --fix-broken install somente depois de confirmar a necessidade e verificar que o plano não remove inesperadamente pacotes importantes. Não aplique comandos de reparo repetidamente a erros com causas diferentes.

Para desfazer apenas uma troca de espelho, restaure o arquivo salvo e atualize os índices. Se editou outro arquivo, use o backup correspondente.

sudo cp -a /etc/apt/sources.list.backup /etc/apt/sources.list
sudo apt update

Isso restaura somente os repositórios. Não desfaz pacotes já instalados, removidos ou atualizados, nem recupera dados dos serviços. Para reverter alterações de pacotes em produção, use backups separados de configuração e dados, ou snapshots, e o procedimento de recuperação de cada serviço.