dpkg
führt eine Liste mit allen Architekturen, für die es Pakete
installiert bzw. installieren darf. Diese Liste befindet sich in der
Datei /var/lib/dpkg/arch
und existiert allerdings nur, sofern Sie
zuvor auch Fremdarchitekturen ergänzt haben. Das nachfolgende Beispiel
stammt von einem System mit amd64
als Basisarchitektur und i386
als
Fremdarchitektur.
Inhalt der Liste der Architekturen.
$ cat /var/lib/dpkg/arch amd64 i386 $
Die erste Architektur in dieser Datei ist die Basisarchitektur. Diese
geben Sie mit der dpkg
-Option --print-architecture
aus. Früher bzw.
bei älteren dpkg
-Versionen heißt die Option
--print-installation-architecture
. Die Fremdarchitekturen zeigen Sie
mit dpkg --print-foreign-architectures
an.
Über die beiden dpkg
-Optionen --add-architecture
und
--remove-architecture
erweitern bzw. reduzieren Sie die Liste
entsprechend. Beim Aufruf geben Sie dazu jeweils noch die gewünschte
Architektur als Parameter an, bspw. dpkg --add-architecture i386
,
wenn Sie zusätzlich die Architektur für 32-Bit-PCs nutzen wollen, weil
es die von Ihnen gewünschte Software nur für 32-Bit-Systeme gibt.
Während des Vorgangs schreibt dpkg
diese Änderung zuerst in eine
temporäre Datei namens /var/lib/dpkg/arch-new
. Wurden alle anderen
Änderungen erfolgreich vorgenommen, benennt dpkg
diese Datei in
/var/lib/dpkg/arch
um.
Bitte berücksichtigen Sie bei Ihrer Softwareplanung, dass nicht jedes Paket für alle Plattformen verfügbar ist. Wenn es verfügbar ist und Sie es erfolgreich auf Ihrem System installieren konnten, heißt das nicht automatisch, dass es auch auf Ihrer Architektur funktioniert, sondern nur, dass die Paketverwaltung alle benannten Paketabhängigkeiten erfüllen konnte.
Das Entfernen einer Fremdarchitektur gelingt Ihnen nur dann, wenn keine Pakete (mehr) für diese Architektur auf Ihrem System installiert sind. Wie Sie Pakete architekturbezogen deinstallieren, lesen Sie in Abschnitt 8.43, „Pakete deinstallieren“ nach.
Ein vollständiges Beispiel für den Einsatz von multiarch ist die
Nutzung des Forth-Interpreters pforth
auf einem 64-bittigen Debian
(Architektur amd64). pforth
ist über das gleichnamige Paket bislang
nur nativ für 32-Bit-Betriebssysteme verfügbar. Gleiches betrifft das
recht weit verbreitete, aber nicht-quelloffene Kommunikationsprogramm
Skype [Skype]. Eine passende Schritt-für-Schritt-Anleitung finden Sie
im Debian Wiki [Debian-Wiki-Skype].
Im Folgenden zeigen wir Ihnen anhand des vorgenannten Pakets pforth
,
wie eine solche Installation abläuft und insbesondere, welche
Einzelschritte wir dabei für beachtenswert halten. Zunächst überprüfen
Sie mittels dpkg
und dessen Option --print-architecture
die derzeit
benutzte Architektur Ihres Systems – im hier betrachteten Fall ist es
amd64. Danach ergänzen Sie die Liste der Architekturen via dpkg
--add-architecture i386
um i386 als weitere Plattform, für die Ihr
System Pakete akzeptiert. Ob der Vorgang erfolgreich war, zeigt Ihnen
der Parameter --print-foreign-architectures
von dpkg
an. Damit
erhalten Sie eine Übersicht zu allen „Fremdarchitekturen“, die ihr
Debiansystem derzeit akzeptiert.
Hinzufügen einer weiteren genutzten Paketarchitektur mittels dpkg
.
# dpkg --print-architecture amd64 # dpkg --add-architecture i386 # dpkg --print-foreign-architectures i386 #
Nun aktualisieren Sie die lokale Liste der verfügbaren Pakete
mittels apt-get update
, wobei APT nun auch die Informationen
zu den Paketen der neu hinzugefügten Architektur herunterlädt.
Aktualisieren der Paketlisten.
# apt-get update Ign http://ftp.ch.debian.org jessie InRelease Hit http://ftp.ch.debian.org jessie Release.gpg Hit http://ftp.ch.debian.org jessie Release Hit http://ftp.ch.debian.org jessie/main amd64 Packages Get:1 http://ftp.ch.debian.org jessie/main i386 Packages [6769 kB] Hit http://ftp.ch.debian.org jessie/main Translation-en Fetched 6769 kB in 6s (1005 kB/s) Reading package lists... Done
Als nächsten Schritt prüfen Sie mit dem Aufruf apt-cache policy
, für
welche akzeptierte Architektur das von Ihnen gewünschte Paket
bereitsteht. Die Details zum Aufruf von apt-cache
finden Sie unter
„Aus welchem Repo kommen die Pakete“ in
Abschnitt 8.14, „Aus welchem Repo kommen die Pakete“.
Prüfung auf Verfügbarkeit für eine Architektur mittels apt-cache
.
# apt-cache policy pforth pforth:i386: Installed: (none) Candidate: 21-12 Version table: 21-12 0 990 http://ftp.ch.debian.org/debian/ jessie/main i386 Packages #
Sie ersehen aus der obigen Ausgabe, dass das Paket bislang noch nicht auf Ihrem System installiert ist. Es steht für die Architektur i386 und die Veröffentlichung Debian 8 Jessie bereit. Nun können Sie das Paket pforth installieren. Das zieht u.a. das essentielle Paket libc6 für die Architektur i386 nach sich, um die Abhängigkeiten zum Paket pforth zu erfüllen.
Installation des i386-Pakets pforth auf amd64-Debian.
# apt-get install pforth Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: gcc-4.9-base:i386 libc6:i386 libgcc1:i386 Suggested packages: glibc-doc:i386 Recommended packages: libc6-i686:i386 The following NEW packages will be installed: gcc-4.9-base:i386 libc6:i386 libgcc1:i386 pforth:i386 0 upgraded, 4 newly installed, 0 to remove and 27 not upgraded. Need to get 4,252 kB of archives. After this operation, 9,727 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://ftp.ch.debian.org/debian/ jessie/main gcc-4.9-base i386 4.9.1-15 [158 kB] Get:2 http://ftp.ch.debian.org/debian/ jessie/main libc6 i386 2.19-11 [3,977 kB] Get:3 http://ftp.ch.debian.org/debian/ jessie/main libgcc1 i386 1:4.9.1-15 [48.2 kB] Get:4 http://ftp.ch.debian.org/debian/ jessie/main pforth i386 21-12 [69.1 kB] Fetched 4,252 kB in 0s (20.5 MB/s) Preconfiguring packages ... Selecting previously unselected package gcc-4.9-base:i386. (Reading database ... 474485 files and directories currently installed.) Preparing to unpack .../gcc-4.9-base_4.9.1-15_i386.deb ... Unpacking gcc-4.9-base:i386 (4.9.1-15) ... Selecting previously unselected package libc6:i386. Preparing to unpack .../libc6_2.19-11_i386.deb ... Unpacking libc6:i386 (2.19-11) ... Replacing files in old package libc6-i386 (2.19-11) ... Selecting previously unselected package libgcc1:i386. Preparing to unpack .../libgcc1_1%3a4.9.1-15_i386.deb ... Unpacking libgcc1:i386 (1:4.9.1-15) ... Selecting previously unselected package pforth. Preparing to unpack .../archives/pforth_21-12_i386.deb ... Unpacking pforth (21-12) ... Processing triggers for man-db (2.7.0-1) ... Setting up gcc-4.9-base:i386 (4.9.1-15) ... Setting up libc6:i386 (2.19-11) ... Setting up libgcc1:i386 (1:4.9.1-15) ... Setting up pforth (21-12) ... Processing triggers for libc-bin (2.19-11) ... #
In o.g. Fall wurde das Paket libc6
als Abhängigkeit auch für die
Architektur i386 installiert. Sie erkennen das daran, dass neben dem
Namen des Pakets auch die Architektur angegeben wird. Als Trennzeichen
in der Ausgabe fungiert hier ein Doppelpunkt.
Abschließend überprüfen Sie mittels dpkg
, für welche Architekturen
die Pakete pforth
und libc6
auf Ihrem System installiert sind.
Installationsstatus für das Paket libc6.
# dpkg -l pforth libc6 Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-==============-============-============-================================= ii libc6:amd64 2.19-11 amd64 GNU C Library: Shared libraries ii libc6:i386 2.19-11 i386 GNU C Library: Shared libraries ii pforth 21-12 i386 portable Forth interpreter #
Im letzten Schritt probieren Sie aus, ob das frisch installierte 32-Bit-Programm auch unter Ihrem 64-Bit-Betriebssystem funktioniert. Dazu rufen Sie das Programm auf.
Ausführung von pforth
.
$ pforth PForth V21 pForth loading dictionary from file /usr/lib/pforth/pforth.dic File format version is 8 Name space size = 120000 Code space size = 300000 Entry Point = 0 Little Endian Dictionary Begin AUTO.INIT ------ ... $