Introdução
No Ubuntu, os softwares normalmente são distribuídos como pacotes. Os repositórios publicam os arquivos dos pacotes e os metadados que descrevem seus nomes, versões, dependências e locais de download. O apt trabalha com repositórios e resolve dependências; o dpkg gerencia, em um nível mais baixo, o banco de dados dos pacotes .deb instalados.
Você atualizará os metadados, fará uma pesquisa antes da instalação, inspecionará um pacote instalado, o removerá e instalará um .deb local de forma determinística. Todas as alterações usam um pacote de prática descartável e podem ser verificadas a partir do estado dos pacotes, sem depender do histórico do terminal.
Ler o estado dos pacotes e das fontes
Nesta etapa, você distinguirá a configuração dos repositórios, os metadados disponíveis e o estado dos pacotes instalados.
Inspecione as definições de fontes habilitadas. As imagens modernas do Ubuntu podem usar arquivos .list ou .sources. Este pipeline somente de leitura pesquisa ambos os locais: grep -R pesquisa recursivamente, -h oculta os nomes dos arquivos de origem, -s suprime mensagens sobre arquivos ausentes e -E habilita o padrão agrupado. head limita a exibição às doze primeiras linhas correspondentes:
grep -RhsE '^(deb |Types:|URIs:|Suites:)' /etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null | head -n 12
Pergunte ao dpkg se o Bash está instalado. -W seleciona os registros dos pacotes, enquanto -f define o formato de exibição. ${Package}, ${Version} e ${db:Status-Status} são campos do dpkg, não variáveis do shell, pois o formato está entre aspas simples:
dpkg-query -W -f='package=${Package} version=${Version} status=${db:Status-Status}\n' bash
O dpkg-query lê o estado local dos pacotes instalados. Já apt-cache policy compara a versão instalada com as versões conhecidas nos repositórios configurados:
apt-cache policy bash
Salve uma observação estável do estado de instalação:
mkdir -p /home/labex/project/package-lab
dpkg-query -W -f='${Package} ${db:Status-Status}\n' bash > /home/labex/project/package-lab/bash-state.txt
cat /home/labex/project/package-lab/bash-state.txt
Atualizar os metadados dos repositórios
Nesta etapa, você atualizará o índice de pacotes e entenderá o que o comando apt update altera.
Execute:
sudo apt update
Esse comando baixa os metadados atuais dos repositórios. Ele não instala versões mais recentes de todos os pacotes; apt upgrade é a operação específica para atualizar os pacotes instalados.
Inspecione o diretório do cache de metadados:
ls -ld /var/lib/apt/lists
find /var/lib/apt/lists -maxdepth 1 -type f | head
Registre quantos arquivos regulares de metadados estão presentes:
find /var/lib/apt/lists -maxdepth 1 -type f | wc -l | tr -d ' ' > /home/labex/project/package-lab/index-file-count.txt
cat /home/labex/project/package-lab/index-file-count.txt
Pesquisar, inspecionar e instalar um pacote do repositório
Nesta etapa, você analisará um pacote antes de instalá-lo.
Pesquise nos nomes e nas descrições dos pacotes pelo utilitário de listagem de árvores:
apt search '^tree$'
Leia os metadados:
apt show tree
Instale o pacote com o tratamento de dependências. sudo fornece o privilégio administrativo necessário, e -y responde automaticamente “sim” a esta solicitação de instalação já analisada:
sudo apt install -y tree
Verifique o estado do pacote e a localização do comando; em seguida, use-o:
dpkg-query -W -f='${Package} ${Version} ${db:Status-Status}\n' tree | tee /home/labex/project/package-lab/tree-installed.txt
command -v tree
tree -L 1 /home/labex/project/package-lab
Liste os caminhos fornecidos pelo pacote:
dpkg -L tree | head
Remover um pacote e verificar o resultado
Nesta etapa, você removerá o pacote de prática do repositório e distinguirá operações de limpeza relacionadas.
Remova o tree:
sudo apt remove -y tree
remove exclui os programas instalados pelo pacote, mas pode manter a configuração do pacote. purge também remove a configuração pertencente ao pacote. autoremove remove dependências instaladas automaticamente que não são mais necessárias; em um host real, analise a proposta antes de confirmá-la.
Visualize o que a limpeza de dependências faria sem alterar o sistema. A opção --dry-run realiza o cálculo, mas não remove nada:
sudo apt autoremove --dry-run | tee /home/labex/project/package-lab/autoremove-preview.txt
Leia as ações propostas antes de executar apt autoremove sem --dry-run, especialmente em um host compartilhado ou de produção.
A sessão atual do Bash pode lembrar o caminho antigo de um comando. Limpe esse cache de localização, verifique se o comando desapareceu e registre o estado no banco de dados de pacotes:
hash -r
command -v tree || echo "tree command is unavailable"
dpkg-query -W -f='${db:Status-Status}\n' tree 2>/dev/null || echo "not-installed" | tee /home/labex/project/package-lab/tree-removed.txt
Garanta um marcador estável, independentemente de o dpkg manter ou não um registro residual:
if dpkg-query -W -f='${db:Status-Status}' tree 2>/dev/null | grep -qx installed; then echo "still-installed"; else echo "not-installed"; fi > /home/labex/project/package-lab/tree-removed.txt
cat /home/labex/project/package-lab/tree-removed.txt
Inspecionar e instalar um pacote Deb local
Nesta etapa, você inspecionará um .deb preparado, o instalará por meio do apt, executará seu comando e o removerá corretamente.
Entre no espaço de trabalho e inspecione os metadados e o conteúdo do pacote sem instalá-lo:
cd /home/labex/project/package-lab
dpkg-deb -I labex-greeter_1.0_all.deb
dpkg-deb -c labex-greeter_1.0_all.deb
O prefixo ./ informa ao apt que este é um arquivo local, e não o nome de um pacote do repositório:
sudo apt install -y ./labex-greeter_1.0_all.deb
Consulte o pacote e execute-o:
dpkg-query -W -f='${Package} ${Version} ${db:Status-Status}\n' labex-greeter
labex-greeter | tee local-package-output.txt
Remova o pacote após o teste e confirme que o comando fornecido por ele desapareceu:
sudo apt remove -y labex-greeter
if command -v labex-greeter >/dev/null; then echo "still-installed"; else echo "local-package-removed"; fi > local-package-state.txt
cat local-package-state.txt
Resumo
Você distinguiu os metadados dos repositórios do estado dos pacotes instalados, atualizou os índices do apt, analisou um pacote antes da instalação, verificou os arquivos fornecidos e a localização do comando, removeu um pacote do repositório e concluiu o ciclo de vida de um .deb local inspecionado.



