Introdução
No Ubuntu, os softwares normalmente são distribuídos como pacotes. Os repositórios publicam arquivos de pacote e metadados que descrevem 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, removerá esse pacote 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 pelo estado dos pacotes, sem depender do histórico do terminal.
Leia 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. Imagens modernas do Ubuntu podem usar arquivos .list ou .sources. Este pipeline somente de leitura pesquisa nos dois locais: grep -R faz uma pesquisa recursiva, -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 de 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, porque o formato está entre aspas simples:
dpkg-query -W -f='package=${Package} version=${Version} status=${db:Status-Status}\n' bash
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 sobre o estado do pacote instalado:
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
Atualize os metadados dos repositórios
Nesta etapa, você atualizará o índice de pacotes e entenderá o que apt update altera.
Execute:
sudo apt update
Esse comando baixa os metadados atuais dos repositórios. Ele não instala versões mais novas de todos os pacotes; apt upgrade é a operação separada que atualiza 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
Pesquise, inspecione e instale um pacote do repositório
Nesta etapa, você investigará um pacote antes de instalá-lo.
Pesquise nos nomes e nas descrições dos pacotes pelo utilitário que lista o conteúdo de diretórios em formato de árvore:
apt search '^tree$'
Leia os metadados do pacote:
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 comando:
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
Remova um pacote e verifique o resultado
Nesta etapa, você removerá o pacote de prática do repositório e distinguirá operações de limpeza relacionadas.
Remova 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 que foram instaladas automaticamente e não são mais necessárias; analise a proposta antes de confirmá-la em um host real.
Faça uma simulação da limpeza de dependências sem alterar o sistema. A opção --dry-run faz 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 estar usando o caminho antigo de um comando armazenado em cache. Limpe esse cache de localização de comandos, 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
Inspecione e instale um pacote Deb local
Nesta etapa, você inspecionará um .deb preparado, instalará o pacote usando o apt, executará o comando fornecido por ele e fará a remoção completa.
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 comando fornecido por ele:
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, investigou 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.



