Procedimento ideal para atualizar o Gentoo Linux?

23

É assim que eu atualizo o Gentoo há muito tempo. Esse é o método recomendado ? Alguma dica ou método melhor para usar?

emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all
vaqueiro
fonte
6
Eu adicionar a bandeira -N para emergir pessoalmente
Tom Ritter
2
--tree (-t) também é útil para compreender o que está acontecendo
lkraav

Respostas:

5

Parece que você tem tudo coberto. A única outra dica é talvez levar um pouco mais devagar do que uma atualização por atacado cega. Você sempre pode atualizar os pacotes ou cadeias de dependência individualmente com, em emerge -DNuav <atom>vez de world(use --oneshot para itens que não deseja adicionar ao arquivo mundial, como bibliotecas do sistema, por exemplo).

Observe que é sempre mais fácil fazer isso se você se mantém atualizado regularmente, em vez de procurar atualizações em lote monolíticas a cada dois meses. Além disso, para evitar muitas surpresas, talvez seja útil se inscrever em uma das listas de discussão como gentoo-user(AVISO: ~ 100 e-mails por dia nesta lista), pois praticamente todos os principais problemas de atualização aparecerão na lista com muita discussão explicando como resolvê-los.

Eu acho que a próxima grande atualização do "problema" será a migração para o openrc assim que estiver estável (foi realizada no meio do ano passado com apenas alguns problemas, principalmente com alterações na rede).

Ophidian
fonte
2
Sim, definitivamente +1 em manter-se atualizado regularmente e não em grandes pedaços. Há mudanças ocasionais que apenas quebram bastante. github.com/lkraav/gentoo-cron-weekly é o meu conjunto de ferramentas semanal simplista de relatórios.
lkraav
8

Eu tenho usado quase as mesmas etapas que você faz, exceto:

  • eix-syncem vez de emerge --syncgostar de ver as alterações na árvore do portage. Isso é especialmente bom para perceber os pacotes que talvez eu queira instalar que são novos na árvore.

  • layman -S (ocasionalmente) antes do surgimento do principal para sincronizar as alterações nas sobreposições.

  • eclean-dist -ddepois revdep-rebuildde limpar tarballs obsoletos. Eu faço isso após cada emergência, porque os downgrade de pacotes não são tão comuns.

  • eix-test-obsoletecomo a última etapa para ajudar a manter meus arquivos / etc / portage organizados e atualizados. Isso também me informa quando instalo os pacotes que foram completamente removidos do portage, portanto, preciso obter o ebuild no repositório. Um exemplo recente, eu tenho que mascarar todas as versões do iproute2> 2.6.22.20070710 devido ao kernel mais antigo sendo executado no meu Xen VPS, mas ele foi removido recentemente do portage.

eix-synce eix-test-obsoleteestão em app-portage / eix.

eclean-dist está no app-portage / gentoolkit.

Van Gale
fonte
+1 para eix-sync
Tim
5
  1. emerge --syncou eix-syncou emerge-delta-webrsynceeix-update
  2. emerge -av portage
  3. eclean-dist

Verifique se um dos cabeçalhos do linux, glibc, binutils, libtool ou gcc possui atualização magor (por exemplo, atualizações do gcc de 4.6 para 4.8). Se não estiver, vá para a etapa 11.

Reconstrução completa:

  1. rm -rf PKGDIR/* Substitua PKGDIR pelo seu caminho para empacotar dir!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Mudar para o novo gcc
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

Se você tiver algum problema na etapa 10 ou 11, corrija-o e tente novamente

Atualizar mundo:

  1. Limpe seu arquivo mundial /var/lib/portage/worldde pacotes desnecessários e verifique /etc/portageentidades
  2. fixpackages
  3. emerge -avuDN world
  4. eselect python update
  5. python-updater -- -av
  6. perl-cleaner --all -- -av
  7. emerge -a --depclean
  8. revdep-rebuild -i -- -av

Se você tiver algum problema nas etapas 14-18, corrija-o e repita todas as etapas da etapa 13

  1. etc-update ou dispatch-conf
  2. glsa-check -vp affected Você pode ter pacotes afetados nos slots após a atualização
  3. emaint --check all
user261123
fonte
3

Se seu objetivo é ter o mais recente absoluto de todos os pacotes, sim, isso parece cobrir todas as bases. Estou surpreso que isso funcionou para você por um longo tempo, no entanto, porque eu imaginaria que você seria mordido com frequência por blocos, deps quebrados etc. Nos últimos dois anos, tomei muito mais cuidado com a atualização por atacado, optando por fazê-lo gradualmente após visualizar a árvore de atualização. O desenvolvimento do Gentoo parece ter passado o auge. Talvez seja por causa da ascensão do Ubuntu.

De qualquer forma, outra coisa que você pode tentar, apenas para ser realmente exigente com todo o processo, é limpar seus distfiles. Existem scripts por aí, se você pesquisar.

Adam D'Amico
fonte
1
Se você se apegar a ebuilds não-mascarados, o Gentoo se tornou bastante estável na minha opinião e nem sempre quebra ao fazer uma sincronização e emergir um mundo. Você precisa saber o que está fazendo, mas o mesmo pode ser dito para o apt ou yum. Eu fui mordido por ambos.
1919 John Downey
1
Três bloqueios / quebras muito recentes que consigo pensar são libcomerr / e2fsprogs, firefox2 / 3 e xorg 1.3 / 1.5. Em todos esses casos, foram necessárias massagens não triviais para fazer a atualização por atacado funcionar, e não havia ~ palavras-chave envolvidas.
9339 Adam D'Amico
2
As últimas versões do portage - digamos nos últimos 6 meses - resolvem automaticamente quase todos os bloqueios e quebras. Incluindo libcomerr / e2fsprogs.
10119 Dan Carley
3
glsa-check -t all
glsa-check -f all

É isso que você deve executar primeiro. Não é necessário se você atualizar todos os pacotes.

Ah, e eu prefiro cfg-update;)

laurentb
fonte
1

Isto é o que eu faço:

emerge --sync         //Synchronize the package manager with the latest 
                      //version of each package.


emerge -aDvNu system  //updates the system, but only important if you want the
                      //latest stable version of the actual compiler and libraries
                      //with the core system.

emerge -uDNav world   //world means everything we've asked to be emerged before
                      //this does not include things that came pre installed.
                      //N means if you change your use directives in 
                      //your make.conf file to pull in the new packages.

emerge -av depclean   //removes libraries or programs that don't have any other 
                      //dependencies because of an update.


revdep-rebuild        //means if something is broken by an update, it 
                      //recompiles it.  Fixes dynamic and static linking problems.

Se você não entender completamente os comentários, leia isso porque é a autoridade sobre como atualizar seus pacotes do gentoo.

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1

Eric Leschinski
fonte
0

Seu processo está correto, embora a execução de todos os comandos provavelmente não seja necessária, geralmente eu apenas faço um mundo de sincronização e atualização. O Emerge informa normalmente se você precisa executar um script para reconstruir o arquivo, como durante uma grande atualização do Python, e também informa quando mesclar as alterações na configuração. Como o Gentoo não possui um caminho de atualização de versão para versão. No momento em que você surge, você tem a versão mais recente.

John Downey
fonte
0

Por um longo tempo, eu sempre usei este procedimento:

emerge -f --update --newuse --deep world && emerge --update --newuse --deep world

Eu, para os meus, prefiro atualizar durante a noite. Mas, às vezes, acontece que algo falha e você precisa fazer o download de todos (ou alguns) programas novamente.

Talvez a opção --newuse não seja necessária, mas muitas vezes estou editando meu make.conf para que faça sentido para mim.

hajowieland
fonte
Você pode usar "--installinstall-use" em vez de "--newuse", isso reinstala os pacotes com sinalizadores de uso que você alterou explicitamente. Em vez de obsoletos, foram adicionados sinalizadores de uso etc. Você ainda deve executar com "--newuse" de tempos em tempos.
hayalci
0

Parece bom, embora eu não fosse tão rápido em executar depclean.

A menos que você tenha um requisito, como pouco espaço em disco rígido, poderá voltar e limpar com intevais menos regulares. Não há mal em tê-los por perto por um curto período. Se você teve a sorte de notar alguns pacotes quebrados após a atualização, certifique-se de que eles não resultem da remoção de dependências frouxas.

Dan Carley
fonte
0

É assim que faço no meu VPS:

etapa 0 (de / etc / crontab)

0 0   * * *     root    emerge --sync &> /dev/null

passo 1:

emerge --update --deep --newuse world -av

passo 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
yanchenko
fonte