Daniel Spannbauer [13.05.2014 12:08]:
Am 05/12/2014 05:09 PM, schrieb David Haller:
Hallo,
Am Mon, 12 May 2014, Daniel Spannbauer schrieb:
für OpenSUSE gibt es ja teilweise 64-Bit-Pakete in dnen aber 32Bit-Libs (also libs auf /usr/lib statt /usr/lib64) stecken.
Wenn man mal auf software.opensuse.org schaut gibts dazu aber nur die ganz normalen SRC-RPMs. Aus denen lassen sich dann die 64Bit-Pakete bauen. Aber wie krieg ich die 32Bit-Pakete hin (also die mit -32bit im Namen)?
Du mußt einfach für i586 (-m32) und die libs eben nach /lib/ statt lib64 packen. Der Unterschied zwischen den i586 und den x86_64-32bit Paketen ist ja eben, daß man letztere ohne Konflikte parallel zu den x86_64 installieren kann.
Wenn du im OBS (oder AFAIK lokal per build) (auch via osc) automatisch aus den i586-RPMs x86_64-32bit RPMs haben willst brauchst du "nur" eine baselibs.conf im Projekt. In die muß nur der Paketname des eigentlichen lib-subpackages. Also z.B.
==== baselibs.conf ==== libfoo3 ====
Damit bekommst du mit folgend skizziertem foo.spec folgende RPMs:
==== %define sover 3
Name: foo [..]
%package -n libfoo%{sover} %package devel
%files -n libfoo%{sover} %{_libdir}/*.so.*
%files devel %{_libdir}/*.so %{_includedir}/foo =====
die RPMs i586/libfoo3, i586/foo-devel, x86_64/libfoo3, x86_64/libfoo3-32bit und x86_64/foo-devel.
Dazu muß dein OBS-Projekt nur noch das foo.tar.* und foo.changes enthalten ;)
Siehe auch: http://en.opensuse.org/openSUSE:Shared_library_packaging_policy
Solche Fragen passen besser nach opensuse-packaging, wo übrigens deutsch AFAIK zumindest toleriert wird, obwohl die ML eigentlich englisch ist, und dort sind auch die Leute, die sich wirklich damit auskennen ;)
Hallo David,
ganz so kompliziert wollte ich es gar nicht :)
Es gibt für Paket xxx.rpm ein sub-package xxx-32bit.rpm. Beide Pakete kommen wohl aus einem srpm xxx.src.rpm. Dieses src.rpm hole ich mir, installiere es mit rpm und versuche nun das xxx-32bit.rpm lokal zu bauen. Eigentlich müsste das ja gehen ohne das ich am SPEC rumbaue, oder? Der OBS kanns ja auch. Oder istd as nur eine Eigenschaft des OBS und nicht mit einem lokalenb SuSE nicht so einfach zu machen?
Wenn Du nur lokal ohne OBS bauen willst, schreibe doch BuildArch: i586 ins Spec-File, oder gib dem rpmbuild-Befehl den Parameter --target i586 mit. rpmbuild wird sich schon beschweren, wenn es nicht klappt ;-) Gruß Werner --