Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Parameter für emerge um „großes Update“ fortzusetzen?
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
guru meditation
Tux's lil' helper
Tux's lil' helper


Joined: 18 Mar 2018
Posts: 141
Location: Planet Earth

PostPosted: Sun Feb 26, 2023 12:43 pm    Post subject: Parameter für emerge um „großes Update“ fortzusetzen? Reply with quote

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
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Sun Feb 26, 2023 1:18 pm    Post subject: Reply with quote

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:
Code:
emerge --resume

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
View user's profile Send private message
guru meditation
Tux's lil' helper
Tux's lil' helper


Joined: 18 Mar 2018
Posts: 141
Location: Planet Earth

PostPosted: Mon Feb 27, 2023 6:27 pm    Post subject: Reply with quote

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
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5186

PostPosted: Tue Feb 28, 2023 7:18 am    Post subject: Reply with quote

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
View user's profile Send private message
Christian99
Veteran
Veteran


Joined: 28 May 2009
Posts: 1668

PostPosted: Tue Feb 28, 2023 1:55 pm    Post subject: Reply with quote

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
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5186

PostPosted: Tue Feb 28, 2023 2:24 pm    Post subject: Reply with quote

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
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Tue Feb 28, 2023 3:16 pm    Post subject: Reply with quote

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
View user's profile Send private message
Christian99
Veteran
Veteran


Joined: 28 May 2009
Posts: 1668

PostPosted: Tue Feb 28, 2023 4:05 pm    Post subject: Reply with quote

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
View user's profile Send private message
mf2
n00b
n00b


Joined: 14 Jun 2007
Posts: 43

PostPosted: Wed May 24, 2023 6:49 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
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