Gepinnter Backport als i386 installiert statt amd64

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Gepinnter Backport als i386 installiert statt amd64

Beitrag von nudgegoonies » 16.12.2022 16:19:15

Ich habe die Backports aktiviert, aber nur bestimmte Pakete gepinned:

Code: Alles auswählen

# Source packages vulkan-loader vkd3d
Package: libvulkan-dev libvulkan1 libvkd3d-dev libvkd3d-doc libvkd3d-headers libvkd3d-shader1 libvkd3d-utils1 libvkd3d1 vkd3d-compiler vkd3d-demos
Pin: release a=bullseye-backports
Pin-Priority: 501
Beim apt update/dist-upgrade will apt vom vkd3d-compiler, was kein library Paket ist sondern ein Programm Paket, die i386 Version installieren:

Code: Alles auswählen

Die folgenden NEUEN Pakete werden installiert:
  libvkd3d-shader1 libvkd3d-shader1:i386 vkd3d-compiler:i386
Die folgenden Pakete werden aktualisiert (Upgrade):
  libvkd3d1 libvkd3d1:i386 libvulkan1 libvulkan1:i386
4 aktualisiert, 3 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Bei library Paketen kann man ja dank multiarch das gleiche Paket in mehreren Architekturen installieren. Aber bei normalen Programmen kann man das nicht. Und ob ein amd64 oder i386 Programm den vkd3d-compiler aufruft ist egal. Aber auf einem amd64 System will man natürlich lieber die amd64 Version haben. Ich verstehe nicht, wieso hier die i386 Version bevorzugt ist :?:
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

Benutzeravatar
Blackbox
Beiträge: 4289
Registriert: 17.09.2008 17:01:20
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Gepinnter Backport als i386 installiert statt amd64

Beitrag von Blackbox » 17.12.2022 09:20:14

Hast du bereits versucht, die Architektur beispielsweise über die sources.list festzunageln?
Eigenbau PC: Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Desktop PC: Dell Inspiron 530 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Notebook: TUXEDO BU1406 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Alles Minimalinstallationen und ohne sudo/PA/PW.
Rootserver: Rocky Linux 9.3 - Kernel: 5.14

Freie Software unterstützen, Grundrechte stärken!

nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Re: Gepinnter Backport als i386 installiert statt amd64

Beitrag von nudgegoonies » 17.12.2022 17:29:29

Vielen Dank für die Antwort. Ich verstehe aber nicht ganz was Du meinst. In der sources.list habe ich gar nichts bezüglich Architektur eingetragen. Ich habe nur einmal multiarch via "dpkg --add-architecture i386" eingeschaltet wegen wine.

Allerdings hast Du mich auf eine Sache gebracht und ich habe im pinning meiner backports zusätzlich diese i386 multiarch libraries hinzugefügt:

Code: Alles auswählen

libvulkan-dev:i386 libvulkan1:i386 libvkd3d-dev:i386 libvkd3d-shader1:i386 libvkd3d-utils1:i386 libvkd3d1:i386
Obwohl ich hier vkd3d-compiler nicht aufgenommen habe, hat es nicht geholfen.

Letzten Endes habe ich jetzt einfach ein "apt install vkd3d-compiler" gemacht, was die i386 Version entfernt und die amd64 installiert hat.

Aber wieso 32 Bit, also die sekundäre Architektur, für ein Programm Paket favorisiert wird, ist mir weiter unklar. Ach ja, meine sources.list sieht noch aus wie am ersten Tag:

Code: Alles auswählen

deb http://deb.debian.org/debian/ bullseye main non-free contrib
deb-src http://deb.debian.org/debian/ bullseye main non-free contrib

deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free

deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye-updates main contrib non-free

deb http://deb.debian.org/debian/ bullseye-backports main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye-backports main contrib non-free
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Gepinnter Backport als i386 installiert statt amd64

Beitrag von JTH » 17.12.2022 17:49:34

Du könntest einfach mal explizit die amd64-Variante der gewünschten Pakete auf Prio 501 setzen. Die Manpage zu apt_preferences erwähnt Architektur zwar nur im Zusammenhang mit Source-Paketen, aber ich vermute mal, dass das mit Binärpaketen ganz normal auch funktioniert.

Also:

Code: Alles auswählen

Package: vkd3d-compiler:amd64      # etc.
Pin: release a=bullseye-backports
Pin-Priority: 501
oder kürzer, da du die dazugehörigen Source-Pakete in einem Kommentar stehen hattest:

Code: Alles auswählen

Package: src:vulkan-loader:amd64 src:vkd3d:amd64
Pin: release a=bullseye-backports
Pin-Priority: 501
Manchmal bekannt als Just (another) Terminal Hacker.

nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Re: Gepinnter Backport als i386 installiert statt amd64

Beitrag von nudgegoonies » 19.12.2022 20:20:49

Vielen herzlichen Dank für den Tipp mit den src: in den Package Präferenzen :!: Ich wusste gar nicht, dass das geht. Ich hatte die Binärpakete selbst eingetragen und die Quellpakete im Kommentar, damit ich schnell die Namen aller Binärpakete zum Quellpaket finde.

Ich habe jetzt gefahrlos im debian:bullseye Docker Container experimentiert. i386 aktiviert und amd64 und i386 Versionen von libvkd3d1 und libvulkan1 installiert.

Nachdem ich die zwei Quellpakete ohne jegliche Architektur auf die Backports gepinned habe, wurden die Pakete beim dist-upgrade zurückgehalten.

Auch wenn ich sie, wie in Deinem Beispiel, nur als amd64 gepinned habe, werden die Pakete beim dist-upgrade zurückgehalten.

Erst wenn ich beide Architekturen eintrage, klappt es überhaupt. Aber dann auch wieder mit der i386 Version vom vkd3d-compiler:

Code: Alles auswählen

Package: src:vulkan-loader:amd64 src:vkd3d:amd64 src:vulkan-loader:i386 src:vkd3d:i386                     
Die Reihenfolge der Architekturen in der Package Zeile ist auch irrelevant.

Dann habe ich Deinen Tip ausprobiert alle Bibliotheken auf amd64 UND i386 zu pinnen und beim vkd3d-compiler NUR die amd64 Version zu pinnen. Aber auch da will apt die i386 vom vkd3d-compiler installieren :roll:

Code: Alles auswählen

Package: libvkd3d1:amd64 libvkd3d1:i386 libvulkan1:amd64 libvulkan1:i386 libvkd3d-shader1:amd64 libvkd3d-shader1:i386 vkd3d-compiler:amd64
Mach ich noch irgendwas falsch oder bin ich an dem Punkt, wo ich einen Bug aufmachen sollte?
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

Antworten