Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg

Manutenção (instalação, remoção, limpeza, pacotes quebrados, etc) de sistemas Linux Debian e derivados (Ubuntu, Linux Mint, etc) dirimindo dúvidas entre as ferramentas apt-get, apt, aptitude e dpkg. A idéia básica pode ser adaptada para outras distribuições, pois o que muda são somente as ferramentas.

[ Hits: 1.572 ]

Por: Buckminster em 22/04/2024


Comandos 2



Em relação ao dpkg, o processo de purga (dpkg purge pacote) somente se aplica a pacotes/arquivos em diretórios do sistema e não a pacotes/arquivos de configuração escritos nos diretórios /home dos usuários. Portanto, em sistemas Debian e derivados sempre que tiver de instalar manualmente pacotes, programas, etc, instale nos diretórios (pastas) sugeridos pelo desenvolvedor no arquivo README ou INSTALL ou instale sempre em diretórios do sistema, por exemplo, /usr/local ou o diretório /opt (optional - é um diretório de sistema opcional para melhor organização de instalações manuais) e existe justamente para instalação manual de programas juntamente com seus arquivos de configurações, bem como o /usr/local.

VERIFICANDO E/OU AUDITANDO COM DPKG e FSCK

O comando dpkg com a opção -C (alias para --audit) executa testes de sanidade e consistência. Sem indicar um pacote o teste será executado para todos os pacotes instalados. O dpkg -C sugerirá o que fazer com eles para os corrigir:
sudo dpkg -C

O comando acima somente retornará alguma coisa em caso de ter erros, senão retornará nada. Caso retorne algum erro, siga a sugestão para corrigir, talvez desinstalando e/ou reinstalando o pacote, etc.

O comando dpkg -V (alias para --verify) verifica a integridade dos pacotes. Sem indicar um pacote verifica todos os pacotes:
$ sudo dpkg -V

O comando acima resultou na saída abaixo (muda em cada sistema):

missing /etc/apt/keyrings
??5?????? c /etc/icinga2/constants.conf
missing c /etc/conky/conky.conf
missing c /etc/conky/conky_no_x11.conf
??5?????? c /etc/openfire/openfire.xml
??5?????? c /etc/openfire/security.xml
v ??5?????? /usr/share/vim/vim90/defaults.vim
??5?????? c /etc/lightdm/lightdm-gtk-greeter.conf


O fato de aparecer 'missing' ou '??5??????' nos arquivos não significa um problema.
missing - significa que o arquivo não está presente ou seus metadados não puderam ser obtidos.
??5?????? - as interrogações indicam que a verificação não pôde ser feita (falta de suporte, permissões de arquivos, etc.). O número 5 indica que a verificação de resumo falhou, o que significa que o conteúdo do arquivo pode ter sido alterado.
c - indica que é um arquivo de configuração.

É realizada uma verificação md5sum do conteúdo do arquivo em relação ao valor armazenado no banco de dados de arquivos. Só será verificado se o banco de dados contiver o arquivo md5sum. Para verificar se há metadados ausentes no banco de dados, o comando --audit pode ser usado. Esta é apenas uma verificação de integridade e não deve ser considerada como qualquer tipo de verificação de segurança.

A combinação dpkg -V e dpkg -C corresponde, grosso modo, ao 'sfc /scannow' do Windows, mas sem corrigir nada, somente sugere o que tem de ser feito. Logo após os comandos dpkg -V e dpkg -C você pode usar FSCK para corrigir. Ao final desta página tem alguns comandos fsck.

O dpkg utiliza o utilitário md5sum para verificar o hash dos arquivos. Execute, por exemplo:
sudo md5sum /usr/share/vim/vim90/defaults.vim

A saída será:
5122736c90659f2cd3d7bb9aa3216828 /usr/share/vim/vim90/defaults.vim

Para confirmar execute, para cada pacote 'missing' indicado ali, por exemplo:
sudo dpkg -V clamonacc
dpkg: o pacote 'clamonacc' não está instalado

sudo du -sh /var/cache/apt/archives
sudo rm /var/lib/apt/lists/* -vf

Listando todos os pacotes:
sudo dpkg --list

Listando um pacote em específico:
sudo dpkg --list | grep pacote

Listando com base numa busca por parte do nome do pacote:
sudo dpkg --list | grep 'paco'

Você pode também instalar o pacote 'debsums' que também verifica os sumários md5 dos pacotes instalados, praticamente faz a mesma que dpkg -V, mas com uma saída mais amigável:
sudo apt install debsums
$ sudo debsums -a
$ man debsums


INSTALANDO A MESMA SELEÇÃO DE PACOTES EM OUTROS COMPUTADORES

Caso você queira os mesmos pacote de um computador para outro, em primeiro lugar, recupere a lista de pacotes instalados no computador que servirá como "modelo" para copiar. Pode usar esses comandos também para fazer um backup dos programas/pacotes instalados, caso tiver que formatar e reinstalar o sistema todo do zero.
# dpkg --get-selections >pkg-list
# ls
# cat pkglist


O arquivo pkg-list passa a conter a lista dos pacotes instalados. Em seguida, transfira o arquivo pkg-list para os computadores que você quer atualizar/clonar/backupar e use os seguintes comandos:
Atualiza banco de dados do dpkg de pacotes conhecidos
# avail=`mktemp`
# apt-cache dumpavail > "$avail"
# dpkg --merge-avail "$avail"
# rm -f "$avail"


Os comandos acima você pode usar de tempos em tempos para atualizar a lista de índices de pacotes e o banco de dados do dpkg.

Transfira a seleção de atualização para o dpkg:
# dpkg --set-selections < pkg-list

Use apt-get para instalar os pacotes selecionados:
# apt-get -u dselect-upgrade

Esse comando instalará todos os pacotes necessários. Alguns pacotes podem ser removidos. No final, as máquinas de origem e de destino terão o mesmo estado. A opção '-u' mostrará uma lista dos pacotes que serão atualizados. Use com cuidado e somente quando necessário e prefira fazer essa 'restauração' somente em sistemas recém instalados.

O comando FSCK

Aqui serão dados somente alguns comandos básicos do fsck, mas para maiores informações tem links nas referências, tem o 'man fsck' e você pode pesquisar na internet, pois o conteúdo é farto. O utilitário/comando fsck faz parte do pacote util-linux e verifica e repara erros encontrados no sistema de arquivos.
Lembrando que antes você utilizará os comandos dpkg -V e dpkg -C. O dpkg -C (alias para --audit) indicará o que fazer, caso tenha alguma coisa para corrigir.
sudo dpkg -V
sudo dpkg -C

Ainda que o dpkg não verifica o sistema de aquivos, é uma boa prática executar os comandos acima porque pode ter dado algum erro na instalação de algum pacote por ter um problema no sistema de arquivos. Você pode executar fsck mesmo que nos comandos acima não acusar erro, mas também quando você plotar alguma lentidão, travamento temporário no sistema, algum erro acusado na inicialização, por exemplo, em vermelho, ou qualquer outro problema que você notar. Use o fsck com parcimônia.

Antes de executar o fsck, verifique a lista do sistema de arquivos:
df -h
ou
sudo cfdisk
ou
lsblk
ou
sudo blkid
Para ver as partições, inclusive se é GPT ou MBR:
sudo parted /dev/sdx 'print' <<< em sdx coloque sda, sdb, sdc, etc.

Após escolher a partição a ser verificada/corrigida, desmonte-a (sempre desmonte a partição/disco ANTES de executar o fsck):
umount /dev/sdxX <<< o 'x' minúsculo é uma letra, o 'X' maiúsculo é um número.

Para forçar:<
umount -f /dev/sdxX

O comando abaixo somente fará uma verificação dos erros encontrados, mas não os corrigirá:
sudo fsck -n /dev/sdx

O comando abaixo verificará e corrigirá automaticamente os erros encontrados:
sudo fsck -y /dev/sdxX

Para verificar todos os sistemas de arquivos com fsck de uma só vez pulando os sistemas de arquivos, pois estão em uso utilize as opções A (All) e R (escapa os arquivos em uso):
sudo fsck -AR
/dev/sdxX is mounted

Caso aparecer, após o comando acima, mensagem de que tem partição/disco montado, desmonte-as uma por uma e execute 'sudo fsck -AR' novamente.

Para verificar todo o disco com fsck utilize um pendrive com alguma Linux Live ou durante a inicialização no Grub escolha a opção 'Advanced options' (Opções avançadas) > 'Recovery mode' (Modo de recuperação) e depois procure fsck no menu. Pode-se também forçar a verificação na inicialização do sistema criando o arquivo forcefsck:
sudo touch /forcefsck

Verifique se foi criado:
ls /forcefsck
/forcefsck

Reinicie para executar a verificação automática. Para remover depois, senão a cada inicialização acontecerá uma verificação:
sudo rm /forcefsck

Por padrão, em algumas distribuições, o fsck verifica o sistema de arquivos a cada 30 inicializações (contadas individualmente para cada partição). Para alterar ou estabelecer a frequência de verificação, execute:
sudo tune2fs -c 30 /dev/sdxX
ou
sudo tune2fs -c 30 /dev/sdx
tune2fs 1.47.0 (5-Feb-2023)
Setting maximal mount count to 30


Neste exemplo, 30 é o número de inicializações que ocorrerão entre duas verificações. Colocando 1 fará com que a verificação ocorra em cada inicialização, ao passo que 0 fará com que a varredura deixe de ocorrer. Caso aparecer 'Setting maximal mount count to -1' significa que não ocorrerá verificações automáticas na inicialização.

Caso desejar ver a frequência e a atual contagem de montagens para uma partição específica, use:
sudo dumpe2fs -h /dev/sdxX | grep -i 'mount count'
ou
sudo dumpe2fs -h /dev/sdx | grep -i 'mount count'
dumpe2fs 1.47.0 (5-Feb-2023) Mount count: 0 Maximum mount count: 0
Página anterior     Próxima página

Páginas do artigo
   1. Comandos 1
   2. Comandos 2
   3. Explanações
Outros artigos deste autor

Compilando o Squid3

Antivírus ClamAV com proteção em tempo real

IPv6, DNSv6 e DHCPv6

Encapsulando BIND 9 e Apache 2 para obter maior segurança

Instalar OBS Studio e VLC no Slackware 15

Leitura recomendada

Multiboot pelo pendrive usando grub2: instalando várias distros a partir de uma unidade de armazenamento móvel

Personalidades do mundo Open Source

Usando OpenBSD como desktop

Remasterização de LPs no Linux

5 coisas que todo aluno de Sistemas de Informação deveria saber (e fazer)...

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts