# [solved] emerge -u world oder emerge -uD world?

## netbui

Hallo,

 ich benutze Gentoo nun seit über einem Jahr auf einigen Rechnern. Die erste Zeit habe ich wöchentlich immer mit emerge -uDNnavkt ein Systemupdate gemacht, was immer Ewigkeiten gedauert hat. Deshalb habe ich einfach das --deep weggelassen, was den Updateprozess erheblich beschleunigt. 

Habe ich dadurch mit irgendwelche Problemen zu rechnen? 

Vielen Dank für eventuelle Antworten!Last edited by netbui on Thu May 10, 2007 12:27 pm; edited 1 time in total

----------

## musv

Es gab da mal'n Link dazu: "Warum emerge -uD world schlecht ist". Den such ich jetzt aber nicht erst raus.

Folgende Fakten:

Emerge -uD solltest du meiden, da dadurch auch Pakete aktualisiert werden, die du nur indirekt benutzt (z.B. die ganzen Libs). Falls ein von Dir installiertes Paket eine neuere Version benötigt, wird die auch bei einem normalen Update mit aufgespielt. 

Hauptproblem ist aber, daß du bei --deep fast immer ein revdep-rebuild ausführen müßtest, da die Gefahr viel größer ist, daß irgendwelche Pakte nicht mehr funktionieren aufgrund von broken links.

Es ist also nicht schlecht, auf --deep zu verzichten. Es ist im Gegenteil dazu eher schlecht, sämtliche Updates mit --deep auszuführen.

----------

## kernelOfTruth

 *musv wrote:*   

> Es gab da mal'n Link dazu: "Warum emerge -uD world schlecht ist". Den such ich jetzt aber nicht erst raus.
> 
> Folgende Fakten:
> 
> Emerge -uD solltest du meiden, da dadurch auch Pakete aktualisiert werden, die du nur indirekt benutzt (z.B. die ganzen Libs). Falls ein von Dir installiertes Paket eine neuere Version benötigt, wird die auch bei einem normalen Update mit aufgespielt. 
> ...

 

ach deswegen muss ich immer so "oft" 

```
revdep-rebuild -i
```

  ausführen   :Laughing: 

danke für die Klarstellung   :Wink: 

----------

## psyqil

 *musv wrote:*   

> Es gab da mal'n Link dazu: "Warum emerge -uD world schlecht ist".

 Ging es da nicht um -U? Sonst hast Du natürlich vollkommen recht!

----------

## Finswimmer

 *psyqil wrote:*   

>  *musv wrote:*   Es gab da mal'n Link dazu: "Warum emerge -uD world schlecht ist". Ging es da nicht um -U? Sonst hast Du natürlich vollkommen recht!

 

Ein -U gibt es nicht?

 *Quote:*   

> $emerge --help|grep "\-U"
> 
> Actions: [ --clean | --depclean | --prune | --regen | --search | --unmerge ]
> 
>        --unmerge (-C short option)
> ...

 

----------

## psyqil

Nicht mehr, -U war nämlich schlecht! Das hat Downgrades verhindert, damals, als man noch ACCEPT_KEYWORDS=~x86 emerge ... verwenden mußte, und damit natürlich auch sicherheitsrelevante Downgrades.

----------

## ichbinsisyphos

"-u world" updated wirklich nur die files, die im /var/lib/portage/world eingetragen sind. also nur packages die du explizit emerged hast. abhängigkeiten zu diesen packages werden ignoriert. längerfristig kann das sicher zu problemen führen, wenn alte dependencies nicht mehr mit ständig aktualisierten programmen arbeiten wollen.

----------

## l3u

Aber wenn ein Paket eine neuere Version von irgendwas haben will, dann werden die Abhängigkeiten ja auch mit aktualisiert. Also von daher dürfte es keine Probleme geben.

Vielmehr bringt uD eben alles auf den aktuellen Stand, was eben z.B. auch Sicherheitsupdates von Abhängigkeiten miteinschließt.

----------

## Carlo

Wenn du emerge ohne --deep ausführst, ist die Nutzung von glsa-check Pflicht, da du sonst das eine oder andere Sicherheitsupdate verschläfst. Desweiteren ist ein Problem, daß die Mehrheit (auch unter den Entwicklern) wohl --deep nutzt und deswegen durchaus das eine oder andere Mal eine zu ändernde Minimalabhängigkeit übersehen wird. Sowas ist natürlich ein Bug. Wie es nicht anders sein kann, gibt es aber auch Stimmen, die meinen --update sollte das gleichen machen, wie --deep --update.

----------

## Keepoer

 *musv wrote:*   

> Es gab da mal'n Link dazu: "Warum emerge -uD world schlecht ist". Den such ich jetzt aber nicht erst raus.
> 
> Folgende Fakten:
> 
> Emerge -uD solltest du meiden, da dadurch auch Pakete aktualisiert werden, die du nur indirekt benutzt (z.B. die ganzen Libs). Falls ein von Dir installiertes Paket eine neuere Version benötigt, wird die auch bei einem normalen Update mit aufgespielt. 
> ...

 

Huch   :Shocked: 

Ich hab seit ca. 2 Jahren einen Homeserver laufen, bei dem ich in einem Zyklus von 1 bis 3 Wochen regelmäßig update - und zwar immer mit --deep. Und bisher habe ich auch noch kein revdep-rebuild machen müssen. Was vielleicht aber auch daran liegt, dass ich kaum etwas an der Konfiguration geändert habe und nur Mainstream-Software laufen habe (Samba, AMP). Ich sehe deshalb keinen Grund, nicht auch in Zukunft ein --deep zu machen...

----------

## tuxianer

Ich kann mich dem nur anschließen, ich betreue einen Server und meinen Home PC, und mache bei beidem immer ein emerge -uD world, habe noch nie ein Problem gehabt, lasse zwar revdep-rebuild ab und an laufen aber meist nur aus dem Grund das ich alles ordentlich und sauber halten möchte. Gerade bei Server Systemen schränkt sowas die suche nach Fehler erheblich ein, desweiteren die Sicherheitsupdates von Libs oder anderem sind mit drin.

Also ich kann über emerge -uD world nichts schlechtes sagen.

MfG

----------

## netbui

Hallo,

 vielen Dank für die rege Diskussion, ich werde mich wohl ausführlicher mit galsa-check befassen oder meine Maschinchen von nun an regelmäßig mit --deep updaten. Ich habe eigentlich angenommen, dass mit einem Update ohne --deep auch sicherheitsrelevante Patches eingespielt werden - wieder was gelernt.

----------

## Carlo

@Keepoer: Ein zwei jahre altes System ohne ein einziges Mal revdep-rebuild ausgeführt zu haben, dürfte die eine oder andere Sicherheitslücke aufweisen... Was wirft denn z.B. ls -l /usr/lib/libssl.* aus?

----------

## netbui

Hallo Carlo,

 revdep-rebuild habe ich regelmäßig jeden Monat laufen lassen. Ich war nur unsicher, ob es eben nicht reicht, regelmäßig ein emerge -u world ohne --deep durchzuführen. Ich bin etwas erstaunt, dass  ohne --deep Sicherheitslücken entstehen können. Ich war davon ausgegangen, dass sicherheitsrelevante Updates durch ein einfaches emerge -u eingespielt werden, da ja auch ein neues Päckchen existiert.

```
~ #  ls -l /usr/lib/libssl.*

-rw-r--r-- 1 root root 390K 18. Jan 00:28 /usr/lib/libssl.a

lrwxrwxrwx 1 root root   15 18. Jan 00:28 /usr/lib/libssl.so -> libssl.so.0.9.8

-r-xr-xr-x 1 root root 246K 18. Jan 00:28 /usr/lib/libssl.so.0.9.8
```

Ich habe erst gestern ein emerge -uD world durchgeführt, das letzte mal davor wohl im Oktober letzten Jahres. Die libssl ist also im Januar bei einem Update ohne --deep installiert worden. Oder ist die Version etwa kritisch?

----------

## manuels

 *Carlo wrote:*   

> [..]dürfte die eine oder andere Sicherheitslücke aufweisen...

 

Versteh ich nicht ganz, wieso?

----------

## amne

 *Carlo wrote:*   

> Desweiteren ist ein Problem, daß die Mehrheit (auch unter den Entwicklern) wohl --deep nutzt und deswegen durchaus das eine oder andere Mal eine zu ändernde Minimalabhängigkeit übersehen wird.

 

Ich mache so gut wie nie -D und hatte das Problem in meiner gesamten Gentoozeit auf allen Rechnern maximal 3 mal. Insofern ist das also kein wirkliches Problem.

----------

## Keepoer

 *Carlo wrote:*   

> @Keepoer: Ein zwei jahre altes System ohne ein einziges Mal revdep-rebuild ausgeführt zu haben, dürfte die eine oder andere Sicherheitslücke aufweisen... Was wirft denn z.B. ls -l /usr/lib/libssl.* aus?

 

```
ls -l /usr/lib/libssl.*

-rw-r--r-- 1 root root 397138  2. Okt 2006  /usr/lib/libssl.a

lrwxrwxrwx 1 root root     15  2. Okt 2006  /usr/lib/libssl.so -> libssl.so.0.9.8

-r-xr-xr-x 1 root root 200152  2. Okt 2006  /usr/lib/libssl.so.0.9.7

-r-xr-xr-x 1 root root 250272  2. Okt 2006  /usr/lib/libssl.so.0.9.8
```

Hmm, der Symlink stimmt doch. Lasse mal eben ein revdep-rebuild durchlaufen.

[...]

Ok, ist durch:

```
emerge --oneshot  =app-crypt/gnupg-1.9.21 =dev-java/blackdown-jre-1.4.2.03-r13 =net-im/centericq-4.21.0-r2
```

Also hat sich da in zwei Jahren nicht allzu viel angesammelt. gnupg nutze ich auf dem Server nicht, Blackdown nur noch testweise und centericq ist masked und wird gerade gelöscht  :Wink: 

Sicherlich trotzdem mal sinnvoll sowas zwischendurch mal auszuführen...

MfG

Keep

----------

## Carlo

 *netbui wrote:*   

> Ich bin etwas erstaunt, dass  ohne --deep Sicherheitslücken entstehen können. Ich war davon ausgegangen, dass sicherheitsrelevante Updates durch ein einfaches emerge -u eingespielt werden, da ja auch ein neues Päckchen existiert.

 

Nein. Portage hat keine Ahnung von GLSAs. Updates ohne --deep werden fällig, wenn irgendein Paket eine höhere Version benötigt oder wenn alle älteren Ebuilds entfernt wurden (sowohl im Gentoo Respository als auch in etwaigen Overlays).

 *netbui wrote:*   

> Die libssl ist also im Januar bei einem Update ohne --deep installiert worden. Oder ist die Version etwa kritisch?

 

Nein. Siehe auch meine Erläuterung weiter unten.

 *amne wrote:*   

> Ich mache so gut wie nie -D und hatte das Problem in meiner gesamten Gentoozeit auf allen Rechnern maximal 3 mal. Insofern ist das also kein wirkliches Problem.

 

Ja nun, es kommt vor.

@Keepoer: Und wie viele Programme linken noch gegen libssl.so.0.9.7 bzw. libcrypto.so.0.9.7? Da es wohl wesentlich zeitintensiver ist, alle potentiell zutreffenden Sicherheitslücken der vergangen zwei Jahre manuell abzuarbeiten, kann ich nur empfehlen, das ganze System einmal neu zu bauen - und in Zukunft die Post-Install-Warnhinweise zu lesen; Das ist nicht optional.

O.k., ohne längere Erklärung geht's wohl nicht: Es gibt zwei kleine Funktionen namens preserve_old_lib() und preserve_old_lib_notify() (siehe eutils.eclass), die dazu dienen, bei inkompatiblen Updates das System lauffähig zu halten bis der Admin ein Zeitfenster findet, revdep-rebuild --library foo/bar-x.y anzustoßen und die alte Bibliothek danach manuell zu entfernen. Im Grunde ist das ein übler kleiner Hack und früher oder später wird es dafür einen Ersatz geben, der diese Problematik aufzeichnet und bei jedem emerge-Vorgang Warnhinweise auswirft, aber letztlich muß sich jeder an die eigene Nase fassen, der Warnhinweise nicht beachtet.

----------

## netbui

Hallo Carlo,

 erneut vielen Dank für die ausführliche Antwort. Sicher hast Du recht, dass man sich die Meldungen, die emerge ausgibt durchlesen muss. Aber gerade wenn viele Päckchen bearbeitet werden, ist es sehr unübersichtlich und meine xterm-history ist nicht lang genug, um alle Meldungen anzuzeigen. Gibt es einen Trick, sich nur die Meldungen der frisch emergten Päckchen anzuzeigen, also ohne die ganzen Compilermeldungen?

----------

## Carlo

 :Arrow:  /etc/make.conf.example

----------

## netbui

Cool,

 meinst Du:

PORTAGE_ELOG_CLASSES="info"

PORTAGE_ELOG_SYSTEM="save"

kannte ich noch nicht. 

Tja Gentoo erlernt man ja nicht an einem Tag  :Smile: 

-----------------------------------------------------------

Edit:

Es ist nicht "info" sondern log, wie ich gerade durch herumprobieren herausgefunden habe

PORTAGE_ELOG_CLASSES="log"

PORTAGE_ELOG_SYSTEM="save"

----------

## Carlo

Jein. Minimal solltest du PORTAGE_ELOG_CLASSES="warn error" setzen. log ist für weitere nützliche, aber unkritische Informationen und info eher für nebensächliche Sachen, die nicht geloggt werden sollten. Wobei die Konversion eher eine längerfristige Angelegenheit und in vielen Ebuilds statt elog noch einfo zu finden ist.

----------

## Keepoer

Hmmm,

ok. Also schließe ich daraus, dass ich besser nach jedem Update ein revdep-rebuild durchlaufen lasse und nächstes Wochenende mal das System neu bauen werde...

Danke für die Infos...

----------

## Carlo

 *Keepoer wrote:*   

> Also schließe ich daraus, dass ich besser nach jedem Update ein revdep-rebuild durchlaufen lasse

 

Das reicht eben nicht. revdep-rebuild ohne weitere Argumente sucht nur nach fehlenden Bibliotheken, nicht aber nach beibehaltenen. Daran, die Post-Install-Warnungen zu lesen, kommst du nicht vorbei.

----------

