Hallo Philipp, hallo Ralf, hallo Leute, Am Freitag, 10. Oktober 2003 09:30 schrieb Philipp Thomas:
Ralf Corsepius
[Fri, 10 Oct 2003]: Sachen wie 'fillup_and_insserv' beziehen sich nunmal auf das laufende System.
Schon mal RPMs als Nicht-root gebaut?
Schon mal angesehen, *wo* das sitzt? fillup_and_insserv stehen im %post.
Es macht wirklich Spass, wenn das Bauen eines RPMS als Non-Root stirbt, weil mal SuSE's rpm mal wieder versucht, irgendwo etwas am System zu verbiegen.
Und jetzt verrate mir mal, wo beim bauen %post ausgeführt wird.
Es muss nicht unbedingt %post sein. Ich hatte z. B. mit Problemen zu kämpfen, als ich die Fontlinge in ein RPM verpacken wollte. Falls Du die Fontlinge nicht kennst: sie bestehen aus einigen Perl-Scripten, zwei Perl-Modulen, einigen PHP-Dateien, die nach $(prefix)/share/fontlinge/ installiert werden, und natürlich Doku. Die Installation erfolgt mit recht einfachen Makefiles sowie (bei den Perl-Modulen) einem per Makefile.PL und ExtUtils::MakeMaker generierten Makefile. Das spec und sonstige Dateien kannst Du gern im CVS angucken: http://sourceforge.net/projects/fontlinge http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/fontlinge/fontlinge_rc/ Hier ein Ausschnitt der Ausgabe von rpm -tb - als User "compile" ausgeführt, der Schreibrechte in /usr/src/packages/* hat und natürlich auch in /var/tmp/, getestet unter SuSE 8.2 und 7.3. + RPM_BUILD_ROOT=/var/tmp/fontlinge-2.0-buildroot + export RPM_BUILD_ROOT + test -x /usr/sbin/Check -a 505 = 0 -o -x /usr/sbin/Check -a '!' -z /var/tmp/fontlinge-2.0-buildroot + echo 'I call /usr/sbin/Check...' I call /usr/sbin/Check... + /usr/sbin/Check rm: Entfernen von »/usr/share/info/dir.bak.gz« nicht möglich: Keine Berechtigung gzip: /usr/share/info/dir.bak.gz: Permission denied -rw-r--r-- 1 root root 4073 2001-04-13 19:54 /usr/share/info/dir.bak.gz rm: Entfernen von »/usr/local/man/man1/saned.1.gz« nicht möglich: Keine Berechtigung gzip: /usr/local/man/man1/saned.1.gz: Permission denied -rw-r--r-- 1 root root 2393 2002-07-07 16:06 /usr/local/man/man1/saned.1.gz rm: Entfernen von »/usr/local/man/man1/scanimage.1.gz« nicht möglich: Keine Berechtigung gzip: /usr/local/man/man1/scanimage.1.gz: Permission denied [gleiches mit diversen anderen manpages in /usr/local] Wieso wurstelt dieses /usr/sbin/check in meinem System run, wenn ich innerhalb eines BUILD_ROOT arbeite??? (zum Glück habe ich das Paket nicht als root gepackt, sonst wäre ich vermutlich einige Manpages losgeworden :-( ) Inzwischen hat mir David die Zeile %define __os_install_post true empfohlen, damit läuft es jetzt.
Du musst auch nicht eine aus tausenden Paketen bestehende Distribution pflegen.
Und? Ich sprach ja auch nicht von "Kleinigkeiten in einzelnen RPM-specs".
Wenn du tausende von Paketen pflegen willst, *musst* du so viel wie möglich kapseln und zentralisieren, sonst wird das ziemlich unübersichtlich.
Aber es sollte IMHO immer noch so sein, dass ein "normales" spec immer funktioniert und nicht erst, nachdem man den ein oder anderen SuSE-Automatismus abgeschaltet hat... Vorschlag: SuSE könnte in allen specs eine einzelne Zeile einbauen, die diese Automatismen aufruft, z. B. %suse_rpm_postprocess Oder (vermutlich noch einfacher) in den specs per %define exec_suse_rpm_macros 1 eine Variable setzen setzen und die SuSE-eigenen Makros nur dann ausführen, wenn diese Variable gesetzt ist. Das wäre für SuSE ein IMHO vertretbarer Aufwand und würde den Bau von Paketen mit "normalen" Specs wesentlich erleichtern.
Neulich fragte jemand auf suse-linux-e warum SuSE bei Entwicklern so wenig Berücksichtigung finde.
Ich denke, ein oder zwei wesentliche Punkte, die dazu beitragen, dürften hier offensichtlich geworden sein.
*Kein* externer Entwickler muss auch nur eines der Makros benutzen, wo also liegt das Problem?
Das Problem liegt darin, dass einige Makros _zwangsweise_ ausgeführt werden, wenn man sie nicht explizit abschaltet. Und da ich vom RPM-Bauen recht wenig Ahnung habe und von Problemen dieser Art noch weniger, gäbe es immer noch kein funktionierendes spec für die Fontlinge, wenn mir nicht David [1] geholfen hätte. Ähm... wieso findet man eigentlich verhältnismäßig wenig RPMs, die für SuSE gepackt sind [2]? Ich könnte mir vorstellen, dass solche Probleme schon manchen Hobby-Programmierer davon abgehalten haben... Gruß Christian Boltz [1] von dem stammt auch das fontlinge.spec. Allerdings hat es ihn doch sehr verwundert, dass das RPM-basteln meine Manpages in /usr/local verwursteln will... (siehe auch meine sig) Inzwischen hab ich das spec ein wenig überarbeitet (und mich in die Grundlagen zum RPM-bauen eingelesen), aber sobald ich die Zeile %define __os_install_post true entferne oder auskommentiere, kommt wieder der obige Fehler. [2] von Packman mal abgesehen ;-) --
Liegt nicht an meinem .spec. Das sagt jeder ;-) Naja, aber ich zu Recht ;)) Sagt auch jeder ;-) *SCNR* [> David Haller und Christian Boltz in fontlinge-devel]