# ABI_x86_32 - ABI_x86_64 - ???

## ManfredB

Hallo zusammen,

wie ich hier schon mehrmals geschrieben habe, arbeite ich seit längerer Zeit mit binpkgs.

Dabei ist mir jetzt etwas aufgefallen, was ich nicht ganz verstehe:

```

!!! The following binary packages have been ignored due to non matching USE:

    =x11-libs/libX11-1.6.9 -abi_x86_32

    =x11-libs/libXext-1.3.4 -abi_x86_32

    =dev-lang/python-3.6.10 sqlite

    =sys-libs/zlib-1.2.11-r2 -abi_x86_32

    =dev-lang/python-2.7.17-r1 sqlite

    =sys-apps/dbus-1.12.16 user-session

```

Ich hab folgendes durchgeführt:

emerge --sync --quiet

eix-update

emerge -avuDN -k world

Und dabei ist - bevor die zu installierenden Pakete angezeigt wurden,

diese Meldung aufgetaucht.

Nun frage ich mich, was dieses abi_x86_32 in einer Installation amd64 verloren hat.

Klar: in solchen Fragen bin ich kein Fachmann, sondern eher ein "Lehrling", der etwas dazulernen will.

Kann es sein, daß bei der Kernel-Konfiguration in dem System, wo ich buildpkg in der make.conf eingetragen habe,

ich etwas übersehen habe, was binpkgs angeht.

Offensichtlich werden diese abi_x86_32 als USE-Flag nicht akzeptiert - oder verstehe ich da etwas falsch?

Bisher habe ich diese Meldungen einfach übersehen.

Kann mir das jemand einmal auf die Sprünge helfen?

Darüber wäre ich sehr dankbar.

Gruß

Manfed

----------

## ManfredB

Ich habe gerade wieder etwas gesehen, was ich bisher nie genau beachtet habe.

emerge -avuDN world

[code]

Checking that IA32 emulation is enabled in the running kernel ...                                                                                                 [ ok ]

 * Checking gcc for __thread support ...                                                                                                                             [ ok ]

 * Checking running kernel version (5.5.4-gentoo-x86_64 >= 3.2.0) ...                                                                                                [ ok ]

 * Checking linux-headers version (5.5.0 >= 3.2.0) ...

{/code]

Ich habe einmal in der kernel-config nachgeschaut.

Da ist folgendes unter "binary emulations" zu sehen:

[code]

CONFIG_IA32_EMULATION=y

CONFIG_X86_X32=y

CONFIG_COMPAT=y

CONFIG_COMPAT_FOR_U64_ALIGNMENT=y

CONFIG_SYSVIPC_COMPAT=y

[/code]

Frage: hängt das mit meiner Ausgangsfrage irgendwie zusammen?

Oder ist das etwa vollkommen anderes ?

Danke für jede Reaktion...

Gruß

Manfred

----------

## mike155

Hallo Manfred,

welches Profil hast Du denn gewählt? 

```
eselect profile list
```

Ist es ein multilib oder ein no-multilib Profil?

Falls Du ein Multilib-Profil gewählt hast, wird von manchen Paketen (speziell: Libraries) eine 64 Bit und eine 32 Bit Version parallel installiert. Dann kannst Du auch 32 Bit Programme ausführen. Wenn Du keine 32 Bit Unterstützung benötigst, kannst Du ein no-multilib Profil wählen und dann werden die 32 Bit Versionen nicht mehr installiert. Ich habe das beispielsweise so konfiguriert. Aber Achtung: es ist sehr schwierig (manche sagen: unmöglich, bzw. nur im Rahmen einer Neu-Installation möglich) von no-multilib wieder auf multilib zu wechseln.

Wenn man 32 Bit Programme ausführen will, muss man zusätzlich noch CONFIG_IA32_EMULATION=y im Kernel wählen. Das hat aber keine Auswirkungen auf das Verhalten von Portage. CONFIG_X86_X32=y ist auch interessant, aber etwas völlig anderes.

Mike

----------

## Josef.95

```

!!! The following binary packages have been ignored due to non matching USE:

    =x11-libs/libX11-1.6.9 -abi_x86_32

    =x11-libs/libXext-1.3.4 -abi_x86_32

    =dev-lang/python-3.6.10 sqlite

    =sys-libs/zlib-1.2.11-r2 -abi_x86_32

    =dev-lang/python-2.7.17-r1 sqlite

    =sys-apps/dbus-1.12.16 user-session
```

Manfred,

das sind einfach nur nicht passende Useflags - daher können die  binary packages nicht verwendet werden.

Beispiel: Auf dem System mit dem du die binary packages gebaut hast, wurde =sys-apps/dbus-1.12.16 mit USE=-user-session gebaut,

dein System auf dem du die binary packages nutzen möchtest braucht aber =sys-apps/dbus-1.12.16 mit USE=user-session

sprich, das binary package erfüllt nicht die geforderten deps, und kann daher nicht verwendet werden.

Vorschlag:Baue auf dem System auf dem du die binary packages baust mit den passenden Useflags, so das die binary packages auch auf dem Zielsystem passen, und verwendet werden können.

btw, noch kurz zu dem no-multilib Profil

Vorsicht, es gibt keine no-multilib desktop und desktop Subprofile (die jede menge passende Useflags setzen). Überlege dir bitte genau ob du das willst.

Klar, man kann auch ein Desktop System mit blankem  no-multilib Profil bauen und nutzen -- erfordert aber deutlich mehr Hintergrundwissen über Useflags, und Handarbeit beim setzen passend benötigter Useflags.

----------

## ManfredB

Zuerst einmal euch beiden vielen herzlichen Dank für die ausführliche Aufklärung meiner Fragen.

1. no-multilib habe ich vor längerer Zeit einmal ausprobieren wollen, musste es aber aufgeben,

weil vieles, was ich nutzen wollte, nicht funktioniert hat, also bin ich bei multilib geblieben.

2. Josef.95: etwas verstehe ich an dem user-session nicht ganz:

Wenn es in der buildpkg-Version so konfiguriert wird, dann sollte es  - wenn ich es richtig verstehe -

in der binpkg-Nutzung so nicht aussehen, also ohne user-session.

Du hast aber für beide dasselbe beschrieben.

3. Ist meine Einschätzung richtig, daß ich in der buildpkg-Version keinen User einrichten soll,

sondern nur in der Nutzung von binpkgs Version?

Oder ist genau das Gegenteil richtig: in beiden Installationen denselben User?

4. Beispiel: wenn ich 

emerge --ask kde-plasma/meta angebe,

werde ich zuerst aufgefordert, etc-update durchzuführen,

da werden die EInträge in die entsprechenden Daten vorgenommen,

in denen die USE-Flags gespeichert sind.

Habe ich da Einfluß drauf oder nicht?

Denn ich gebe immer die 1 ein, sodaß das gesehene so gespeichert wird.

Gebe ich die 2 ein, wird es nicht gespeichert, aber auch nicht installiert.

Viele Unsicherheiten noch, aber der Weg ist angefangen.

Gruß

Manfred

----------

## Josef.95

Manfred,

poste mal bitte die Ausgabe von 

```
emerge --pretend --verbose dbus plasma-meta
```

 von beiden Systemen,

ich denke da sollten die unterschiedlich gesetzten USE-Flags dann deutlicher sichtbar werden.

----------

## ManfredB

Danke für diesen Tipp,

leider kann ich es im Moment noch nicht, weil ein langes Update läuft.

Aber sobald ich da raus bin, werde ich das testen.

Gruß

Manfred

----------

## ManfredB

Hier nun die Antwort:

1. buildpkg-Version

```

Calculating dependencies... done!

[ebuild   R    ] sys-apps/dbus-1.12.16::gentoo  USE="X -debug -doc -elogind (-selinux) -static-libs -systemd -test -user-session" ABI_X86="(64) -32 (-x32)" 0 KiB

[ebuild   R    ] kde-plasma/plasma-meta-5.18.0:5::gentoo  USE="bluetooth browser-integration consolekit crypt desktop-portal display-manager gtk handbook legacy-systray pam pm-utils sddm wallpapers -discover -elogind -grub -networkmanager -plymouth -pulseaudio -qrcode -sdk -systemd -thunderbolt" 0 KiB

```

2. binpkg-Version

```

Calculating dependencies... done!

[ebuild   R    ] sys-apps/dbus-1.12.16::gentoo  USE="X -debug -doc -elogind (-selinux) -static-libs -systemd -test -user-session" ABI_X86="(64) -32 (-x32)" 0 KiB

[ebuild   R    ] kde-plasma/plasma-meta-5.18.0:5::gentoo  USE="bluetooth browser-integration consolekit crypt desktop-portal display-manager gtk handbook legacy-systray pam pm-utils sddm wallpapers -discover -elogind -grub -networkmanager -plymouth -pulseaudio -qrcode -sdk -systemd -thunderbolt" 0 KiB

```

Weil es im Moment schnell gehen musste, habe ich selbst noch nicht genau hingeschaut.

Daher nur schnell

Gruß

Manfred

----------

