Ich erstelle ein RPM für eine Anwendung, die noch keines hat. Ich habe es in Ordnung in dem /opt
Verzeichnis mit bauen und installieren lassen $RPM_BUILD_ROOT
, aber ich möchte auch ein paar Symlinks erstellen, /usr/bin
damit die Anwendung auf dem Pfad verfügbar ist. Alle meine Versuche, dies zu tun, haben zu Fehlern "Berechtigung verweigert" geführt, da ich rpmbuild
als Benutzer ohne Rootberechtigung ausgeführt werde und keine Dateien in erstellen darf /usr/bin/
.
Hier ist meine aktuelle .spec-Datei:
Summary: Berkeley UPC
Name: berkeley_upc
Version: 2.8.0
Release: 1
Source0: %{name}-%{version}.tar.gz
License: GPL
Group: Development/Tools
BuildRoot: %{_builddir}/%{name}-root
Prefix: /opt/bupc2.8
Prefix: /usr
%description
Berkeley UPC on the BASS for the comp633 class.
%prep
%setup -q
%build
./configure CC=gcc44 CXX=g++44 --disable-aligned-segments --prefix=/opt/bupc2.8
make %{_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
mkdir -p ${RPM_BUILD_ROOT}%{_bindir}
mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man1
ln -sf /opt/bupc2.8/bin/upcc ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/bin/upcc_multi ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/bin/upcc_multi.pl ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/bin/upcdecl ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/bin/upcrun ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/bin/upc_trace ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/man/man1/upcc.1 ${RPM_BUILD_ROOT}%{_mandir}/man1
ln -sf /opt/bupc2.8/man/man1/upcdecl.1 ${RPM_BUILD_ROOT}%{_mandir}/man1
ln -sf /opt/bupc2.8/man/man1/upcrun.1 ${RPM_BUILD_ROOT}%{_mandir}/man1
ln -sf /opt/bupc2.8/man/man1/upc_trace.1 ${RPM_BUILD_ROOT}%{_mandir}/man1
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
/opt/bupc2.8
%config /opt/bupc2.8/etc
%config /opt/bupc2.8/opt/etc
%{_bindir}/upcc
%{_bindir}/upcc_multi
%{_bindir}/upcc_multi.pl
%{_bindir}/upcdecl
%{_bindir}/upcrun
%{_bindir}/upc_trace
%{_mandir}/man1/upcc.1.gz
%{_mandir}/man1/upcdecl.1.gz
%{_mandir}/man1/upcrun.1.gz
%{_mandir}/man1/upc_trace.1.gz
/home/eddale/src/rpm/tmp/berkeley_upc-root/usr/bin' to
erstellen /opt/bupc2.8/bin/upcc ': Keine solche Datei oder Verzeichnis/home/.../usr/bin
. So mache ich das: github.com/ciupicri/rpmbuild/blob/master/SPECS/… (Zeile 36).macro %{__ln_s}
ist auch gutBeispiel für das Hinzufügen eines symbolischen Links nach der Installation:
Beispiel Deinstallation von symbolischem Link entfernen:
quelle