Procédure optimale pour mettre à niveau Gentoo Linux?


23

C'est ainsi que j'améliore Gentoo depuis longtemps. Est-ce la méthode recommandée ? Des pièges ou de meilleures méthodes à utiliser?

emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all

6
J'ajoute le drapeau -N sur emerge personnellement
Tom Ritter

2
--tree (-t) est également pratique pour comprendre ce qui se passe
lkraav

Réponses:


5

Il semble que vous l'ayez couvert. La seule autre astuce est peut-être de prendre un peu plus lentement qu'une mise à jour en gros aveugle. Vous pouvez toujours mettre à jour les packages ou les chaînes de dépendances individuellement avec emerge -DNuav <atom>au lieu de world(utilisez --oneshot pour les choses que vous ne voulez pas ajouter au fichier mondial, comme les bibliothèques système par exemple).

Notez qu'il est toujours plus facile de le faire si vous vous tenez à jour régulièrement plutôt que de procéder à des mises à jour par lots monolithiques tous les deux mois. De plus, pour éviter trop de surprises, vous trouverez peut-être utile de vous abonner à l'une des listes de diffusion comme gentoo-user(AVERTISSEMENT: ~ 100 mails par jour sur cette liste) car pratiquement tous les problèmes de mise à jour majeurs sont susceptibles d'apparaître sur la liste avec beaucoup de discussions expliquant comment les résoudre.

Je suppose que la prochaine mise à jour majeure du "problème" sera la migration vers openrc une fois qu'il sera stable (cela a été fait sur ~ arch au milieu de l'année dernière iirc avec seulement quelques problèmes, principalement avec des changements de réseau).


2
Oui, définitivement +1 pour rester à jour sur le régulier plutôt qu'en gros morceaux. Il y a des changements occasionnels qui cassent beaucoup. github.com/lkraav/gentoo-cron-weekly est mon ensemble d'outils de rapports hebdomadaires simplistes.
lkraav

8

J'utilise presque les mêmes étapes que vous, à l'exception de:

  • eix-syncau lieu de emerge --syncparce que j'aime voir les modifications apportées à l'arbre de portage. C'est particulièrement agréable pour remarquer les packages que je pourrais vouloir installer qui sont nouveaux dans l'arborescence.

  • layman -S (occasionnellement) avant l'émergence de la principale pour synchroniser tout changement dans les superpositions.

  • eclean-dist -daprès le revdep-rebuildnettoyage des tarballs obsolètes. Je le fais après chaque sortie, car les déclassements de packages ne sont pas si courants.

  • eix-test-obsoletecomme dernière étape pour aider à garder mes fichiers / etc / portage bien rangés et à jour. Cela me permet également de savoir quand j'ai installé des packages qui ont été complètement supprimés de portage, je dois donc aller chercher l'ebuild à partir du référentiel. Un exemple récent, je dois masquer toutes les versions d'iproute2> 2.6.22.20070710 en raison de l'ancien noyau fonctionnant sur mon Xen VPS, mais il a récemment été supprimé de portage.

eix-syncet eix-test-obsoletesont dans app-portage / eix.

eclean-dist est dans app-portage / gentoolkit.


+1 pour Eix-Sync
Tim

5
  1. emerge --syncou eix-syncou emerge-delta-webrsynceteix-update
  2. emerge -av portage
  3. eclean-dist

Vérifiez que l'un des en-têtes linux, glibc, binutils, libtool ou gcc a une mise à jour de magor (par exemple les mises à jour gcc de 4.6 à 4.8). Si ce n'est pas le cas, passez à l'étape 11.

Reconstruction complète:

  1. rm -rf PKGDIR/* Remplacez PKGDIR par votre chemin vers le répertoire du package!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Passer à nouveau gcc
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

Si vous avez un problème à l'étape 10 ou 11, corrigez-le et réessayez

Mettre à jour le monde:

  1. Nettoyez votre fichier mondial /var/lib/portage/worlddes packages inutiles et vérifiez les /etc/portageentités
  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

Si vous rencontrez des problèmes aux étapes 14 à 18, corrigez-le et répétez toutes les étapes de l'étape 13.

  1. etc-update ou dispatch-conf
  2. glsa-check -vp affected Vous pouvez avoir des packages affectés dans les emplacements après la mise à jour
  3. emaint --check all

3

Si votre objectif est d'avoir la dernière version de tous les packages, alors oui, cela semble couvrir toutes les bases. Je suis surpris que cela fonctionne pour vous depuis longtemps, car j'imagine que vous seriez souvent mordu par des blocs, des dépôts cassés, etc. Au cours des deux dernières années, je suis devenu beaucoup plus attentif à la mise à jour en gros, choisir à la place de le faire au coup par coup après avoir consulté l'arborescence de mise à jour. Le développement de Gentoo semble avoir atteint son apogée. C'est peut-être à cause de la montée d'Ubuntu.

Quoi qu'il en soit, une chose supplémentaire que vous pourriez essayer, juste pour être vraiment fastidieux à propos de l'ensemble du processus, est de nettoyer vos fichiers distants. Il existe des scripts si vous recherchez.


1
Si vous vous en tenez aux ebuilds non masqués, Gentoo est devenu assez stable à mon avis et ne casse pas vraiment en faisant une synchronisation et émerge le monde. Vous devez savoir ce que vous faites, mais la même chose peut être dite pour apt ou miam. J'ai été mordu par les deux.
John Downey,

1
Je peux penser à trois blocages / ruptures très récents: libcomerr / e2fsprogs, firefox2 / 3 et xorg 1.3 / 1.5. Dans tous ces cas, il a fallu un massage non trivial pour faire fonctionner la mise à jour en gros, et il n'y avait pas de ~ mots clés impliqués.
Adam D'Amico

2
Les dernières versions de portage - disons au cours des 6 derniers mois - résolvent automatiquement presque tous les blocages et ruptures. Y compris libcomerr / e2fsprogs.
Dan Carley

3
glsa-check -t all
glsa-check -f all

C'est ce que vous devez exécuter en premier. Il n'est pas nécessaire de mettre à niveau tous les packages.

Oh et je préfère cfg-update;)


1

C'est ce que je fais:

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.

Si vous ne comprenez pas complètement les commentaires, lisez ceci car c'est l'autorité sur la façon de mettre à jour vos paquets gentoo.

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


0

Votre processus est correct, bien que l'exécution de chaque commande ne soit probablement pas nécessaire, je fais généralement une synchronisation et une mise à jour. Emerge vous indiquera généralement si vous devez exécuter un script pour reconstruire le fichier, comme lors d'une mise à niveau majeure de Python, et vous indiquera également quand fusionner les modifications de configuration. Puisque Gentoo n'a pas réellement de chemin de mise à niveau d'une version à l'autre. Au moment où vous sortez du monde, vous avez la dernière version.


0

Depuis longtemps, j'ai toujours utilisé cette procédure:

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

Pour le mien, je préfère mettre à jour la nuit. Mais il arrive parfois que quelque chose échoue et vous devez donc télécharger à nouveau tous (ou certains) programmes.

Peut-être que le commutateur --newuse n'est pas nécessaire, mais je modifie souvent mon make.conf donc cela a du sens pour moi.


Vous pouvez utiliser "--reinstall changed-use" au lieu de "--newuse", cela réinstalle les packages avec les indicateurs d'utilisation que vous avez explicitement modifiés. Au lieu d'utiliser des indicateurs d'utilisation obsolètes, ajoutés, etc. Vous devriez cependant toujours utiliser "--newuse" de temps en temps.
hayalci

0

Ça a l'air bien, même si je ne serais pas si rapide à lancer depclean.

Sauf si vous avez une exigence comme un faible espace sur le disque dur, vous pouvez revenir et nettoyer à des intervalles moins réguliers. Il n'y a aucun mal à les avoir autour pendant une courte période. Si vous n'avez pas eu la chance de remarquer des paquets cassés après la mise à jour, vous serez sûr qu'ils ne sont pas le résultat de la suppression des dépendances lâches.


0

C'est comme ça que je le fais sur mon VPS:

étape 0 (depuis / etc / crontab)

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

étape 1:

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

étape 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.