Mich beschäftigt seit kurzem die Frage, wie genau die 32-Bit Kompatibilitätspakete für 64-Bit Distributionen entstehen.
Wenn ich mir ein solches xyz-32bit Paket ansehe, dann finde ich zunächst, daß es (wie auch erwartet, sonst würde man das ja in den Repos finden) kein spezielles src.rpm dafür gibt:
In den entsprechenden SPEC-Files finde ich auch keinen Hinweis auf ein %{name}-32bit Paket, was darauf schliessen lässt, daß wohl ein bestimmtes RPM-Macro entscheidet, ob ein 32-Bit Paket für x86_64 gebaut wird oder nicht und dieses automatisiert ausgespuckt wird.Code:rpm -qip ConsoleKit-32bit-0.2.10-60.16.x86_64.rpm Name : ConsoleKit-32bit Relocations: (not relocatable) Version : 0.2.10 Vendor: openSUSE Release : 60.16 Build Date: Mi 03 Dez 2008 08:07:08 CET Install Date: (not installed) Build Host: build19 Group : System/Daemons Source RPM: ConsoleKit-0.2.10-60.16.src.rpm Size : 23528 License: GPL v2 or later Signature : RSA/8, Mi 03 Dez 2008 08:07:21 CET, Key ID b88b2fd43dbdc284
Ein Blick in die SUSE Package Conventions lieferte folgende Aussage:
Ich habe mir im Anschluss ein paar SPECs angesehen (Pakete, die ein 32-Bit Binary ausspucken und welche, die das nicht tun) und mir sind irgendwie keine Besonderheiten aufgefallen, was nun darüber entscheidet, ob xyz-32bit.x86_64.rpm-Pakete ausgespuckt werden oder nicht, der Hinweis auf libexecdir hat mich irgendwie auch nicht schlauer gemacht, da z.B. dieses SPEC hier (packman-Paket für libexif) diese Variable gar nicht enthält.4.1. Biarch Systems
The directories like /usr/lib64 and /usr/X11R6/lib64 are used next to the usual
/usr/lib and /usr/X11R6/lib directories on biarch systems. This is because two variants
of the same libraries must coexist on such systems to allow running both 32-bit and 64-bit
applications in parallel. The 64-bit libraries are installed in lib64 directories and 32-bit
libraries in the lib directories. The macros %_lib and %_libdir do this.
Special packages are created for the biarch systems that include only the 32-bit libraries. Any
other files are not needed because these libraries can use architecture independent files from
the 64-bit packages. They are even able to execute 64-bit helper binaries. Therefore, these are
shared as well and are installed into lib on all architectures instead (and not %_lib). See the
part about --libexecdir in the following section.
• --libexecdir defines the directory for binary helpers that are called from other binaries
or libraries but not by users. The default path {exec_prefix}/libexec is not allowed by
FHS. The recommended path is {prefix}/lib/{name} where {prefix} is package
prefix and {name} is the package name. lib is used for all architectures (and not %_lib).
See Section 4.1 for more details. Example: --libexecdir=%_prefix/lib/%name
http://packman.links2linux.de/package/libexif
Langer Rede kurzer Sinn:Code:%debug_package %prep %setup -q %patch1 %build export CFLAGS="%{optflags} -g -fstack-protector" %configure \ --with-doc-dir="%{_docdir}/%{name}" \ --disable-static %__make %{?jobs:-j%{jobs}} %install %makeinstall %find_lang "libexif-%{soname}" %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files -f libexif-%{soname}.lang %defattr(-,root,root) %doc %{_docdir}/%{name} %{_includedir}/libexif %{_libdir}/libexif.so.%{soname} %{_libdir}/libexif.so.%{soname}.*.* %{_libdir}/libexif.so %{_libdir}/libexif.la %{_libdir}/pkgconfig/libexif.pc
Wie genau funktioniert das mit den Biarch-Paketen im Build Sytem von openSUSE bzw. Packman, wo man auch mehrfach xyz-32bit Pakete findet?
Greetz,
RM
Lesezeichen