Hallo, Am Donnerstag, 30. Oktober 2003 00:31 schrieb David Haller:
[...]
Du hast %dir nicht verstanden.
Mein erster Gedanke war: "Kann nicht sein ich baue nun RPMs seit über zwei Jahren..." Doch: Es stimmt. Aber anders als du denkst...
[...]
FALSCH! Wie du leicht selber ausprobieren kannst:
==== /usr/src/packages/SPECS/test_dir.spec ==== %define _prefix /tmp/test_dir
Summary: testing %dir Name: test_dir Version: 0.1 Release: 0 Autoreqprov: on Group: unsorted Copyright: GPL BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
%description Test spec
%install install -d -m 755 ${RPM_BUILD_ROOT}%{_bindir} echo "echo test" > ${RPM_BUILD_ROOT}%{_bindir}/test_dir.sh chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/test_dir.sh
%files %dir %{_bindir} %{_bindir}/test_dir.sh ====
Das habe ich genauso ausprobiert (cut & paste)
$ cd /usr/src/packages/SPECS $ rpm -bb test_dir.spec $ su - # rpm -qpl /usr/src/packages/RPMS/i386/test_dir-0.1-0.i386.rpm /tmp/test_dir/bin /tmp/test_dir/bin/test_dir.sh # rpm -i /usr/src/packages/RPMS/i386/test_dir-0.1-0.i386.rpm # touch /tmp/test_dir/bin/foo.sh # rpm -e test_dir cannot remove /tmp/test_dir/bin - directory not empty
Diese Meldung bekomme ich nicht! Tatsächlich ist die Zeile mit dem % dir in diesem Fall sogar redundant.
# ls /tmp/test_dir/bin/ . .. foo.sh
Schreibt man dagen die %dir-Zeile und lässt die mit dem test_dir.sh weg, bekommt man nach der Installation dieseben Verzeichnisse und Dateien, beim Deinstallieren aber auch die Fehlermeldung, weil RPM nun das Verzeichnis samt Inhalt löschen will und das wegen foo.sh nicht kann. Scheint so, als ob ich nun 99% meiner %dir-Zeilen aus meinen Spec-Files löschen kann und %dir nur noch für leere Verzeichnisse brauche, die nach einer Deinstallation erhalten bleiben sollen, weil sie Dateien enthalten könnten, die nicht zu meinem Paket gehören. Man lernt nie aus... Herbert