Manutenção básica para Gentoo Linux (com script)

Publicado por Xerxes em 07/02/2026

[ Hits: 55 ]

 


Manutenção básica para Gentoo Linux (com script)



Introdução

Manter o Gentoo saudável não é só dar um emerge --sync. Por ser uma distribuição rolling release baseada em compilação, pequenos desalinhamentos em bibliotecas, módulos de linguagens (Python/Perl) e arquivos de configuração podem se acumular.

Abaixo, apresento um script que realiza uma varredura no sistema. Algo bem simples, só para ajudar. Ele não aplica nada de correção, apenas reporta o que precisa ser feito e sugere os comandos, permitindo que o administrador tenha controle total.

A importância dos Binários (getbinpkg)

Compilar tudo do zero é a alma do Gentoo, mas nem sempre temos tempo. Usar pacotes binários pré-compilados (quando disponíveis) acelera drasticamente as atualizações de pacotes grandes.

Para que o Portage atualize também os binários sem o parâmetro -g, adicione ao seu /etc/portage/make.conf:

FEATURES="getbinpkg"

Nada melhor que automatizar um pouco o processo de cuidar do sistema, certo? Mas nem tão automático assim. Abaixo uma imagem do resultado do script:

Linux: Manutenção básica para Gentoo Linux (com script)

O Script: check_gentoo.sh

Este script utiliza o eix. Instale-o se não tiver.

#!/bin/bash
# Autor: Xerxes Lins (vivaolinux.com.br/~xerxeslins)
# Versão e data: v1.0 (7 fev 2026)
# Descrição: verifica atualizações e integridade do Gentoo sem aplicar mudanças.

echo "--- Iniciando Varredura de Manutenção ---"

# 1. Sincronização
echo "[1/7] Sincronizando repositórios (eix-sync)..."
eix-sync -q

# 2. Atualizações do World (Filtro Refinado)
echo "[2/7] Verificando atualizações do @world..."
updates=$(emerge -puvDN @world --with-bdeps=y 2>/dev/null)

# Contagens específicas baseadas nas siglas do Portage
upgrades=$(echo "$updates" | grep -E "^\[ebuild  U" | wc -l)
newslots=$(echo "$updates" | grep -E "^\[ebuild  NS" | wc -l)
reinstalls=$(echo "$updates" | grep -E "^\[ebuild   R" | wc -l)
binarios=$(echo "$updates" | grep -E "^\[binary" | wc -l)

total_updates=$((upgrades + newslots + reinstalls + binarios))

# 3. Pacotes Órfãos
echo "[3/7] Analisando pacotes órfãos (depclean)..."
orphans=$(emerge -p --depclean 2>/dev/null)
orphan_count=$(echo "$orphans" | grep -E "^ [a-z0-9]*/[a-z0-9]*" | wc -l)

# 4. Integridade de Bibliotecas
echo "[4/7] Verificando links dinâmicos (revdep-rebuild)..."
revdep_out=$(revdep-rebuild -p 2>/dev/null)
revdep_needed=$(echo "$revdep_out" | grep -E "emerge --oneshot" | wc -l)

# 5. Configurações
echo "[5/7] Verificando arquivos de configuração pendentes..."
conf_files=$(find /etc -name '._cfg????_*' 2>/dev/null | wc -l)

# 6. Perl
echo "[6/7] Verificando consistência do Perl..."
perl_needed=$(perl-cleaner --pretend 2>/dev/null | grep -E "emerge" | wc -l)

# 7. Python
echo "[7/7] Verificando consistência do Python..."
python_needed=$(python-updater -p 2>/dev/null | grep -E "emerge" | wc -l)

echo -e "\n--- RELATÓRIO FINAL ---"
echo "  • Atualizações (Upgrades):   $upgrades"
echo "  • Novos Slots (New Slots):   $newslots"
echo "  • Reinstalações (Reinstall): $reinstalls"
echo "  • Pacotes Binários:          $binarios"
echo "  • Pacotes órfãos:            $orphan_count"
echo "  • Arquivos de config:        $conf_files"

echo -e "\n--- COMANDOS SUGERIDOS ---"
cmd_next=1
total_acoes=0

if [ "$total_updates" -gt 0 ]; then
    echo "${cmd_next}. Atualizar tudo:   emerge -auvDN @world"
    ((cmd_next++))
    ((total_acoes++))
fi

if [ "$orphan_count" -gt 0 ]; then
    echo "${cmd_next}. Limpar órfãos:    emerge --depclean"
    ((cmd_next++))
    ((total_acoes++))
fi

if [ "$conf_files" -gt 0 ]; then
    echo "${cmd_next}. Configurações:    dispatch-conf"
    ((cmd_next++))
    ((total_acoes++))
fi

if [ "$revdep_needed" -gt 0 ]; then
    echo "${cmd_next}. Corrigir links:   revdep-rebuild"
    ((cmd_next++))
    ((total_acoes++))
fi

if [ "$perl_needed" -gt 0 ]; then
    echo "${cmd_next}. Corrigir Perl:    perl-cleaner --all"
    ((cmd_next++))
    ((total_acoes++))
fi

if [ "$python_needed" -gt 0 ]; then
    echo "${cmd_next}. Corrigir Python:  python-updater"
    ((cmd_next++))
    ((total_acoes++))
fi

if [ "$total_acoes" -eq 0 ]; then
    echo "Nada a fazer. Seu sistema está 100% em ordem!"
fi

echo -e "\n--- Fim da Verificação ---"

Entendendo os comandos sugeridos

emerge -auvDN @world: comando principal de atualização. Com a FEATURE getbinpkg, ele baixará binários sempre que possível.
  • a (ask): Pergunta antes de agir.
  • u (update): Atualiza os pacotes.
  • v (verbose): Mostra detalhes.
  • D (deep): Verifica as dependências de todo o sistema, não só dos pacotes diretos.
  • N (newuse): Recompila se você mudou alguma flag USE.

Outros:
  • emerge --depclean: remove pacotes "sobressalentes". Se uma biblioteca não é mais usada por nenhum programa, ela deve ser removida para evitar conflitos futuros.
  • dispatch-conf: ferramenta essencial para gerenciar o /etc. Ela permite que você mescle mudanças em arquivos de configuração de forma interativa, evitando que o sistema quebre após uma atualização de serviço.
  • revdep-rebuild: verifica se algum binário do sistema ficou com links quebrados (quando um programa procura uma biblioteca .so que mudou de versão).
  • perl-cleaner --all: recompila módulos Perl que foram instalados com uma versão antiga do interpretador, garantindo que tudo continue funcionando após um update do Perl.
  • python-updater: semelhante ao anterior, garante que os scripts e pacotes Python estejam apontando para a versão correta do slot do Python ativo no sistema.

Outras dicas deste autor

Migrando uma prefeitura para Software Livre

Criando usuário no Kali Linux

Jogos Indie no GNU/Linux

Como instalar Flash Player no Opera (Slackware)

Como remover PPAs definitivamente

Leitura recomendada

Alterando pasta padrão /var/www para pasta no Apache 2 (Debian 8)

Como Ler e Gerar QR Code no Linux

Iniciando o Mplayer em tela cheia na segunda placa de vídeo

Samba - Carregar wallpaper nas estações Windows durante logon

MultiTail - Comando tail em múltiplos arquivos no Linux

  

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