# Umstellung auf "no-multilib"?

## 3PO

Hallo Zusammen,

Ich versuche gerade meine Systeme auf "no-multilib" umzustellen, was im Prinzip auch soweit geklappt hat.

Bei meinem kleinen Server wurden nach Umstellung des Profils auf no-multilib mit anschließendem world Update, die Verzeichnisse "/lib32" und "/usr/lib32" entfernt.

Bei meinem anderen PC, sind aber noch Reste vorhanden:

```
vdr01 ~ # ll /usr/lib32

total 31292

lrwxrwxrwx 1 root root       15 Mär 30 21:55 libICE.so.6 -> libICE.so.6.3.0

-rwxr-xr-x 1 root root   100728 Mär 30 21:55 libICE.so.6.3.0

lrwxrwxrwx 1 root root       14 Mär 30 22:26 libSM.so.6 -> libSM.so.6.0.1

-rwxr-xr-x 1 root root    29996 Mär 30 22:26 libSM.so.6.0.1

lrwxrwxrwx 1 root root       19 Mär 30 22:32 libX11-xcb.so.1 -> libX11-xcb.so.1.0.0

-rwxr-xr-x 1 root root     5228 Mär 30 22:32 libX11-xcb.so.1.0.0

lrwxrwxrwx 1 root root       15 Mär 30 22:32 libX11.so.6 -> libX11.so.6.3.0

-rwxr-xr-x 1 root root  1358684 Mär 30 22:32 libX11.so.6.3.0

lrwxrwxrwx 1 root root       15 Mär 30 21:55 libXau.so.6 -> libXau.so.6.0.0

-rwxr-xr-x 1 root root    13580 Mär 30 21:55 libXau.so.6.0.0

lrwxrwxrwx 1 root root       19 Mär 30 22:38 libXdamage.so.1 -> libXdamage.so.1.1.0

-rwxr-xr-x 1 root root     9420 Mär 30 22:38 libXdamage.so.1.1.0

lrwxrwxrwx 1 root root       17 Mär 30 21:55 libXdmcp.so.6 -> libXdmcp.so.6.0.0

-rwxr-xr-x 1 root root    25856 Mär 30 21:55 libXdmcp.so.6.0.0

lrwxrwxrwx 1 root root       16 Mär 30 22:33 libXext.so.6 -> libXext.so.6.4.0

-rwxr-xr-x 1 root root    84232 Mär 30 22:33 libXext.so.6.4.0

lrwxrwxrwx 1 root root       18 Mär 30 22:34 libXfixes.so.3 -> libXfixes.so.3.1.0

-rwxr-xr-x 1 root root    17608 Mär 30 22:34 libXfixes.so.3.1.0

lrwxrwxrwx 1 root root       16 Mär 30 22:39 libXtst.so.6 -> libXtst.so.6.1.0

-rwxr-xr-x 1 root root    26008 Mär 30 22:39 libXtst.so.6.1.0

lrwxrwxrwx 1 root root       19 Mär 30 22:36 libXxf86vm.so.1 -> libXxf86vm.so.1.0.0

-rwxr-xr-x 1 root root    21816 Mär 30 22:36 libXxf86vm.so.1.0.0

lrwxrwxrwx 1 root root       19 Mär 30 21:21 libasyncns.so.0 -> libasyncns.so.0.3.1

-rwxr-xr-x 1 root root    17692 Mär 30 21:21 libasyncns.so.0.3.1

lrwxrwxrwx 1 root root       15 Mär 30 21:57 libdrm.so.2 -> libdrm.so.2.4.0

-rwxr-xr-x 1 root root    54728 Mär 30 21:57 libdrm.so.2.4.0

lrwxrwxrwx 1 root root       17 Mär 30 21:20 libexpat.so.1 -> libexpat.so.1.6.0

-rwxr-xr-x 1 root root   189740 Mär 30 21:20 libexpat.so.1.6.0

lrwxrwxrwx 1 root root       18 Mär 30 21:40 libicudata.so.54 -> libicudata.so.54.1

-rwxr-xr-x 1 root root 25338984 Mär 30 21:40 libicudata.so.54.1

lrwxrwxrwx 1 root root       18 Mär 30 21:40 libicui18n.so.54 -> libicui18n.so.54.1

-rwxr-xr-x 1 root root  2518884 Mär 30 21:40 libicui18n.so.54.1

lrwxrwxrwx 1 root root       16 Mär 30 21:40 libicuuc.so.54 -> libicuuc.so.54.1

-rwxr-xr-x 1 root root  1676852 Mär 30 21:40 libicuuc.so.54.1

lrwxrwxrwx 1 root root       18 Mär 30 21:41 libjson-c.so.2 -> libjson-c.so.2.0.1

-rwxr-xr-x 1 root root    38516 Mär 30 21:41 libjson-c.so.2.0.1

lrwxrwxrwx 1 root root       20 Mär 30 22:29 libxcb-dri2.so.0 -> libxcb-dri2.so.0.0.0

-rwxr-xr-x 1 root root    17644 Mär 30 22:29 libxcb-dri2.so.0.0.0

lrwxrwxrwx 1 root root       20 Mär 30 22:29 libxcb-dri3.so.0 -> libxcb-dri3.so.0.0.0

-rwxr-xr-x 1 root root     9452 Mär 30 22:29 libxcb-dri3.so.0.0.0

lrwxrwxrwx 1 root root       19 Mär 30 22:29 libxcb-glx.so.0 -> libxcb-glx.so.0.0.0

-rwxr-xr-x 1 root root    99556 Mär 30 22:29 libxcb-glx.so.0.0.0

lrwxrwxrwx 1 root root       23 Mär 30 22:29 libxcb-present.so.0 -> libxcb-present.so.0.0.0

-rwxr-xr-x 1 root root     9448 Mär 30 22:29 libxcb-present.so.0.0.0

lrwxrwxrwx 1 root root       21 Mär 30 22:29 libxcb-randr.so.0 -> libxcb-randr.so.0.1.0

-rwxr-xr-x 1 root root    54596 Mär 30 22:29 libxcb-randr.so.0.1.0

lrwxrwxrwx 1 root root       22 Mär 30 22:29 libxcb-render.so.0 -> libxcb-render.so.0.0.0

-rwxr-xr-x 1 root root    38160 Mär 30 22:29 libxcb-render.so.0.0.0

lrwxrwxrwx 1 root root       21 Mär 30 22:29 libxcb-shape.so.0 -> libxcb-shape.so.0.0.0

-rwxr-xr-x 1 root root    13540 Mär 30 22:29 libxcb-shape.so.0.0.0

lrwxrwxrwx 1 root root       20 Mär 30 22:29 libxcb-sync.so.1 -> libxcb-sync.so.1.0.0

-rwxr-xr-x 1 root root    25872 Mär 30 22:29 libxcb-sync.so.1.0.0

lrwxrwxrwx 1 root root       22 Mär 30 22:29 libxcb-xfixes.so.0 -> libxcb-xfixes.so.0.0.0

-rwxr-xr-x 1 root root    25832 Mär 30 22:29 libxcb-xfixes.so.0.0.0

lrwxrwxrwx 1 root root       15 Mär 30 22:29 libxcb.so.1 -> libxcb.so.1.1.0

-rwxr-xr-x 1 root root   140916 Mär 30 22:29 libxcb.so.1.1.0

lrwxrwxrwx 1 root root       21 Mär 30 21:56 libxshmfence.so.1 -> libxshmfence.so.1.0.0

-rwxr-xr-x 1 root root     5312 Mär 30 21:56 libxshmfence.so.1.0.0

vdr01 ~ #

```

Die Frage ist nun, wie werde ich die o.g. Verzeichnisse los. oder kann man die einfach manuell löschen?

----------

## Lixos

Hallo,

ich würde meinen, dass du die Verzeichnisse manuell löschen kannst.

Begründung: Du hast damals bei der Installation bestimmt ein normales Stage3 Paket gewählt.

( und nicht das Stage3-no multilib) deshalb sind die Verzeichnisse sicherlich standardmäßig dabei.

Du könntest es prüfen, indem du mal ein Stage3-no-multilib in einen test-Ordner entpackst und nachschaust ob die beiden Verzeichnisse hier enthalten sind.

Des Weiteren kannst du dann sicherlich auch die Emulation für 32bit aus dem Kernel entfernen, falls ich mich da richtig erinnere und es noch nicht geschehen ist.

Gruß Lixos

P.S.: vor dem Löschen Backup nicht vergessen!

----------

## franzf

Nix löschen!

1) Kann sein dass du doch noch ein emul-linux-x86-Paket installiert hast (xlibs?)

2) Evtl. braucht die noch ein anderes Paket. Portage behält noch benötigte libs auf der Platte bis das "Problem" gelöst ist. Du kannst das sicher von poppler-updates, da gibt es immer einen Hinweis von wegen emerge @perserved-libs. Damit durch das Poppler-update nichts kaputt geht (evince, libreoffice, inkscpae, ...) werden die alten libs noch nicht gelöscht. Erst der rebuild von ALLEN Paketen, die die alte poppler-lib brauchten, führt dazu dass die alten libs gelöscht werden.

Ich nehme an bei dir trifft 2) zu. Evtl. kommt das irgendwas aus nem Overlay? Du kannst ja mal testweise revdep-rebuild laufen lassen, dann eine lib verschieben, dann nochmal revdep-rebuild. Evtl. siehst du dann gleich den schuldigen.

Und qfile /usr/lib32/<ein_der_noch_vorhandenen_libs> könnte auch nicht schaden  :Wink: 

----------

## Josef.95

Frage portage :)

Ein 

```
emerge -pv --nodeps /usr/lib32
```

 listet auf welche Pakete dorthin installierten.

/edit

 *Lixos wrote:*   

> Des Weiteren kannst du dann sicherlich auch die Emulation für 32bit aus dem Kernel entfernen, falls ich mich da richtig erinnere und es noch nicht geschehen ist. 

 

Hm nee, CONFIG_IA32_EMULATION Support im Kernel würde ich eher beibehalten, denn es gibt einige wenige Pakete die diesen benötigen könnten, wie zb

sys-boot/grub-static

----------

## Lixos

 *Josef.95 wrote:*   

> Frage portage 
> 
> Ein 
> 
> ```
> ...

 

schon blöd, dass man nicht komplett auf 64 bit umstellen kann. zumindest bei solchen standard-programmen wie grub sollte es funktionieren. da fragt man sich, wozu es ein profil no-multilib gibt, wenn man letztlich 32 & 64 bit mischen muss?

----------

## ulenrich

listet die Pakete, die diese files installiert haben:

```
for i in $(ls --color=no -q -1 /usr/lib32/lib* ) ; do [ -f $i ] && equery b $i; done
```

----------

## Josef.95

 *Lixos wrote:*   

>  *Josef.95 wrote:*   Frage portage :)
> 
> Ein 
> 
> ```
> ...

 

Naja, kann man schon.

grub legacy war nun mal nicht als reines 64 bit Programm verfügbar - daher hat man seinerzeit grub-static angeboten, um überhaupt grub auf einem no-multilib System verwenden zu können.

Mittlerweile gibt es auch grub:2 der auch rein in 64 bit daherkommt :)

----------

## 3PO

 *Josef.95 wrote:*   

> Frage portage 
> 
> Ein 
> 
> ```
> ...

 

Das sieht dann so aus:

```
server01 ~ # emerge -pv --nodeps /usr/lib32

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

[ebuild   R    ] sys-libs/libstdc++-v3-3.3.6-r1:5  USE="(multilib) nls" 0 KiB

[ebuild   R    ] sys-apps/sandbox-2.6-r1  USE="(multilib)" 0 KiB

[ebuild   R    ] sys-libs/glibc-2.20-r2:2.2  USE="gd (multilib) -debug (-hardened) -nscd -profile (-selinux) -suid -systemtap -vanilla" 0 KiB

Total: 3 packages (3 reinstalls), Size of downloads: 0 KiB

 * IMPORTANT: 8 news items need reading for repository 'gentoo'.

 * Use eselect news to read news items.

server01 ~ #

server01 ~ # emerge -pv --nodeps /lib32

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

[ebuild   R    ] sys-libs/glibc-2.20-r2:2.2  USE="gd (multilib) -debug (-hardened) -nscd -profile (-selinux) -suid -systemtap -vanilla" 0 KiB

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

 * IMPORTANT: 8 news items need reading for repository 'gentoo'.

 * Use eselect news to read news items.

server01 ~ #

```

----------

## Josef.95

Hm, das schaut aus als wäre nicht wirklich ein no-multilib Profil gesetzt, denn die Pakete würden ja noch mit USE=multilib gebaut werden.

Überprüfe bitte nochmal das gesetzte Profil.

----------

## 3PO

Ohhh Mann,

was für eine Sch...e! Ich habe das Profil nochmal geprüft und festgestellt, dass kein(!) Profil ausgewählt war.

Ich hätte Haus und Hof darauf verwettet, dass ich "default/linux/amd64/13.0/no-multilib" ausgewählt hatte.

Nun ja, wie auch immer, nach auswählen von "no-multilib" und einem weiteren world-Update, wurden dann die beiden o.g. Verzeichnissen nun auch automatisch entfernt.  :Smile: 

Danke an die Helfer!   :Wink: 

----------

## Josef.95

 *Quote:*   

> Ich habe das Profil nochmal geprüft und festgestellt, dass kein(!) Profil ausgewählt war.

 

Sorry, den kaufe ich dir nicht ab (ohne gesetztes Profil geht nahezu nichts mehr).

Nungut, prima das es nun wie gewünscht funktioniert :)

----------

## 3PO

Wie gesagt, es war ein Profil gesetzt.

Vermutlich ist beim setzen von "no-multilib" etwas schief gegangen?

----------

## tazinblack

Hallo zusammen,

ich glaube da kann ich etwas Licht ins Dunkel bringen.

Habe gerade den portagetree auf einer Kiste aktualisiert und da dachte ich an diesen Thread.

Da ich noch eine andere Kiste hab, auf der ich nicht gesynct habe kann ich zeigen wie es vorher aussah:

also vorher so:

```
eselect profile list

Available profile symlink targets:

  [1]   default/linux/amd64/13.0

  [2]   default/linux/amd64/13.0/selinux

  [3]   default/linux/amd64/13.0/desktop

  [4]   default/linux/amd64/13.0/desktop/gnome

  [5]   default/linux/amd64/13.0/desktop/gnome/systemd

  [6]   default/linux/amd64/13.0/desktop/kde *

  [7]   default/linux/amd64/13.0/desktop/kde/systemd

  [8]   default/linux/amd64/13.0/developer

  [9]   default/linux/amd64/13.0/no-emul-linux-x86

  [10]  default/linux/amd64/13.0/no-emul-linux-x86/desktop

  [11]  default/linux/amd64/13.0/no-emul-linux-x86/desktop/gnome

  [12]  default/linux/amd64/13.0/no-emul-linux-x86/desktop/gnome/systemd

  [13]  default/linux/amd64/13.0/no-emul-linux-x86/desktop/kde

  [14]  default/linux/amd64/13.0/no-emul-linux-x86/desktop/kde/systemd

  [15]  default/linux/amd64/13.0/no-emul-linux-x86/developer

  [16]  default/linux/amd64/13.0/no-emul-linux-x86/selinux

  [17]  default/linux/amd64/13.0/no-multilib

  [18]  default/linux/amd64/13.0/x32

  [19]  hardened/linux/amd64

  [20]  hardened/linux/amd64/no-emul-linux-x86

  [21]  hardened/linux/amd64/selinux

  [22]  hardened/linux/amd64/no-multilib

  [23]  hardened/linux/amd64/no-multilib/selinux

  [24]  hardened/linux/amd64/x32

  [25]  hardened/linux/musl/amd64

  [26]  default/linux/uclibc/amd64

  [27]  hardened/linux/uclibc/amd64

```

und hinterher:

```
eselect profile list

Available profile symlink targets:

  [1]   default/linux/amd64/13.0

  [2]   default/linux/amd64/13.0/selinux

  [3]   default/linux/amd64/13.0/desktop

  [4]   default/linux/amd64/13.0/desktop/gnome

  [5]   default/linux/amd64/13.0/desktop/gnome/systemd

  [6]   default/linux/amd64/13.0/desktop/kde *

  [7]   default/linux/amd64/13.0/desktop/kde/systemd

  [8]   default/linux/amd64/13.0/developer

  [9]   default/linux/amd64/13.0/no-multilib

  [10]  default/linux/amd64/13.0/x32

  [11]  hardened/linux/amd64

  [12]  hardened/linux/amd64/selinux

  [13]  hardened/linux/amd64/no-multilib

  [14]  hardened/linux/amd64/no-multilib/selinux

  [15]  hardened/linux/amd64/x32

  [16]  hardened/linux/musl/amd64

  [17]  default/linux/uclibc/amd64

  [18]  hardened/linux/uclibc/amd64

```

So würde ich hier folgern, dass falls man vorher ein no-emul-linux-x86 Profile gesetzt hatte gibts das jetzt nicht mehr.

Also sieht das dann so aus, als sei kein Profile gesetzt.

Die Frage ist aber, was setze ich jetzt für ein Profile, wenn ich genau das hier "default/linux/amd64/13.0/no-emul-linux-x86/desktop/kde" gerne hätte?

Ach und ja, ich habe die brandheißen News gelesen und finde es auch toll endlich dieses emul-Zeugs loszuwerden. Aber wieso es so schöne "no-emul-linux-x86" Profile gab und jetzt nicht mehr hab ich noch nicht ganz durchschaut.  :Sad: 

----------

