Multiarch-Pakete

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Bosco
Beiträge: 5
Registriert: 09.06.2013 12:14:12

Multiarch-Pakete

Beitrag von Bosco » 09.06.2013 12:33:50

Hallo zusammen,

ich bin nun langjähriger Debian-(unstable-)Benutzer und eigentlich immer sehr gut mit dem System zurecht gekommen. Jetzt muss ich aber doch mal das Forum bemühen: Ich kompiliere schon seit längerem (z.B.) mein Wine selbst auf meinem 64-bit-System. Mit der Umstellung von ia32-libs auf multiarch hatte ich jedoch zunächst Probleme, da einige der i386-multiarch-Pakete sich aufgrund von Konflikten mit dem amd64-Paket nicht ohne weiteres installieren ließen.

Nach dem Release von Wheezy habe ich nun selbigen Versuch erneut unternommen und mich endgültig von ia32-libs getrennt. Bin jedoch erneut kläglich gescheitert. Beim ersten problematischen Paket handelt es sich um libfreetype6-dev. Hierzu habe ich auch einen Bugreport gefunden. Ich bin jedoch auch schon auf weitere zahlreiche Pakete gestoßen, die sich nicht installieren ließen. Auch auf ein nicht-dev-Paket kann ich bisher nicht installieren: libcurl3:i386

An hilfreichen Informationen kann ich hierzu kaum etwas finden. Extra eine 32-bit-chroot-Umgebung einrichten zu müssen erscheint mir nicht im Sinne des Erfinders. Der Sinn von multiarch soll es doch gerade sein, Pakete mehrerer Architekturen parallel installieren zu können, oder?

Da multiarch jetzt "stable" ist, habe ich die Vermutung, dass ich irgendetwas falsch mache und hoffe, dass man mir hier auf die Sprünge helfen kann.

Vielen Dank und Gruß!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Multiarch-Pakete

Beitrag von rendegast » 09.06.2013 15:12:09

Code: Alles auswählen

$ dpkg --help | grep arch
...
  --add-architecture <Arch>        <Arch> zur Liste der Architekturen
  --remove-architecture <Arch>     <Arch> aus der Liste der Architekturen
  --print-architecture             Architektur von dpkg ausgeben.
  --print-foreign-architectures    Erlaubte fremde Architekturen ausgeben.
  --assert-multi-arch.
Die "fremde" Architektur muß aktiviert werden

Code: Alles auswählen

dpkg --add-architecture i386

Bei einem default-artigen Eintrag einer Quelle in sources.list
deb url bla foo
würden dann bei einem 'apt-get update' Paketlisten alle aktivierten Architekturen (sofern auf der url verfügbar)
heruntergeladen.
Eine Einschränkung ist möglich per:
deb [arch=amd64,i386] url bla foo
deb [arch=amd64] url bla foo
('man sources.list')

Eine Installation dann zum Beispiel

Code: Alles auswählen

aptitude install libcurl3:i386



Vergleiche dann auch

Code: Alles auswählen

aptitude versions libcurl3

Code: Alles auswählen

apt-cache policy libcurl3
apt-cache policy libcurl3:amd64
apt-cache policy libcurl3:i386
Eine Übersicht

Code: Alles auswählen

apt-cache policy | grep -vi translat
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Bosco
Beiträge: 5
Registriert: 09.06.2013 12:14:12

Re: Multiarch-Pakete

Beitrag von Bosco » 09.06.2013 15:23:23

Hallo rendegast,
die Architektur habe ich natürlich als allererestes schon aktiviert gehabt und auch die Paketquellen neu geladen.
Mit einigen Paketen habe ich dennoch Abhängigkeitsprobleme:

Code: Alles auswählen

$ aptitude install libfreetype6-dev:i386
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  libc6-dev:i386{a} libfreetype6-dev:i386{b} linux-libc-dev:i386{a} zlib1g-dev:i386{a} 
Die folgenden Pakete werden EMPFOHLEN, aber NICHT installiert:
  bcc:i386 clang-3.2:i386 gcc:i386 gcc-4.4:i386 gcc-4.6:i386 gcc-4.7:i386 gcc-4.8:i386 tcc:i386 
0 Pakete aktualisiert, 4 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
7.399 kB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 27,5 MB zusätzlich belegt sein.
Die folgenden Pakete haben verletzte Abhängigkeiten:
 libfreetype6-dev : Kollidiert mit: libfreetype6-dev:i386 aber 2.4.9-1.1 soll installiert werden.
 libfreetype6-dev:i386 : Kollidiert mit: libfreetype6-dev aber 2.4.9-1.1 ist installiert.
Die folgenden Aktionen werden diese Abhängigkeiten auflösen:

     Beibehalten der folgenden Pakete in ihrer aktuellen Version:
1)     libfreetype6-dev:i386 [Nicht installiert]
Ähnliches mit libcurl3:

Code: Alles auswählen

$ aptitude install libcurl3:i386
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  libcomerr2:i386{a} libcurl3:i386 libdb5.1:i386{a} libgssapi-krb5-2:i386{ab} libidn11:i386{a} 
  libk5crypto3:i386{ab} libkeyutils1:i386{a} libkrb5-3:i386{ab} libkrb5support0:i386{ab} libldap-2.4-2:i386{a} 
  librtmp0:i386{a} libsasl2-2:i386{a} libssh2-1:i386{a} 
Die folgenden Pakete werden EMPFOHLEN, aber NICHT installiert:
  krb5-locales libsasl2-modules:i386 
0 Pakete aktualisiert, 13 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
2.080 kB/2.556 kB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 5.634 kB zusätzlich belegt sein.
Die folgenden Pakete haben verletzte Abhängigkeiten:
 libgssapi-krb5-2 : Beschädigt: libgssapi-krb5-2:i386 (!= 1.10.1+dfsg-6) aber 1.10.1+dfsg-5 soll installiert werden.
 libgssapi-krb5-2:i386 : Beschädigt: libgssapi-krb5-2 (!= 1.10.1+dfsg-5) aber 1.10.1+dfsg-6 ist installiert.
 libkrb5-3 : Beschädigt: libkrb5-3:i386 (!= 1.10.1+dfsg-6) aber 1.10.1+dfsg-5 soll installiert werden.
 libkrb5-3:i386 : Beschädigt: libkrb5-3 (!= 1.10.1+dfsg-5) aber 1.10.1+dfsg-6 ist installiert.
 libkrb5support0 : Beschädigt: libkrb5support0:i386 (!= 1.10.1+dfsg-6) aber 1.10.1+dfsg-5 soll installiert werden.
 libkrb5support0:i386 : Beschädigt: libkrb5support0 (!= 1.10.1+dfsg-5) aber 1.10.1+dfsg-6 ist installiert.
 libk5crypto3 : Beschädigt: libk5crypto3:i386 (!= 1.10.1+dfsg-6) aber 1.10.1+dfsg-5 soll installiert werden.
 libk5crypto3:i386 : Beschädigt: libk5crypto3 (!= 1.10.1+dfsg-5) aber 1.10.1+dfsg-6 ist installiert.
Die folgenden Aktionen werden diese Abhängigkeiten auflösen:

     Beibehalten der folgenden Pakete in ihrer aktuellen Version:
1)     libcurl3:i386 [Nicht installiert]                         
2)     libgssapi-krb5-2:i386 [Nicht installiert]                 
3)     libk5crypto3:i386 [Nicht installiert]                     
4)     libkrb5-3:i386 [Nicht installiert]                        
5)     libkrb5support0:i386 [Nicht installiert]
Wenn ich mir dann die vorgeschlagenen Möglichkeiten anschaue kann ich wählen zwischen dem Deinstallieren zahlreicher (und essenzieller) Pakete oder dem Nicht-installieren von dem jeweiligen i386-Paket.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Multiarch-Pakete

Beitrag von rendegast » 09.06.2013 15:57:50

...
libkrb5-3 : Beschädigt: libkrb5-3:i386 (!= 1.10.1+dfsg-6) aber 1.10.1+dfsg-5 soll installiert werden.
libkrb5-3:i386 : Beschädigt: libkrb5-3 (!= 1.10.1+dfsg-5) aber 1.10.1+dfsg-6 ist installiert.
...
Wenn ich mir jetzt
http://packages.debian.org/libkrb5-3
resp.

Code: Alles auswählen

$ aptitude versions libkrb5-3
Paket libkrb5-3:                            
p A 1.10.1+dfsg-5                                                                        stable,testing                                                   500 
i A 1.10.1+dfsg-5+deb7u1                                                                 stable                                                           500 
p A 1.10.1+dfsg-6                                                                        unstable                                                         100 
p A 1.11.3+dfsg-2                                                                        experimental                                                     1   

Paket libkrb5-3:i386:
p A 1.10.1+dfsg-5                                                                        stable,testing,unstable                                          500 
i A 1.10.1+dfsg-5+deb7u1                                                                 stable                                                           500 
p A 1.11.3+dfsg-2                                                                        experimental            
ansehe,
hast Du ein Problem mit den Versionen/Repos, insbesondere sid
libkrb5-3:amd64/sid ist installiert, es gibt aber kein libkrb5-3:i386/sid gleicher Version.

Ist halt so ein unstable-Ding, rudere zurück auf testing.




Wegen des libfreetype6-dev-Konflikts:
http://packages.debian.org/wheezy/amd64 ... v/filelist
http://packages.debian.org/wheezy/i386/ ... v/filelist
natürlich ein Datei-Konflikt.
Diese Header (Quelltext!) sind wohl ohnehin gleich, eine separate Architektur würde dann auch nicht benötigt.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Bosco
Beiträge: 5
Registriert: 09.06.2013 12:14:12

Re: Multiarch-Pakete

Beitrag von Bosco » 09.06.2013 16:39:47

[libkrb5-3]
Wenn das so ein "unstable-Ding" ist, das in absehbarer Zeit behoben wird kann ich damit vorerst leben.

[libfreetype6-dev]
Und was ist mit den Libraries, die in /usr/lib/x86_64-linux-gnu/ bzw. /usr/lib/i386-linux-gnu/ liegen? Ich weiss nicht genau was alles benötigt wird, aber das Kompilieren von Programmen schlägt jedenfalls fehl. Das amd64-dev-Paket libfreetyp ist ja installiert.

Code: Alles auswählen

Package: libfreetype6-dev
Status: install ok installed
[...]
Architecture: amd64
[...]
Version: 2.4.9-1.1
[...]

Code: Alles auswählen

checking for -lfreetype... not found
configure: error: FreeType 32-bit development files not found. Fonts will not be built.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Multiarch-Pakete

Beitrag von rendegast » 09.06.2013 18:52:51

Eventuell geht es doch um diese?
/usr/lib/i386-linux-gnu/libfreetype.a
/usr/lib/i386-linux-gnu/libfreetype.la
/usr/lib/i386-linux-gnu/libfreetype.so
/usr/lib/i386-linux-gnu/pkgconfig/freetype2.pc
<->
/usr/lib/x86_64-linux-gnu/libfreetype.a
/usr/lib/x86_64-linux-gnu/libfreetype.la
/usr/lib/x86_64-linux-gnu/libfreetype.so
/usr/lib/x86_64-linux-gnu/pkgconfig/freetype2.pc


Dann muß es wohl doch als i386 installiert werden,
eine reicht einfache Auflösung gelingt aber nur '--without-recommends'

Code: Alles auswählen

$ aptitude -s install libfreetype6-dev --without-recommends
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  libfreetype6-dev [2.4.9-1.1]  
0 Pakete aktualisiert, 1 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
805 kB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 3.439 kB zusätzlich belegt sein.


$ aptitude -s install libfreetype6-dev:i386 --without-recommends
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  libc6-dev:i386{a} [2.13-38]  libfreetype6-dev:i386 [2.4.9-1.1]  
  linux-libc-dev:i386{a} [3.2.41-2+deb7u2]  zlib1g-dev:i386{a} [1:1.2.7.dfsg-13]  
Die folgenden Pakete werden EMPFOHLEN, aber NICHT installiert:
  bcc:i386  clang-3.2:i386  clang-3.3:i386  gcc:i386  gcc-4.4:i386  gcc-4.6:i386  
  gcc-4.7:i386  gcc-4.8:i386  tcc:i386  
0 Pakete aktualisiert, 4 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
6.740 kB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 25,1 MB zusätzlich belegt sein.
ohne '--without-recommends' beißt sich das mit dem installierten gcc.

In Deinem Fall zuerst halt Deinstallieren des amd64-Paketes.
Die folgenden Aktionen werden diese Abhängigkeiten auflösen:

Beibehalten der folgenden Pakete in ihrer aktuellen Version:
1) libfreetype6-dev:i386 [Nicht installiert]
was wohl auch als eine weitere Alternative angeboten würde.
Bei mir ist bei installiertem amd64-dev dessen Entfernung gleich in der ersten Auswahl-Alternative.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Bosco
Beiträge: 5
Registriert: 09.06.2013 12:14:12

Re: Multiarch-Pakete

Beitrag von Bosco » 09.06.2013 19:22:10

Wenn ich versuche libfreetype6-dev (amd64) zu deinstallieren werden mir gleich weitere Pakete genannt, die aber von libfreetype6-dev abhängen:

Code: Alles auswählen

$ aptitude remove libfreetype6-dev
Die folgenden Pakete werden ENTFERNT:           
  libfreetype6-dev 
0 Pakete aktualisiert, 0 zusätzlich installiert, 1 werden entfernt und 0 nicht aktualisiert.
0 B an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 3.439 kB frei werden.
Die folgenden Pakete haben verletzte Abhängigkeiten:
 libpango1.0-dev : Hängt ab von: libfreetype6-dev aber es soll nicht installiert werden.
 libdirectfb-dev : Hängt ab von: libfreetype6-dev aber es soll nicht installiert werden.
 libcairo2-dev : Hängt ab von: libfreetype6-dev (>= 2.1.10) aber es soll nicht installiert werden.
 libxft-dev : Hängt ab von: libfreetype6-dev aber es soll nicht installiert werden.
 libfontconfig1-dev : Hängt ab von: libfreetype6-dev (>= 2.1.7) aber es soll nicht installiert werden.
Die folgenden Aktionen werden diese Abhängigkeiten auflösen:

     Beibehalten der folgenden Pakete in ihrer aktuellen Version:
1)     libfreetype6-dev [2.4.9-1.1 (now, unstable)]              



Diese Lösung akzeptieren? [Y/n/q/?] n

*** Keine weiteren Lösungen vorhanden ***
Ich habe gerade mal probeweise versucht die Pakete manuell zu deinstallieren was im einzelnen mehrfach weitere Abhängigkeiten nach sich gezogen hat. U.a. musste ich beispielsweise libgtk2.0-dev und libsdl2-dev komplett entfernen.
libfreetype6-dev konnte ich danach zwar in der 32-bit-Variante installieren, die anderen dev-Pakete benötige ich aber für andere Applikationen, die ich in 64bit kompilieren möchte.

Unter "multiarch" würde ich eigentlich etwas anderes verstehen.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Multiarch-Pakete

Beitrag von rendegast » 09.06.2013 21:09:30

Diese Konflikte sehe ich gerade bei einer ganzen Reihe dev-Pakete.
EDIT Eigentlich bei allen.

'multiarch' bezieht sich dann entweder nicht auf diese,
oder in der Beziehung doch noch kein "stable" wheezy.
http://wiki.debian.org/Multiarch
"The existing proposals allow for the co-installation of libraries and headers for different architectures, but not (yet) binaries. " bezieht sich da IMO auch auf dev-Pakete.
"Multiarch also simplifies cross-building, where foreign-architecture libraries and headers are needed on a system during building. " Naja.

Einfachster walkaround wird wohl eine 32bit-VM fürs Bauen sein.





Vielleicht sollte jede Architektur ihr eigenes root-Verzeichnis bekommen?
Zuletzt geändert von rendegast am 10.06.2013 07:21:43, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Bosco
Beiträge: 5
Registriert: 09.06.2013 12:14:12

Re: Multiarch-Pakete

Beitrag von Bosco » 09.06.2013 21:24:53

Ja, wie gesagt sind mir auch noch zahlreiche weitere solche Konflikte aufgefallen, habe mir dann aber die Pakete nicht im einzelnen gemerkt.

Wie das letztendlich gelöst wird ist mir eigentlich egal, solange es denn gelöst wird.

Dass Debian in diesem Zustand mit multiarch in stable übergegangen ist kann ich nicht verstehen. Vielleicht hätten wenigstens die alten ia32-libs*-Pakete noch als Alternative irgendwie beibehalten werden können. Momentan überlege ich ernsthaft, eine alternative Distribution auszuprobieren, denn so kann ich faktisch System nicht wie vorher weiterverwenden. Und zu viel rumbasteln möchte ich da auch nicht.

Danke jedenfalls trotzdem für die Unterstützung.

Quix0r
Beiträge: 23
Registriert: 05.04.2011 18:48:10
Wohnort: Krefeld, Germany
Kontaktdaten:

Re: Multiarch-Pakete

Beitrag von Quix0r » 10.06.2013 20:33:46

Auf mich kommt selbiges Problem zu, ich habe bereits --add-architecture ausgefuehrt und kann z.B. xserver-xorg-dev:i386 nicht installieren, da es mit xserver-xorg-dev konfliktiert. :(

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Multiarch-Pakete

Beitrag von rendegast » 10.06.2013 21:04:20

@Quix0r
rendegast hat geschrieben: Einfachster walkaround wird wohl eine 32bit-VM fürs Bauen sein.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten