Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Gentoo aktualisieren mit emerge ...
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
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Thu Oct 17, 2019 9:30 am    Post subject: Gentoo aktualisieren mit emerge ... Reply with quote

Hallo,

um Gentoo aktuell zu halten benutze ich immer

Code:

emerge --ask --update --deep --with-bdeps=y --newuse world


ich dachte immer mit "--with-bdeps=y" werden auch Änderungen bei den Abhängigkeiten aktualisiert. Wenn man aber die Option "--changed-deps" mit benutzt erhalte ich eine Lange Liste mit Paketen die neu compiliert werden sollen.

In der Manpage steht ein bisschen dazu aber so richtig verstanden habe ich den Unterschied nicht.
Was ist denn der Unterschied zwischen den beiden?

Grüße
Alexander
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


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

PostPosted: Fri Oct 18, 2019 10:26 pm    Post subject: Reply with quote

Hallo Alexander,

ich habe mit einer Antwort etwas gewartet. Hier im Forum gibt es einige, die sich mit 'emerge' viel besser auskennen als ich. Aber wenn sonst keiner schreibt, probiere ich es.

  1. Wenn Du nach jedem 'emerge --sync'
    Code:
    emerge --update --deep --with-bdeps=y --newuse -av @world

    aufrufst, machst Du eigentlich schon viel zu viel. Ein
    Code:
    emerge --update --deep --changed-use -av @world

    sollte in der Regel ausreichend sein. Vor einem "emerge -a --depclean" sollte man natürlich weiterhin "emerge --update --deep --newuse -av @world" laufen lassen.

  2. In den ebuilds werden Abhängigkeiten zwischen Paketen definiert. Am bekanntesten sind die Build dependencies (DEPEND) und die Runtime dependencies (RDEPEND). Für beide Kategorien gibt es mehrere Unter-Kategorien, z.B. Version Dependencies, SLOT Dependencies oder USE-Conditional Dependencies. Eine Übersicht findest Du hier: https://devmanual.gentoo.org/general-concepts/dependencies/.

  3. Die ebuilds (in den die Abhängigkeiten codiert sind), werden immer mal wieder aktualisiert. Häufig bekommen die ebuilds bei solchen Änderungen eine neue Versionsnummer. Beispielsweise wenn eine neue Software-Version herauskommt oder wenn es größere Änderungen an dem ebuild gibt. Gelegentlich werden die ebuilds aber auch aktualisiert, ohne dass eine neue Versionsnummer vergeben wird.

  4. Betrachten wir zuerst die USE-Conditional Dependencies. Nehmen wir als Beispiel an, dass eine neue Python-Version 3.8 herauskommt. Alle Pakete mit Python-Code bekommen das neue USE-Flag "python3_8". Dabei werden die Versionsnummern der ebuilds nicht erhöht.

    Auf Deinem Rechner ist Python 3.8 noch nicht installiert. Deshalb ist auch das USE-Flag "python3_8" auf Deinem Rechner nicht gesetzt. Wenn Du jetzt
    Code:
    emerge --update --deep --newuse -av @world

    aufrufst, werden alle Pakete mit Python-Code neu installiert, weil es diese neue USE-Flag gibt und die bei Dir installierten Pakete mit Python-Code das USE-Flag noch nicht kennen. Das ist natürlich sinnlos. Wenn Du stattdessen
    Code:
    emerge --update --deep --changed-use -av @world

    aufrufst, werden die Python-Pakete nicht aktualisiert. Emerge sieht: okay, es gibt dieses neue USE-Flag, aber da es aber bei Dir nicht deaktiviert ist, würde sich bei Dir nichts ändern und deshalb brauche ich nichts zu aktualisieren.

    Wenn Du dann Python 3.8 installierst und das USE-Flag python3_8 gesetzt ist, würde "--changed-use" natürlich alle Pakete mit Python-Code aktualisieren, weil es sieht, dass sich das USE-Flag ändert von "nicht vorhanden" auf "gesetzt".

  5. Interessant ist die Frage, was '--with-bdeps=y' bedeutet und wann man es braucht.

    Laut man page wird diese Option automatisch immer aktiviert bei der Installation von Paketen und wenn Option "--depclean" gewählt wurde. Einige Anwender empfehlen, diese Option immer anzugeben, oder - noch besser - sie gleich in die EMERGE_DEFAULT_OPTS zu schreiben. Eine ausführliche Diskussion findet sich unter https://forums.gentoo.org/viewtopic-t-1037770.html. In einem Post in dem Thread steht auch, dass diese Option früher standardmäßig immer aktiviert war, dass dies aber zurückgenommen wurde.

    Was aber bedeutet "--with-bdeps=y" eigentlich genau?

    Nehmen wir an, folgende Anweisung wird ausgeführt:
    Code:
    emerge --update --deep -av @world

    • Emerge wählt dann zunächst die Pakete aus @world aus, die upgedatet werden sollen.
    • Für diese Pakete berechnet emerge anhand der ebuilds einen Dependency Graph. Mit Hilfe des Dependency Graphs ermittelt emerge, welche Pakete installiert werden sollen.
    • Der Dependency Graph enthält jedoch einige Pakete NICHT:

      Pakete, die mit 'emerge --depclean' gelöscht werden würden, weil sie nicht mit irgendeinem Paket aus @world über Abhängigkeiten verknüpft sind.

      Pakete, die nur über "not strictly required" build-time dependencies mit einem zu installierenden Paket verbunden sind.

    Bei der Anweisung
    Code:
    emerge --update --deep --with-bdeps=y -av @world

    werden auch "not strictly required" build-time dependencies im Dependency Graph berücksichtigt.

  6. Ein ganz andere Bedeutung hat
    Code:
    emerge --changed-deps -av @world

    Mit der Anweisung werden Pakete neu installiert, bei denen sich Abhängigkeiten im eigenen ebuild seit der Installation geändert haben.

    Beispiel: auf meinem System zeigt "emerge --changed-deps -av @world" u.a. media-fonts/source-pro-20170111 an. Bei der Installation war als DEPEND definiert:
    Code:
    || ( >=x11-apps/mkfontscale-1.2.0 x11-apps/mkfontdir ) media-fonts/encodings

    Jetzt ist in dem ebuild für DEPEND definiert:
    Code:
    >=x11-apps/mkfontscale-1.2.0 media-fonts/encodings

    Das ist eine kleine Änderung der build-time dependencies, die für installierte Pakete keine Auswirkung hat. Deshalb haben die Developer bei der Änderung die Versionsnummer nicht erhöht.

    In der Regel kann man den Entwicklern vertrauen. Wenn aufgrund einer Abhängigkeits-Änderung im ebuild ein Rebuild notwendig wird, erhöhen sie die Versionsnummer. Die Option '--changed-deps ' habe ich deshalb noch nie gebraucht.
Mike
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sat Oct 19, 2019 9:08 am    Post subject: Reply with quote

Hallo Mike,

danke für die ausführliche Antwort. Die verstehe sogar ich ... :)

Das mit dem --newuse wurde mir mal so erklärt das man es braucht wenn man in der make.conf oder der package.use die USE-Flag ändert. Für emerge ist das aber vermutlich egal weil es die gleichen Sachen machen muss egal ob man USE-Flag im Paket oder der System Konfiguration ändert.

Du hast da schon recht ich gebe da eigentlich zu viele Optionen an. Ich lasse den Rechner automatisch mit einem über cron gestarteten Script die Updates machen und da wollte ich das das möglichst alles macht was sein könnte. Nach dem Update mache ich dann immer --depclean daher werden sicher nur selten Pakete neu erstellt die ich nicht mehr benötige. Das mehr neu erstellt wird als nötig habe ich zu Gunsten der Einfachheit/Zuverlässigkeit einfach mal in kauf genommen.

Da ich auch auf manchen Rechnern Software Entwickle und da Gentoo Pakete installiert habe die zwar zu Gentoo keine Abhängigkeiten haben aber zu meiner Software möchte ich die so gerne auch aktualisiert bekommen. Hier wäre es ja dann auch Sinnvoll die Option --with-bdeps zu verwenden.

Aber "--changed-deps" die Option brauche ich dann nicht wirklich. Du hast da schon recht das die Entwickler sehr gute Arbeit leisten. Die Pakete lassen sich meist ganz Problemlos installieren. Wenn hat man mit der Software selbst Probleme ich vermute aber mal für die sind selten die Gentoo Entwickler verantwortlich.

Alexander
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