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