Optimale Vorgehensweise zum Upgrade von Gentoo Linux?


23

So habe ich Gentoo für eine lange Zeit aktualisiert. Ist dies die empfohlene Methode? Irgendwelche Fallstricke oder bessere Methoden?

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

6
Ich füge die -N Flagge hinzu, um persönlich aufzutauchen
Tom Ritter

2
--tree (-t) ist auch praktisch, um zu verstehen, was los ist
lkraav

Antworten:


5

Es scheint, als hättest du alles abgedeckt. Der einzige andere Tipp ist, es vielleicht etwas langsamer zu machen als ein blindes Wholesale-Update. Sie können die Pakete oder Abhängigkeitsketten immer aktualisieren individuell mit emerge -DNuav <atom>statt world(verwenden --oneshot für Dinge , die Sie in der Welt - Datei hinzufügen möchten, wie System - Libs zum Beispiel nicht).

Beachten Sie, dass dies immer einfacher ist, wenn Sie regelmäßig auf dem neuesten Stand sind, anstatt alle paar Monate monolithische Stapelaktualisierungen durchzuführen. Um zu viele Überraschungen zu vermeiden, ist es möglicherweise hilfreich, eine der Mailinglisten wie gentoo-user(WARNUNG: ~ 100 Mails pro Tag auf dieser Liste) zu abonnieren, da so gut wie alle größeren Aktualisierungsprobleme in der Liste mit auftauchen dürften Viele Diskussionen erklären, wie man sie löst.

Ich würde vermuten, dass das nächste große "Problem" -Update die Migration auf openrc sein wird, sobald es stabil ist (es wurde Mitte letzten Jahres mit nur wenigen Problemen durchgeführt, hauptsächlich mit Netzwerkänderungen).


2
Ja, definitiv +1, wenn Sie regelmäßig auf dem Laufenden bleiben, anstatt in großen Stücken. Es gibt die gelegentlichen änderungen, die gerade viel brechen. github.com/lkraav/gentoo-cron-weekly ist mein vereinfachtes Toolset für wöchentliche Berichte.
lkraav

8

Ich habe fast die gleichen Schritte ausgeführt wie Sie, mit Ausnahme von:

  • eix-syncanstatt emerge --syncweil ich die Änderungen am Portage-Tree sehen möchte. Dies ist besonders hilfreich, wenn Sie feststellen möchten, dass Pakete, die ich installieren möchte, neu im Baum sind.

  • layman -S (gelegentlich) bevor das Hauptfenster zum Synchronisieren von Änderungen in Überlagerungen auftaucht.

  • eclean-dist -dnach den revdep-rebuildzu bereinigenden veralteten tarballs. Ich mache das nach jedem Auftauchen, weil Paket-Downgrades nicht so häufig sind.

  • eix-test-obsoleteAls letzten Schritt, um meine / etc / portage-Dateien aufgeräumt und auf dem neuesten Stand zu halten. Dadurch erfahre ich auch, wann ich Pakete installiert habe, die vollständig aus portage entfernt wurden, sodass ich das Ebuild aus dem Repository holen muss. Als aktuelles Beispiel muss ich alle Versionen von iproute2> 2.6.22.20070710 maskieren, da auf meinem Xen VPS ein älterer Kernel ausgeführt wird, der jedoch kürzlich aus dem Portage entfernt wurde.

eix-syncund eix-test-obsoletesind in app-portage / eix.

eclean-dist ist in App-Portage / Gentoolkit.


+1 für eix-sync
Tim

5
  1. emerge --syncoder eix-syncoder emerge-delta-webrsyncundeix-update
  2. emerge -av portage
  3. eclean-dist

Überprüfen Sie, ob einer der Linux-Header, Glibc, Binutils, Libtool oder Gcc Magor-Update hat (z. B. Gcc-Updates von 4.6 auf 4.8). Wenn dies nicht der Fall ist, fahren Sie mit Schritt 11 fort.

Voller Umbau:

  1. rm -rf PKGDIR/* Ersetzen Sie PKGDIR durch Ihren Pfad zum Paket dir!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Wechsle zu neuem gcc
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

Wenn Sie ein Problem in Schritt 10 oder 11 haben, beheben Sie es und versuchen Sie es erneut

Welt aktualisieren:

  1. Bereinigen Sie Ihre World-Datei /var/lib/portage/worldvon unnötigen Paketen und überprüfen Sie die /etc/portageEntitäten
  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

Wenn Sie in den Schritten 14-18 Probleme haben, beheben Sie diese und wiederholen Sie alle Schritte ab Schritt 13

  1. etc-update oder dispatch-conf
  2. glsa-check -vp affected Sie können betroffene Pakete in Slots nach dem Update haben
  3. emaint --check all

3

Wenn es Ihr Ziel ist, das absolut neueste aller Pakete zu haben, dann deckt dies anscheinend alle Grundlagen ab. Ich bin überrascht, dass dies für Sie schon lange funktioniert hat, da ich mir vorstellen würde, dass Sie häufig von Blöcken, kaputten Deps usw. gebissen werden. Wählen Sie stattdessen, um es nach dem Anzeigen des Update-Baums schrittweise zu tun. Die Gentoo-Entwicklung scheint ihre Blütezeit hinter sich zu haben. Vielleicht liegt es am Aufstieg von Ubuntu.

Eine weitere Sache, die Sie versuchen könnten, um den gesamten Prozess zu überdenken, ist das Löschen Ihrer Distfiles. Es gibt Skripte da draußen, wenn Sie suchen.


1
Wenn Sie sich an entlarvte Ebuilds halten, dann ist Gentoo meiner Meinung nach ziemlich stabil geworden und bricht nicht jeder wirklich ab, wenn Sie eine Synchronisation durchführen und eine Welt entstehen lassen. Sie müssen wissen, was Sie tun, aber das gleiche kann für apt oder yum gesagt werden. Ich bin von beiden gebissen worden.
John Downey

1
Drei der letzten Blockaden / Brüche, an die ich denken kann, sind libcomerr / e2fsprogs, firefox2 / 3 und xorg 1.3 / 1.5. In all diesen Fällen war es nicht trivial, das Update zu massieren, und es waren keine Schlüsselwörter beteiligt.
Adam D'Amico

2
Die neuesten Versionen von portage - etwa in den letzten 6 Monaten - lösen fast alle Blöcke und Brüche automatisch auf. Einschließlich libcomerr / e2fsprogs.
Dan Carley

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

Das ist, was Sie zuerst laufen sollten. Es ist nicht erforderlich, wenn Sie alle Pakete aktualisieren.

Ach und ich bevorzuge cfg-update;)


1

Das ist was ich mache:

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.

Wenn Sie die Kommentare nicht vollständig verstehen, lesen Sie diese, da dies die Autorität für die Aktualisierung Ihrer gentoo-Pakete ist.

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


0

Ihr Prozess ist korrekt, obwohl es wahrscheinlich nicht notwendig ist, jeden Befehl auszuführen. Normalerweise führe ich nur eine Synchronisierung und ein Update durch. Emerge teilt Ihnen normalerweise mit, ob Sie ein Skript ausführen müssen, um eine Datei neu zu erstellen, z. B. während eines größeren Python-Upgrades. Außerdem erfahren Sie, wann Sie Konfigurationsänderungen zusammenführen müssen. Da Gentoo eigentlich keinen Upgrade-Pfad von Version zu Version hat. In dem Moment, in dem Sie auftauchen, haben Sie die neueste Version.


0

Ich habe seit langem immer dieses Verfahren angewendet:

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

Ich für meinen Fall aktualisiere lieber über Nacht. Manchmal schlägt jedoch etwas fehl und Sie müssen alle (oder einige) Programme erneut herunterladen.

Vielleicht ist der --newuse-Schalter unnötig, aber ich bearbeite oft meine make.conf, damit es für mich Sinn macht.


Sie können "--reinstall changed-use" anstelle von "--newuse" verwenden. Dadurch werden Pakete mit explizit geänderten Use-Flags neu installiert. Anstatt obsolete, hinzugefügte Use Flags usw. zu verwenden, sollten Sie dennoch von Zeit zu Zeit mit "--newuse" ausführen.
Hayalci

0

Sieht gut aus, obwohl ich nicht so schnell depclean laufen würde.

Wenn Sie keinen geringen Festplattenspeicher benötigen, können Sie mit weniger regelmäßigen Intervallen zurückkehren und die Daten reinigen. Es schadet nicht, sie für eine kurze Zeit zu haben. Wenn Sie das Pech haben, nach dem Update einige defekte Pakete zu bemerken, sind Sie sicher, dass diese nicht auf das Entfernen loser Abhängigkeiten zurückzuführen sind.


0

So mache ich das auf meinem VPS:

Schritt 0 (aus / etc / crontab)

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

Schritt 1:

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

Schritt 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.