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

Publicado por Xerxes em 07/02/2026

[ Hits: 54 ]

 


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

Usando terminal do Xfce no Geany

Bloqueio de tela com i3wm

Como compilar o DOOM RETRO no Linux

Visualizador de Áudio no Terminal

Erro ao tentar instalar Manjaro Linux [Resolvido]

Leitura recomendada

Processos de usuário em segundo plano e como manipulá-los

Adicionando key válida no APT-GET

Como converter uma imagem em favicon de múltiplas resoluções

Escutando música pelo terminal do Linux

Visualizando tempo de conexão com o ac

  

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