Ich versuche, eine RPM-Datei für das Dienstprogramm wget zu erstellen. Beide meiner Versuche (mit und ohne sudo), den Befehl rpmbuild zu verwenden, schlagen beim Erstellen einer RPM-Datei fehl.
Ich führe den Befehl „sudo rpmbuild“ aus, um eine Spezifikationsdatei zu verwenden. Aber ich erhalte diese Fehlermeldungen:
Fehler: Datei nicht gefunden: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget Fehler: Datei nicht gefunden: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/share/man/man1/wget.1
Wenn ich die Verzeichnispfade manuell erstelle und die Dateien manuell kopiere, stoße ich später auf andere Probleme. Ich denke, etwas stimmt nicht, wenn der Befehl rpmbuild erwartet, dass sich Schlüsseldateien an den oben genannten Speicherorten befinden.
Ich habe gelesen, dass empfohlen wird, sudo nicht zu verwenden. Wenn ich sudo nicht verwende, rpmbuild -v -bb --clean SPECS/wget.spec
zeigt der rpmbuild-Befehl ( ) Folgendes an:
Ausführen (%prep): /bin/sh -e /var/tmp/rpm-tmp.NiuIFV + umask 022 + cd /home/ec2-user/mywget/BUILD + cd /home/ec2-user/mywget/BUILD + rm -rf wget-1.19 rm: „wget-1.19/po/“ kann nicht entfernt werden.[email geschützt]': Berechtigung verweigert rm: „wget-1.19/po/zh_CN.po“ kann nicht entfernt werden: Berechtigung verweigert rm: „wget-1.19/po/id.gmo“ kann nicht entfernt werden: Berechtigung verweigert rm: „wget-1.19/po/gl.gmo“ kann nicht entfernt werden: Berechtigung verweigert …
Ich sehe weitere Zeilen mit der Meldung „rm kann nicht entfernen ... Zugriff verweigert“. Ich hatte erwartet, dass der Befehl rpmbuild funktioniert. Ich habe die Berechtigungen des Ordners wget-1.19 auf 777 geändert (über sudo chmod), wobei Eigentümer und Gruppe mit denen des Benutzers identisch sind, der den Befehl rpmbuild ausführt. Das Problem besteht immer noch.
Was kann ich tun, um ein RPM-Paket des Dienstprogramms wget zu erstellen?
# This is a sample spec file for wget
%define _topdir /home/ec2-user/mywget
%define name wget
%define release 1
%define version 1.19
%define buildroot %{_topdir}/%{name}-%{version}-root
BuildRoot: %{buildroot}
Summary: GNU wget
License: GPL
Name: %{name}
Version: %{version}
Release: %{release}
Source: %{name}-%{version}.tar.gz
Prefix: /usr
Group: Development/Tools
%description
The GNU wget program downloads files from the Internet using the command-line.
%prep
%setup -q
%build
./configure
make
%install
make install prefix=$RPM_BUILD_ROOT/usr
%files
%defattr(-,root,root)
/usr/local/bin/wget
%doc %attr(0444,root,root) /usr/local/share/man/man1/wget.1
Das Obige wurde modifiziert, basiert aber stark auf dem hier gezeigten Beispiel aus der Spezifikationsdatei:https://www.ibm.com/developerworks/library/l-rpm1/index.html
Antwort1
Dieser Fehler:
Fehler: Datei nicht gefunden: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget
bedeutet, dass Sie diese Datei im Abschnitt %files angegeben haben:
%files
/usr/local/bin/wget
rpmbuild erwartet diese Datei also im Pfad $RPM_BUILD_ROOT/usr/local/bin/wget, aber sie ist nicht da. Daher dieser Fehler. Umgekehrt gilt das Gleiche für die Manpage.
Sie können es ausführen rpmbuild -bi
, wodurch es direkt nach %install
der Phase angehalten wird, und Sie können den Inhalt von /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/ überprüfen, wo die make install
Dateien tatsächlich abgelegt werden.
ICHerratendass entweder
%install
make install prefix=$RPM_BUILD_ROOT/usr/local
oder
%files
%defattr(-,root,root)
/usr/bin/wget
%doc %attr(0444,root,root) /usr/share/man/man1/wget.1
wird Ihren Fehler beheben. (nur eines davon!)