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 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.