View previous topic :: View next topic |
Author |
Message |
guru meditation Apprentice
Joined: 18 Mar 2018 Posts: 150 Location: Planet Earth
|
Posted: Sun Feb 26, 2023 12:43 pm Post subject: Parameter für emerge um „großes Update“ fortzusetzen? |
|
|
Problem: Bei „großes Updates“ mit hunderten von Paketen (über emerge -uDUqa --keep-going --with-bdeps=y @world) läuft es selten durch, und dann beginnen die Probleme, indem emerge
– mit unterschiedlichen Slots anfängt zu meckern,
– angeblich neue Pakete braucht, die vorher nicht benötigt wurden
u.s.w.
Ich behelfe mir inzwischen damit, daß ich die komplette Liste vor Beginn speichere und bei Abbruch mich zunächst um das fehlgeschlagene Paket kümmere und am Schluß sämtliche folgenden Pakate aus der gespeicherten Liste mit emerge --nodeps -1 kompiliere.
Gibt es dafür auch einen Parameter in emerge, um mit der ganzen Liste dort forzufahren, wo emerge unterbrochen wurde? Oder was wäre der „offizielle“ Weg nach einem Update-Abbruch, sei es aufgrund eines Fehlers beim Kompilieren oder weil ich STRG-C reingehämmert habe? |
|
Back to top |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Sun Feb 26, 2023 1:18 pm Post subject: |
|
|
Ich persönlich verwende "--keep-going" nur sehr selten. Mir ist es lieber, wenn emerge die Liste abarbeitet und stehen bleibt, wenn es einen Fehler gibt. Dann behebe ich den Fehler und verwende:
um die Liste weiter abarbeiten zu lassen. emerge arbeitet mit einer Stack-Tiefe von zwei. Man kann also durchaus emerge-Befehle aufrufen, um ein ausgefehlertes Paket von Hand zu compilieren und das Problem zu debuggen und zu beheben. Die Liste geht trotzdem nicht verloren.
Wenn ich das betroffene Paket überspringen will, dann verwende ich:
Code: | emerge --resume --skipfirst |
Übrigens kann man sich, wenn emerge eine Liste abarbeitet, in einem Parallelfenster auch anzeigen lassen, was noch zu tun ist:
Code: | emerge --resume -pv |
Die Reihenfolge stimmt manchmal nicht - aber man sieht die Pakete, die noch kommen werden. |
|
Back to top |
|
|
guru meditation Apprentice
Joined: 18 Mar 2018 Posts: 150 Location: Planet Earth
|
Posted: Mon Feb 27, 2023 6:27 pm Post subject: |
|
|
Danke, das habe ich mir notiert.
--keep-going ist halt praktisch, wenn man nicht die ganze Zeit vor der Kiste sitzt und dann nur noch die Pakete abarbeiten muß, die fehlgeschlagen sind. Dann sitzt man nicht so lange davor und dreht bis zur Beendigung Däumchen. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5321
|
Posted: Tue Feb 28, 2023 7:18 am Post subject: |
|
|
guru meditation wrote: | Danke, das habe ich mir notiert.
--keep-going ist halt praktisch, wenn man nicht die ganze Zeit vor der Kiste sitzt und dann nur noch die Pakete abarbeiten muß, die fehlgeschlagen sind. Dann sitzt man nicht so lange davor und dreht bis zur Beendigung Däumchen. |
Nur mit der Gefahr ein teil kaputtes system dadurch zu erhalten _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1713
|
Posted: Tue Feb 28, 2023 1:55 pm Post subject: |
|
|
firefly wrote: | guru meditation wrote: | Danke, das habe ich mir notiert.
--keep-going ist halt praktisch, wenn man nicht die ganze Zeit vor der Kiste sitzt und dann nur noch die Pakete abarbeiten muß, die fehlgeschlagen sind. Dann sitzt man nicht so lange davor und dreht bis zur Beendigung Däumchen. |
Nur mit der Gefahr ein teil kaputtes system dadurch zu erhalten |
Inwiefern kann das System da kaputt gehen? |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5321
|
Posted: Tue Feb 28, 2023 2:24 pm Post subject: |
|
|
Christian99 wrote: | firefly wrote: | guru meditation wrote: | Danke, das habe ich mir notiert.
--keep-going ist halt praktisch, wenn man nicht die ganze Zeit vor der Kiste sitzt und dann nur noch die Pakete abarbeiten muß, die fehlgeschlagen sind. Dann sitzt man nicht so lange davor und dreht bis zur Beendigung Däumchen. |
Nur mit der Gefahr ein teil kaputtes system dadurch zu erhalten |
Inwiefern kann das System da kaputt gehen? |
App A braucht library B. Für Library B gibt es ein update welches aufgrund von ABI Änderungen bedingt das App A neu gebaut werden muss.
Beim world update wird Library B aktualisiert aber das world update bricht ab bevor App A neu gebaut wurde.
Aufgrund der ABI Änderung der Library B crasht nun App A.
Und wenn jetzt App A wichtig ist für die lauffähigkeit des systems (z.b. beim bootvorgang relevant ist) dann hast du ein teilkaputtes system.
Wobei dieses Beispiel nur zu einem Problem wird, wenn sich bei Library B trotz der ABI Änderung der SO name sich nicht ändert, wodurch das portage feature preserved-lib nicht greift, da die library dateien den identischen namen haben wie vor dem update. _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Tue Feb 28, 2023 3:16 pm Post subject: |
|
|
Ein anderes Beispiel ist:
Code: | emerge --empty --keep-going |
Am Ende sind nicht nur die Pakete NICHT neu gebaut, die ausgefehlert sind, sondern auch alle Pakete, die davon abhängig sind. Es ist nicht einfach herauszufinden, was man dann alles von Hand nachinstallieren muss, damit wirklich das gesamte System einmal neu gebaut wurde.
Deshalb besser ohne "--keep-going". Fehler sofort lösen, wenn sie auftreten. Und dann weiter mit "emerge --resume" bzw. "emerge --resume --skipfirst".
Last edited by mike155 on Tue Feb 28, 2023 4:56 pm; edited 1 time in total |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1713
|
Posted: Tue Feb 28, 2023 4:05 pm Post subject: |
|
|
firefly wrote: | Christian99 wrote: | firefly wrote: | guru meditation wrote: | Danke, das habe ich mir notiert.
--keep-going ist halt praktisch, wenn man nicht die ganze Zeit vor der Kiste sitzt und dann nur noch die Pakete abarbeiten muß, die fehlgeschlagen sind. Dann sitzt man nicht so lange davor und dreht bis zur Beendigung Däumchen. |
Nur mit der Gefahr ein teil kaputtes system dadurch zu erhalten |
Inwiefern kann das System da kaputt gehen? |
App A braucht library B. Für Library B gibt es ein update welches aufgrund von ABI Änderungen bedingt das App A neu gebaut werden muss.
Beim world update wird Library B aktualisiert aber das world update bricht ab bevor App A neu gebaut wurde.
Aufgrund der ABI Änderung der Library B crasht nun App A.
Und wenn jetzt App A wichtig ist für die lauffähigkeit des systems (z.b. beim bootvorgang relevant ist) dann hast du ein teilkaputtes system.
Wobei dieses Beispiel nur zu einem Problem wird, wenn sich bei Library B trotz der ABI Änderung der SO name sich nicht ändert, wodurch das portage feature preserved-lib nicht greift, da die library dateien den identischen namen haben wie vor dem update. |
Wenn ich dich richtig verstehe, dann ist die ursache des problems, aber nicht das --keep-going flag. Im Gegenteil, das flag kann bewirken, dass dann A doch noch gebaut wird, obwohl es einen Fehler gab.
Ich habe dich jetzt so verstanden, dass es ungefähr so aus sieht:
- Baue lib B
- Baue C (was unabhängig von A und B ist)
- Baue A (um mit der geupdaten B abhängigkeit klar zu kommen)
lib B läuft durch, und wird installiert. Bei C bricht er dann ab. wenn --keep-going, dann prüft emerge, ob Pakete die noch kommen nicht C brauchen, und wenn nicht, dann werden sie doch noch gebaut. Ohne --keep-going würde A in keinen Fall neu gebaut, und dann wärest du auf jeden Fall im kapputten Zustand.
mike155 wrote: | Ein anderes Beispiel ist
Code: | emerge --empty --keep-going |
Am Ende sind nicht nur die Pakete NICHT neu gebaut, die ausgefehlert sind, sondern auch alle Pakete, die davon abhängig sind. Es ist nicht einfach herauszufinden, was man jetzt alles von Hand nachinstallieren muss, dammit wirklich das gesamte System einmal neu gebaut wurde.
Deshalb besser ohne "--keep-going". Fehler sofort lösen wenn sie auftreten, und dann weiter mit "emerge --resume" bzw. "emerge --resume --skipfirst". |
eine emerge --empty ist auch etwas anders gelagert. da ist --keep-going tatsächlich u.U. nicht so sinnvoll
Unterm Strich finde ich es gut, dass es das gibt, und es gibt mMn sinnvolle Anwendungsfälle dafür.
Ich persönlich verwende es für world updates:
In der Regel starte ich updates Abends, in der Nacht wird der Rechner nicht benutzt, dann kann er schön kompilieren.
Wenn man dann morgens kommt und sieht, dass er beim zweiten Paket abgebrochen hat und die übrigen drölfundneunzig nicht gemacht hat ist das immer ein bisschen nervig. |
|
Back to top |
|
|
mf2 n00b
Joined: 14 Jun 2007 Posts: 48
|
Posted: Wed May 24, 2023 6:49 am Post subject: |
|
|
Quote: |
App A braucht library B. Für Library B gibt es ein update welches aufgrund von ABI Änderungen bedingt das App A neu gebaut werden muss.
Beim world update wird Library B aktualisiert aber das world update bricht ab bevor App A neu gebaut wurde.
Aufgrund der ABI Änderung der Library B crasht nun App A.
|
Das sollte eigentlich nicht passieren. Portage installiert bei --keep-going ja nicht blind weiter, sondern berechnet den Abhängigkeitsgraph neu. Es ist quasi so, als würde man nach dem Fehler
Code: |
emerge --uND @world --exclude="broken-package"
|
aufrufen.
Generell sollte bei einem world update Problem auch kein emerge --resume o.ä. notwendig sein – man kann einfach das world upgrade mit demselben Kommano wiederholen.[/code] |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|