# preserved-rebuild möchte immer wieder die emul libs emergen

## Erdie

Egal, wie oft ich es mache, preserved-rebuild liefert immer wieder:

```

ebuild   R    ] app-emulation/emul-linux-x86-opengl-20131008 

[ebuild   R    ] app-emulation/emul-linux-x86-qtlibs-20131008 

[ebuild   R    ] app-emulation/emul-linux-x86-gtklibs-20131008 

```

Was ja auch logisch ist, da sie  binär sind. Ich vermute, dass nvidia-drivers daran Schuld sind. Gibt es dafür eine Lösung?

Grüße

Erdie

----------

## Josef.95

Magst du die Ausgabe von emerge mal posten die dich drüber informiert das es preserved libs gibt? - darin sollte ja ersichtlich sein um welche libs es geht.

Dazu am besten auch noch die Info welche nvidia-drivers Version aktuell installiert ist (sofern denn installiert).

----------

## Fijoldar

Ich tippe auch auf den Nvidia Treiber. Denn das war bei mir die Tage auch der Fall. Grund ist, dass der neue Nvidia Treiber das "multilib" Useflag nicht mehr standardmäßig aktiviert und dadurch die 32 Bit Bibliotheken nicht in der aktuellen Version installiert werden. Die emul-linux* Pakete sind daher noch gegen die alten Bibliotheken gelinkt und daher die Meldung.

Lösungsvorschlag: "multilib" Useflag beim Nvidia Treiber aktivieren  :Smile: 

----------

## Josef.95

 *Fijoldar wrote:*   

> der neue Nvidia Treiber

  Welche Version ist damit gemeint?

 *Quote:*   

> Lösungsvorschlag: "multilib" Useflag beim Nvidia Treiber aktivieren 

  Hm, normal wird das multilib-Flag doch global mit gesetzt wenn man ein standard multilib Profil nutzt - sprich normal sollte man es nicht für einzelne Pakete aktivieren müssen, da es eh schon global vom Profil her mit gesetzt ist.

----------

## Erdie

Folgende Meldung weißt darauf hin:

```

!!! existing preserved libs:

>>> package: x11-drivers/nvidia-drivers-334.21

 *  - /usr/lib32/opengl/nvidia/lib/libGL.so.1

 *  - /usr/lib32/opengl/nvidia/lib/libGL.so.331.38

 *      used by /usr/lib32/libGLEW.so.1.9.0 (app-emulation/emul-linux-x86-opengl-20131008)

 *      used by /usr/lib32/libGLEWmx.so.1.9.0 (app-emulation/emul-linux-x86-opengl-20131008)

 *      used by /usr/lib32/libGLU.so.1.3.1 (app-emulation/emul-linux-x86-opengl-20131008)

 *      used by 5 other files

 *  - /usr/lib32/libnvidia-tls.so.331.38

 *  - /usr/lib32/libnvidia-glcore.so.331.38

Use emerge @preserved-rebuild to rebuild packages using these libraries

```

Mir ist nur nicht klar, wie man das auflösen kann ..

Grüße

Erdie

----------

## ChrisJumper

Hi Erdie,

ich habe das jetzt so verstanden das emerge dich lediglich immer wieder dazu auffordert. Nicht das es für dich ein problem ist das die Dateien da sind.

Versuch mal foglendes:

```
# emerge -C app-emulation/emul-linux-x86-opengl
```

Anschließend sollte es weg sein. Vielleicht kommst du so ja aus dieser preserved-Schleife raus. Anschließend kannst du es ja wieder installieren. Dann sollte eine solche seltsame Schleife weg sein.

Interessanterweise hab ich das verhalten nicht.

----------

## Josef.95

 *Josef.95 wrote:*   

>  *Fijoldar wrote:*   der neue Nvidia Treiber  Welche Version ist damit gemeint?
> 
>  *Quote:*   Lösungsvorschlag: "multilib" Useflag beim Nvidia Treiber aktivieren   Hm, normal wird das multilib-Flag doch global mit gesetzt wenn man ein standard multilib Profil nutzt - sprich normal sollte man es nicht für einzelne Pakete aktivieren müssen, da es eh schon global vom Profil her mit gesetzt ist.

 

@Fijoldar

Ahrg sorry, dort hat sich in den letzten Tagen scheinbar einiges geändert - siehe zb im https://bugs.gentoo.org/show_bug.cgi?id=485724#c4 (und im weiter verlinkten Report).

@Erdie

Ein weiterer Lösungsvorschlag: Entferne die zurückgebliebenen preserved-libs selbst.

Setze 

```
eselect opengl set xorg-x11
```

 entferne dann

/usr/lib32/opengl/nvidia/lib/libGL.so.1

/usr/lib32/opengl/nvidia/lib/libGL.so.331.38

/usr/lib32/libnvidia-tls.so.331.38

/usr/lib32/libnvidia-glcore.so.331.38

Und nimm dann, sofern noch installiert und benötigt ein rebuild des nvidia-drivers Pakets vor (die Antwort ob nvidia-drivers, und welche Version aktuell noch installiert sind hast du ja leider nicht mit gepostet)

Setze dann ggf eselect opengl wieder passend

Damit sollte das ganze dann wieder passen  :Smile: 

----------

## Fijoldar

@josef.95: Bei mir war es die Version 304.121. Ich habe es gemerkt, da in /usr/lib32/opengl/nivida/ die libs in der neueren Version gefehlt haben. Dadurch konnte ich 3D Anwendungen in Wine nicht mehr ausführen. Danke für den Link. Der bringt etwas Licht ins Dunkle.

----------

## Erdie

 *Josef.95 wrote:*   

> 
> 
> .. (die Antwort ob nvidia-drivers, und welche Version aktuell noch installiert sind hast du ja leider nicht mit gepostet)
> 
> Setze dann ggf eselect opengl wieder passend
> ...

 

stand das nicht in meinem Quote oben drin?   :Smile: 

```

>>> package: x11-drivers/nvidia-drivers-334.21 

```

----------

## Josef.95

@Erdie

Ja, steht in der preserved-libs Ausgabe mit drin - aber ich habs elegant übersehen - sorry  :Smile: 

Dennoch wäre die einfache Info aus 

```
emerge -pv nvidia-drivers
```

 übersichtlicher gewesen, dann wüsste man zudem auch mit welchen USE-Flags gebaut wurde.

Ich denke mit den beiden genannten Vorschlägen solltest du erst mal weiterkommen - entweder die preserved libs selbst entfernen,  (gleiches Thema gab es im Nachbarforum neulich auch schon mal).

Oder wenn du die 32 bit libs wirklich brauchst dann wie schon von Fijoldar vorgeschlagen nvidia-drivers mit USE=multilib bauen.

----------

## Erdie

Ich verwende einen opengl basierten RC Flugsimulator unter wine. Vermutlich werde ich die libs dann wohl brauchen. So ganz habe ich ehrlich gesagt nicht verstanden, warum ich jetzt die Meldung bekomme, und vorher nicht. preserved-rebuild prüft doch nicht direkt die binaries auf Verlinkung. Und die Libs funktionieren ja offensichtlich, da ich bis jetzt noch keinen Fehler gefunden habe. Mag mir das nicht jemand mal erklären, warum es nun genau zu diesem Fehler kommt? Ich hab´s einfach noch nicht verstanden   :Embarassed: 

EDIT: Ok, nvidia-drivers hatte vorher multilib und jetzt nicht mehr. Gut dann werde ich das mal setzen und schauen, was passiert ..

----------

## ChrisJumper

Wenn ich das jetzt richtig verstanden haben dann...

weil vor kurzem noch das multilib Useflag in deinem normalen Profil drin war (no-multilib ist ein gesondertes). Jetzt gibt es eine Interessentengruppe die Wine sowohl in 32 Bit als auch in 64 Bit haben möchte und fies auf die Nase gefallen sind mit der ABI Konfiguration (?). Die Entwickler machen sich wohl sorgen das gcc und die toolchain aus versehen ohne Multilib erstellt werden und das dann einige Systeme wohl nicht mehr funktionieren. Aus diesem Grund war Multilib immer noch der Standard.

Jetzt wurde aber genau dieses Verhalten verändert. gcc, toolchain und so weiter bekommen zwar multilib als Force gesetzt aber nur für wichtige Pakete damit das nicht mehr global bei allen gesetzt ist. Dann hat es deinen nvidia-Treiber erwischt.

Mich trifft der Bug nicht ich hab aus ich weiß gar nicht welchem Grund multilib in meinen Useflags bewusst gesetzt. Wahrscheinlich weil ich mal einen seltsamen Block hatte (?), keine Ahnung.

Jedenfalls hatte dein emul-linux-x86-opengl Bibliotheken Probleme, das sie sich nicht mehr gegen die nvidia-opengl Libs linken konnte da du diese mit dem update jetzt nicht mehr installiert hattest und mussten deswegen neu gebaut werden. Aber wenn du halt Wine mit 32-Bit Programmen nutzt, brauchst du diese Pakete.

Ich halte das auch für einen Bug, warum sollte man denn bitte die emul-Linux-32-Bit Pakete NICHT als ABI_x86="32"  installieren, das vererschließt sich mir ganz. Hier hätte eigentlich eine Abhängigkeit kommen müssen die bei nvidia das multilib von alleine nachfragt. Denn eigentlich sobald man den nvidia-treiber installiert hat und emul-linux-x86-opengl installieren möchte (oder hat) ist doch eigentlich klar das das Paket gebraucht wird. Edit: Ah ja das ist ein negatives Flag. Minus-32 weil es ja keinen Sinn macht dieses Paket auf einem 32-Bit System zu installieren.

Wahrscheinlich noch die normalen Bugs die auftauchen wenn solche Änderungen auftreten.

----------

## Erdie

Danke Chris (Falls das Dein Name ist),

jetzt habe ich es wohl zumindest grob verstanden. Was einzig noch offen bleibt, warum mein Aerofly Professional Deluxe Flugsimulator, der definitiv 32bit ist, trotzdem funktioniert hat bevor ich "multilib" auf "nvidia-drivers" losgelassen habe. Eigentlich hätten die libs benötigt und es zu einem Crash kommen müssen.

Grüße

Martin

----------

## Fijoldar

Einen Crash hätte es meiner Meinung nach nicht geben müssen. Bei mir war's ja der gleiche Fall und meine 32 Bit Spiele konnten auch gestartet werden. Allerdings hatten sie ziemlich viele Grafikfehler und waren damit unspielbar. Starten konnte man sie allerdings.

----------

## Christian99

fljoldar: doch das hätte nicht starten dürfen. wenn es mit libgl gelinkt ist und die lib ist nicht da gehts nun mal nicht.

Erdie: multilib war bisher eigentlich auch standardmäßig aktiviert und wurde jetzt seit kurzen nicht mehr standardmäßig aktiviert (wenn ich die bisherigen postings richtig verstanden habe) dadurch entstanden die probleme.

EDIT: da ich einen ein paar tage alten tree noch auf meinem laptop habe, hab ichs grad mal ausprobiert:

```
emerge nvidia-drivers -p

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

Calculating dependencies                ... done!               

[ebuild  N     ] sys-power/acpid-2.0.21  USE="(-selinux)" 150 kB

[ebuild  N     ] x11-drivers/nvidia-drivers-334.21-r1  USE="X acpi (multilib) tools -pax_kernel -uvm" 66,316 kB

Total: 2 packages (2 new), Size of downloads: 66,465 kB
```

danach gesynct und nochmal:

```
emerge nvidia-drivers -p

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

Calculating dependencies   ... done!                     

[ebuild  N     ] sys-power/acpid-2.0.22  USE="(-selinux)" 150 kB

[ebuild  N     ] x11-drivers/nvidia-drivers-334.21-r1  USE="X acpi tools -multilib -pax_kernel -uvm" 66,316 kB

Total: 2 packages (2 new), Size of downloads: 66,466 kB
```

einmal multilib standardmäßig aktiviert, wie ChrisJumper schon sagte, wurde kürzlich standardmäßig deaktiviert.

----------

## Fijoldar

@Christian99: Aber gerade weil die lib ja noch existiert und lediglich auf eine ältere Version zeigt, sollte es nicht zu einem Crash (beim Start) kommen. Bei mir haben haben die Programme wie gesagt zwar nicht mehr richtig funktioniert, gecrasht sind sie aber definitiv nicht. Sind sie bei Erdie ja auch nicht. Erst wenn die lib entfernt worden wäre, hätte es einen Crash geben müssen.

----------

## Christian99

achso, wenn man sich auf preserved libs bezieht ja. ich hatte bei nicht vorhandenen gemeint. egal

----------

## wuesti

 *ChrisJumper wrote:*   

> ... Versuch mal foglendes:
> 
> ```
> # emerge -C app-emulation/emul-linux-x86-opengl
> ```
> ...

 

Bei mir möchte acroread das 32-bit-opengl und ich hatte die gleichen Probleme. Der obige Tipp hat geholfen. Interessanterweise wird der nvidia-driver nun wieder automatisch mit multilib emerged.

----------

