# Generelle Frage zu emerge world

## Battlestar Gentoo

Hallo,

da in der nächsten Zeit auf meinem System wieder mal ein emerge world gefragt ist, machte ich mir darüber Gedanken, warum eigentlich oft empfohlen wurde, zuerst ein emerge -e system und dann ein emerge -e world durchzuführen?

emerge -e system kann ich verstehen: Die Toolchain wird neu aufgebaut, aber führe ich nun ein emerge -e world aus, bringt es doch gar nichts, die Toolchain zuerst gebaut zu haben, da emerge -e world doch ohnehin wieder irgendwie die Abhängigkeiten setzt. Ich nehme mal an, dass beim Kompiliervorgang keine besondere Reihenfolge eingehalten wird, sondern alles irgendwie durcheinander kompiliert wird.

P.S. Hat schon jemand dieses mymerge-Script ausprobiert? (http://penguinslair.dyndns.org/forums/viewtopic.php?t=40)

Es scheint sehr nützlich zu sein und vor allem erspart es einem wohl ne Menge Ärger.

----------

## Finswimmer

Wenn du ein emerge world macht er ein Update von Paketen, bei denen es eine neuere Version gibt.

Woher hast  du den Tip vorher ein emerge -e system/world zu machen?

Das muss man nur bei Major Changes von gcc machen.

emerge -e world ersetzt allerdings auch ein emerge world, aber dauert tausendmal länger und bringt nichts.

Tobi

----------

## Child_of_Sun_24

Also das mit dem emerge -e system und emerge -e world verstehe ich so, zuerst werden die ganzen System-Pakete in de neuesten Version gebaut und gegen die alten die vorher da waren verlinkt, wenn man jetzt ein emerge -e world ausführt, werden gleichzeitig alle System Pakete neu emerged allerdings diesmal gegen die neuen Versionen verlinkt und der ganze Rest gegen die neue (Dadurch stabilere [soll so sein, ich weiß es nicht so genau]) Toolchain gelinkt.

Habe mal irgendwo gelesen das einige das sogar so machen :

emerge -e system

emerge -e system

emerge -e world

emerge -e world

um maximale Stabilität zu erhalten, ich weiß wirklich nicht ob es was bringt aber es wird nunmal gesagt.

CoS24

----------

## nikaya

 *Child_of_Sun_24 wrote:*   

> Habe mal irgendwo gelesen das einige das sogar so machen :
> 
> emerge -e system
> 
> emerge -e system
> ...

 

Gesagt wird viel wenn der Tag lang ist.Meiner Meinung nach reine Zeitverschwendung.

----------

## Battlestar Gentoo

Ich wüsste auch nicht, was das bringen sollte.

----------

## franzf

Für ein stinknormales Update nach einem Sync ist das defintivstest absolut übertrieben. Wenn du Angst hast, irgendein Programm könnte nach dem update falsch gelinkt sein, schick einfach ein revdep-rebuild hinterher. Aber das war es!

emerge -e system && emerge -e world ist nur nötig, wenn du den gcc in einem nicht-bugrelease upgedatet hast, z.B. von 3.3.6 nach 4.1.1, oder so...

Ein Update läuft bei mir so ab:

```
eix-sync  # = emerge --sync && update-eix

emerge -uDNavt world
```

das war es. Und ich hatte bisher noch nie schwere große Probleme.

Grüße

Franz

----------

## Necoro

 *Child_of_Sun_24 wrote:*   

> Habe mal irgendwo gelesen das einige das sogar so machen :
> 
> emerge -e system
> 
> emerge -e system
> ...

 

Pff ... das ist ja noch gaar nix ... ich mach immer: 

```
while true; do eix-sync; emerge -e system; emerge -e world ;done
```

 - da geht man sicher wirklich kein Update zu verlieren

wer keine Ironie findet, soll sich gefälligst ne Brille kaufen =)

----------

## franzf

 *Necoro wrote:*   

> Pff ... das ist ja noch gaar nix ... ich mach immer: 
> 
> ```
> while true; do eix-sync; emerge -e system; emerge -e world ;done
> ```
> ...

 

Puh... Gut dass wir hier nicht unter Windows sind, sonst müsstest du in deine Schleife am Ende noch ein reboot einbauen...

----------

## mv

 *Child_of_Sun_24 wrote:*   

> Habe mal irgendwo gelesen das einige das sogar so machen :
> 
> emerge -e system
> 
> emerge -e system
> ...

 

Wenn alles dynamisch gelinkt ist und alle #include's und Makefiles der Programme fehlerfrei sind, genügt ein einfaches emerge -e world. "Dynamisch gelinkt" sollte im Normalfall (außer bei Paketen wie lilo, grub, genkernel, busybox o.ä. oder bei USE=static) unter Gentoo kein Thema sei (obwohl: wer kennt schon alle Feinheiten aller Pakete...). Dass die #include's alle richtig sind, darauf kann man sich schon nicht immer verlassen, wie vor kurzem jemand in diesem Forum geschrieben hat: Manchmal hat ein Autor versehentlich #include <...> statt #include "..." geschrieben, und schon kann es passieren, dass das Programm (egal welches) erst beim zweiten emerge richtig läuft. Ähnliches gilt natürlich auch für Programme wie mplayer, die ihre eigenen Bibliotheken mitbringen, aber im Falle eines solchen Fehlers die (möglicherweise noch nicht aktualisierten) des Systems benutzen. Es kann also sinnvoll sein, in so einem Fall den mplayer nach dem Upgrade der anderen Bibliothek (selbst wenn mplayer nicht davon abhängt, weil er sie eigentlich selbst mitbringt) neu zu kompilieren.

Leider heißt dies - da man diese impliziten Abhängigkeiten nicht kennt - man müsste nach jedem Upgrade eines Pakets alles nochmal rekompilieren - und selbst dann kann man noch nicht sicher sein. O(n^2) Durchläufe bei n Paketen ist natürlich nicht praktikabel (und selbst dann könnte man ja noch nicht sicher sein).

Man muss sich also irgendwo beschränken und auf Erfahrungswerte verlassen. In letzter Zeit war wohl bei Upgrades von Toolchain-Komponenten eine händische Rekompilation der Toolchain (oder einfacher: emerge -e system) gefolgt von einem emerge -e world immer ausreichend, aber Garantien gibt es nicht...

Wer weiß schon, welches $NEUES_FEATURE der nächste linux-headers bringt, mit dessen Hilfe glibc dann $DOLLE_FUNKTION zur Verfügung stellt, aufgrund dessen der gcc dann ... womit glibc wiederum ... wodurch der gcc nach Rekompilation aber ...

----------

## santaclaws

 *Child_of_Sun_24 wrote:*   

> Habe mal irgendwo gelesen das einige das sogar so machen :
> 
> emerge -e system
> 
> emerge -e system
> ...

 

*ROTFL*

 :Shocked:   :Shocked: 

Danach und dabei sind aber auf jeden Fall deine Nerven höchst instabil! 

Ein einfaches emerge -e system && emerge -e world reicht vollkommen aus.

----------

## mv

 *santaclaws wrote:*   

> Ein einfaches emerge -e system && emerge -e world reicht vollkommen aus.

 

Kannst Du das auch begründen, oder zumindest begründen, was an meiner Erklärung, dass das in bestimmten Fällen doch nicht ausreicht, falsch war?

----------

## Necoro

 *mv wrote:*   

>  *santaclaws wrote:*   Ein einfaches emerge -e system && emerge -e world reicht vollkommen aus. 
> 
> Kannst Du das auch begründen, oder zumindest begründen, was an meiner Erklärung, dass das in bestimmten Fällen doch nicht ausreicht, falsch war?

 

Ich würde mal sagen, dass die Wahrscheinlichkeit, dass so etwas auftritt, wie von dir beschrieben unter 2,5% liegt und damit statistisch irrelevant ist ^^

----------

## tuam

Ich farge mich auch, warum Du überhaupt ein funktionierendes System neu emergen willst. Weil eine neue Unterversion von GCC draußen ist. mit der das schnellste Gentoo aller Zeiten (TM) kompilierbar ist? Oder gibt es Instabilitäten?

FF,

 Daniel

----------

## mv

 *Necoro wrote:*   

> Ich würde mal sagen, dass die Wahrscheinlichkeit, dass so etwas auftritt, wie von dir beschrieben unter 2,5% liegt und damit statistisch irrelevant ist ^^

 

Es hängt immer von der Situation ab: Wenn Du einen wichtigen Server betreibst, dessen Fehlfunktion richtig ins Geld gehen kann, ist 2.5% nicht zu vernachlässigen, wenn es sich durch einen zusätzlichen emerge -e world vermeiden lässt. Wie gesagt: Die Fälle solcher Tippfehler wurden hier irgendwo berichtet (IIRC bei irgendeinem alsa-Teil).

----------

## Necoro

 *mv wrote:*   

>  *Necoro wrote:*   Ich würde mal sagen, dass die Wahrscheinlichkeit, dass so etwas auftritt, wie von dir beschrieben unter 2,5% liegt und damit statistisch irrelevant ist ^^ 
> 
> Es hängt immer von der Situation ab: Wenn Du einen wichtigen Server betreibst, dessen Fehlfunktion richtig ins Geld gehen kann, ist 2.5% nicht zu vernachlässigen, wenn es sich durch einen zusätzlichen emerge -e world vermeiden lässt. Wie gesagt: Die Fälle solcher Tippfehler wurden hier irgendwo berichtet (IIRC bei irgendeinem alsa-Teil).

 

laut meinem Statistik-Prof ist in der Medizin ein Fehler (1. Art) von 5% in Ordnung  :Wink:  ... denn sollten 2,5% das doch erst Recht sein ^^-- dazu kommt: _WENN_ man weiß, dass ein bestimmtes Paket Probleme hat, kann man es ja immer noch machen...

nur wer einen Server betreibt wird ihn nicht freiwillig dauernd mit "emerge -e world"s belästigen... er soll ja auch noch arbeiten  :Wink: 

----------

## mv

 *Necoro wrote:*   

> laut meinem Statistik-Prof ist in der Medizin ein Fehler (1. Art) von 5% in Ordnung 

 

Medizin ist weniger vorhersagbar als Computer (sonst machst Du mit Computern generell etwas falsch...)

 *Quote:*   

>  _WENN_ man weiß, dass ein bestimmtes Paket Probleme hat, kann man es ja immer noch machen...

 

Das Dumme ist, dass man das i.d.R. eben nicht weiß. Im oben erwähnten Tippfehler-Problem hatte das sogar zum Totalverlust der Partition geführt (den Grund habe ich vergessen, aber er war nicht an den Haaren herbeigezogen).

 *Quote:*   

> nur wer einen Server betreibt wird ihn nicht freiwillig dauernd mit "emerge -e world"s belästigen... er soll ja auch noch arbeiten 

 

Natürlich wird man die mehrfachen emerge -e world's dann auf einem Testsystem machen und (nach dem Testen) auf dem Server nur die dabei erstellten Binärpakete einspielen.

----------

## Necoro

 *mv wrote:*   

>  *Necoro wrote:*   laut meinem Statistik-Prof ist in der Medizin ein Fehler (1. Art) von 5% in Ordnung  
> 
> Medizin ist weniger vorhersagbar als Computer (sonst machst Du mit Computern generell etwas falsch...)

 

Okay ... Punkt für dich - das habe ich übersehen

----------

## l3u

Ein Signifikanzniveau von 5% wird allgemein für Studien akzeptiert. Für kritische (_richtig_ kritische) Sachen wird alpha = 1% gewählt. Nur so und [OT], etc. ;-)

Abgesehen davon: mymerge ist böse, deswegen hab ich nightmerge geschrieben :-)

----------

## Battlestar Gentoo

Abgesehen davon: mymerge ist böse, deswegen hab ich nightmerge geschrieben  :Smile: 

Nur toll, dass ich bereits ein emerge -e system mit mymerge durchlaufen lies. 

Ich werd mal versuchen, mit "dep" den Schaden zu beheben.

----------

## Battlestar Gentoo

"dep" richtet ja offensichtlich noch mehr Schaden an!

Ich hatte NIE Probleme mit Abhängigkeiten, da ich nie emerge -C ausführte, ohne zuerst mit equery d zu überprüfen, ob noch irgendwelche Abhängigkeiten existieren. 

Woher plötzlich 3 kaputte Abhängigkeiten kommen, ist wohl klar:

"dep" markierte und löschte mir z.B.

```

media-video/mjpegtools

    selected: 1.8.0-r1 

   protected: none

     omitted: none
```

Bei revdep-rebuild bekomme ich nun ein

```
Checking dynamic linking consistency...

  broken /usr/lib/libquicktime/lqt_mjpeg.so (requires  libjpeg-mmx.so.62)

  broken /usr/lib/vlc/video_output/libglide_plugin.so (requires  libglide3.so.3)

  broken /usr/lib/libquicktime/lqt_mjpeg.la (requires /usr/lib/libjpeg-mmx.la)

```

Allmählich glaube ich, dass es stets besser ist, keine Tools zu verwenden, die nicht ausschließlich von Gentoo Linux kommen!

mymerge verwendete ich auch nur deswegen, weil ein abgebrochenes emerge -e system oder emerge -e world nicht mehr wieder auszuführen ist, ohne, dass man alle Pakete von vorne wieder neu bauen muss.

----------

## tuam

 *Battlestar Gentoo wrote:*   

> Allmählich glaube ich, dass es stets besser ist, keine Tools zu verwenden, die nicht ausschließlich von Gentoo Linux kommen!

 

emerge --depclean   :Question:   :Twisted Evil: 

 *Battlestar Gentoo wrote:*   

> mymerge verwendete ich auch nur deswegen, weil ein abgebrochenes emerge -e system oder emerge -e world nicht mehr wieder auszuführen ist, ohne, dass man alle Pakete von vorne wieder neu bauen muss.

 

Geht emerge --resume bei Dir nicht?

FF,

 Daniel

----------

## Battlestar Gentoo

emerge --depclean

Hmmm, ja?

Geht emerge --resume bei Dir nicht? 

Habe noch nie damit gearbeitet:

```
       --resume

              Resumes the last merge operation. It can be treated just like a

              regular emerge: --pretend and other options work alongside it.

              'emerge --resume' only returns an error on failure. When there is

              nothing to do, it exits with a message and a success condition.

```

Was genau heißt das nun? Dass emerge -uD world nochmals ausgeführt wird, oder, dass das abgebrochene Paket nochmals versucht wird, heruntergeladen zu werden? Beides wäre nicht zielführend.

Ich glaube auch kaum, dass Portage in einem "emerge -uD world"-Prozess "beim nächsten" File so einfach weitermachen würde, falls ich emerge --resume ausführe. Selbst wenn es das würde, wäre ein emerge -uD world wohl ein Prozess von mehreren Tagen, wie es bei mir in der Vergangenheit immer war, da es immer irgendwelche Pakete gab, die einen Abbruch verursachten, und Portage erst dann wieder weitermachen konnte, wenn ich erneut "emerge -uD world" startete. 

Das will ich mir ehrlich gesagt ersparen. Deswegen suche ich nach Möglichkeiten, dies zu umgehen.

----------

## nikaya

 *Quote:*   

> Was genau heißt das nun? 

 

```
emerge --resume world
```

Setzt das World-Update da fort wo mit einem Fehler abgebrochen wurde,inklusive dem Paket das den Fehler verursachte.

```
emerge --resume --skipfirst world
```

Setzt das World-Update da fort wo mit einem Fehler abgebrochen wurde,überspringt jedoch das fehlerverursachende Paket und macht beim nächsten weiter.Am besten den Namen des Fehlerpakets notieren und erst mal weitermachen bis world durch ist.

Du darfst aber zwischenzeitlich nichts anderes emergen,sonst vergisst Portage die abgearbeitete Liste.

----------

## tuam

 *Battlestar Gentoo wrote:*   

> emerge --depclean
> 
> Hmmm, ja?

 Ist 100% pures Gentoo und kann Dein System schreddern, wenn Du nicht aufpasst. Es gibt halt Dinge, wo man wissen muss, was passieren wird...

 *john.doe wrote:*   

> Du darfst aber zwischenzeitlich nichts anderes emergen,sonst vergisst Portage die abgearbeitete Liste.

 Das habe ich auch gedacht, aber emerge führt in der Tat eine Backup-Liste. Du kannst zwischendurch einzelne emerges starten.

FF,

 Daniel

----------

## nikaya

 *tuam wrote:*   

>  *Battlestar Gentoo wrote:*   emerge --depclean
> 
> Hmmm, ja? Ist 100% pures Gentoo und kann Dein System schreddern, wenn Du nicht aufpasst. Es gibt halt Dinge, wo man wissen muss, was passieren wird...
> 
> 

 

"emerge --depclean" führe ich immer mit der Option "-av" aus,dann zeigt er die Liste der Pakete und wartet auf das 'y' vom User.Zur Sicherheit mache ich anschließend immer "revdep-rebuild" falls "depclean" was verbockt hat.Ich hatte aber noch nie Probleme damit.

 *tuam wrote:*   

> 
> 
>  *john.doe wrote:*   Du darfst aber zwischenzeitlich nichts anderes emergen,sonst vergisst Portage die abgearbeitete Liste. Das habe ich auch gedacht, aber emerge führt in der Tat eine Backup-Liste. Du kannst zwischendurch einzelne emerges starten.
> 
> 

 

Hmmh,wäre mir neu.Dann ist das irgendwann mit einer neuen Version von Portage gefixt worden.Andererseits wäre es unlogisch da nach neuen emerges "world" eigentlich neu berechnet werden müßte.

----------

## tuam

 *john.doe wrote:*   

> Hmmh,wäre mir neu.Dann ist das irgendwann mit einer neuen Version von Portage gefixt worden.Andererseits wäre es unlogisch da nach neuen emerges "world" eigentlich neu berechnet werden müßte.

 Siehe z.B. /usr/bin/emerge ab Zeile 4569.

FF,

 Daniel

----------

## Battlestar Gentoo

 *john.doe wrote:*   

>  *Quote:*   Was genau heißt das nun?  
> 
> ```
> emerge --resume world
> ```
> ...

 

Ok, zumindest etwas Positives, danke.

----------

## nikaya

 *tuam wrote:*   

>  *john.doe wrote:*   Hmmh,wäre mir neu.Dann ist das irgendwann mit einer neuen Version von Portage gefixt worden.Andererseits wäre es unlogisch da nach neuen emerges "world" eigentlich neu berechnet werden müßte. Siehe z.B. /usr/bin/emerge ab Zeile 4569

 

```

           if not success:

               show_invalid_depstring_notice(

                  ("installed", myroot, pkg, "nomerge"),

                  depstr, atoms)

               return

```

Bin jetzt nicht der Python-Freak und habe auch keine Lust mir erst zusammen zu suchen was die Objekt -und Klassendefinitionen bedeuten.

Ich weiß aber aus eigener Erfahrung dass ein Emerge zwischendurch ein --resume unmöglich machte.Wie gesagt:Ob es heute anders ist kann ich nicht sagen (und schmeiße bestimmt kein "emerge -e world" an um es zu testen  :Wink: ).

Vielleicht kann unser Python-Guru Necoro was dazu sagen.Der kennt sich wegen seinem Portato im Portage-Code ziemlich gut aus.  :Wink: 

----------

## Necoro

 *john.doe wrote:*   

> Vielleicht kann unser Python-Guru Necoro was dazu sagen.Der kennt sich wegen seinem Portato im Portage-Code ziemlich gut aus. 

 

Danke für die Blumen *hust* ... aber ich denke, dass die Zeilenangaben von unserem lieben tuam einfach nicht korrekt sind  :Wink:  ... denn darüber steht etwas wie:

```
if "--resume" in myopts and \

      ("resume" in mtimedb or

      "resume_backup" in mtimedb):

      if "resume" not in mtimedb:

         mtimedb["resume"] = mtimedb["resume_backup"]

         del mtimedb["resume_backup"]

         mtimedb.commit()

```

Was einen davon ausgehen lässt, dass es ein Backup gibt ... ich meine auch so etwas schon mal in #gentoo-portage gelesen zu haben, dass Portage zwar ein Backup anlegt, es aber nicht so einfach benutzen kann  :Smile: 

(ansonsten in Zukunft lieber Portage-Entwickler fragen  :Wink:  ... mein Wissen über Portage/Emerge fällt unter die Signifikanzgrenze ;P)

----------

## nikaya

 *Necoro wrote:*   

> 
> 
> (ansonsten in Zukunft lieber Portage-Entwickler fragen  ... mein Wissen über Portage/Emerge fällt unter die Signifikanzgrenze ;P)

 

Ist aber imho immer noch wesentlich signifikanter als meine Kenntnisse.  :Wink: 

----------

## tuam

 *john.doe wrote:*   

> 
> 
> ```
> 
>            if not success:
> ...

 Das steht bei mir in Zeile 4505ff. Mal sehen:

```
# emerge --info

Portage 2.1.2-r9 (default-linux/x86/2006.0, gcc-4.1.2, glibc-2.5-r0, 2.6.19-ck2-r4 i686)

<snip>

# emerge -uDavN world

These are the packages that would be merged, in order:

Calculating world dependencies... done!

[ebuild  N    ] dev-python/elementtree-1.2.6  41 kB

[ebuild     U ] media-tv/freevo-1.6.1 [1.5.4] USE="X dvd encode nls -directfb% -lirc -matrox" 12,720 kB

Total: 2 packages (1 upgrade, 1 new), Size of downloads: 12,761 kB

Would you like to merge these packages? [Yes/No] y

>>> starting parallel fetching

>>> Emerging (1 of 2) dev-python/elementtree-1.2.6 to /

>>> Downloading 'ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo/distfiles/elementtree-1.2.6-20050316.tar.gz'

--18:04:11--  ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo/distfiles/elementtree-1.2.6-20050316.tar.gz

           => `/usr/src/distfiles/elementtree-1.2.6-20050316.tar.gz'

Resolving sunsite.informatik.rwth-aachen.de... 137.226.34.227

Connecting to sunsite.informatik.rwth-aachen.de|137.226.34.227|:21... connected.

Logging in as anonymous ... Logged in!

==> SYST ... done.    ==> PWD ... done.

==> TYPE I ...

Exiting on signal 2

# emerge -av1 nvidia-drivers

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R   ] x11-drivers/nvidia-drivers-1.0.9631  0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

Would you like to merge these packages? [Yes/No] y

>>> Emerging (1 of 1) x11-drivers/nvidia-drivers-1.0.9631 to /

<snip>

>>> Regenerating /etc/ld.so.cache...

>>> x11-drivers/nvidia-drivers-1.0.9631 merged.

>>> No packages selected for removal by clean

>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

# emerge --resume

Calculating dependencies... done!

*** Resuming merge...

>>> starting parallel fetching

>>> Emerging (1 of 2) dev-python/elementtree-1.2.6 to /

<etcetc>
```

FF,

 Daniel

----------

## nikaya

```
emerge -uDavN world
```

Es ging ja auch um "emerge -e world".

Bin mir aber nicht sicher,vielleicht hast Du ja auch Recht.  :Wink: 

----------

## santaclaws

 *mv wrote:*   

>  *santaclaws wrote:*   Ein einfaches emerge -e system && emerge -e world reicht vollkommen aus. 
> 
> Kannst Du das auch begründen, oder zumindest begründen, was an meiner Erklärung, dass das in bestimmten Fällen doch nicht ausreicht, falsch war?

 

Also der Ottonormalanwender würde durch ein doppeltes emerge -e system und emerge -e world nur unnötig Zeit und Geld verschwenden. 

Was Du beschrieben hast, ist garantiert richtig, aber wenn Du sagst, dass man nach mehrfachem "-e" immer noch nicht sicher sein kann, dass alles richtig verschmolzen wurde, dann kann man auch bei nur einem Durchgang bleiben, denn die hundertprozentig korrekt funktionierende und buglose Software wird es dann nicht geben. (Annahme - es sei denn, jemand kennt eine...  :Exclamation: )

Zumindest ist mir mit einem einfachen "-e" noch nichts nachteiliges passiert oder aufgefallen..

 :Razz: 

----------

