Atualizando meu Gentoo

0 32

O Gentoo não tem um processo de atualização tão arrumadinho quanto só um yum update da vida.  Temos sim o portage, que faz tudo que precisamos, desde que nós pedimos à ele.  Vou então descrever aqui o processo que faço todos os dias.  Sim, todos.  Gosto de deixar meu Gentoo o mais atualizado possível.  E fazendo um update diário, não se acumula tanta coisa desatualizada, então não sofro (tanto) com updates intermináveis.

  1. Sync.  Antes de mais nada, é preciso atualizar a base de dados dos pacotes do portage.  E caso use overlays gerenciados pelo layman, atualize ele também.Primeiro, atualizo o portage com:
    emerge --sync
    Depois o layman (opcional) com:
    layman -S
  2. Rebuild. Agora, peço ao portage, com o comando emerge, para atualizar todos os pacotes que tem versões novas disponíveis ou tenham novos USE, e também qualquer pacote que dependa de um destes:
    emerge -av --update --newuse --deep --with-bdeps=y @world
    O -av força o portage a me mostrar tudo que será feito e me pede confirmação antes de iniciar o processo. E como eu sei que as vezes eu exagero nos flags de compilação e etc, eu já rodo em paralelo um emerge parecido, mas que só faz o download dos pacotes.
    Assim, caso o emerge quebre no meio e pare, o download continua enquanto eu conserto o pacote e não perco tempo com isso. Faço isso com:
    emerge -fuND @world
    Essa é a forma curta do comando acima, só trocando o a por f, assim não pede confirmação, a, mas só faz o “fetch”, f.
  3. Caso tenha algum arquivo em /etc que precise ser atualizado, o próprio emerge nos avisa e eu os atualizo com:
    dispatch-conf
  4. Pacotes Obsoletos. Agora faço a limpeza dos pacotes que já não são mais úteis ou em uso com:
    emerge -a --depclean --deep
    Novamente com o -a para pedir confirmação. Neste caso eu não uso o -v, pois senão o output é gigantesco e só confunde.
  5. Dependências quebradas. Caso eu tenha atualizado alguma lib a qual outros pacotes são dependentes, é necessário recompilar estes pacotes para eles pegarem as dependências novas. Por exemplo o Boost recebe atualizações frequentes e muitos pacotes dependem dela.
    emerge -av @preserved-rebuild
    Este preserved-rebuild é um target mantido pelo portage com tudo que o portage identifica que precisa ser recompilado. As vezes algo passa e um pacote fica quebrado por não achar uma lib no sistema. Para isso, eu uso o revdep-rebuild.sh -- -av (que faz parte do app-portage/gentoolkit). Ele é um pouco mais lento, mas faz uma varredura legal em tudo que pode estar quebrado.
  6. Prelink. Depois de tudo pronto, eu gosto de usar o prelink, que é uma ferramenta que tenta localizar todas as bibliotecas dinâmicas (lib.so) de todos meus binários, e já deixa um “hint” no binário para agilizar o carregamento dos binários.
    prelink -amR
  7. Limpeza final. E por fim, excluo todos os arquivos baixados (fontes, patches, etc) que já não são usados mais por meus pacotes, mas deixo os fontes dos pacotes em uso caso precise recompilar algo:
    eclean-dist --destructive

É claro que eu faço tudo isso usando um script bash, pois não tenho paciência de se quer lembrar de todos os passos acima.  Recomendo ao leitor então tentar seguir esses passos algumas vezes para se acostumar com o processo todo, e ir criando o script sozinho, ajustando ao seu gosto.

 

Boa sorte!

você pode gostar também Mais do autor

Deixe uma resposta