Instalação de software no Linux

LinuxBeginner
Pratique Agora

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.