创buildRPM时,在/ usr / bin中创build符号链接

我正在为一个还没有的应用程序创build一个RPM。 我已经使用$RPM_BUILD_ROOT构build并安装在/opt目录中,但是我还想在/usr/bin创build一对符号链接,以便应用程序在path中可用。 我所有的尝试都做了“权限被拒绝”的错误,因为我以非root用户身份运行rpmbuild ,并且不允许在/usr/bin/创build文件。

这是我目前的.spec文件:

 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 

ln -sf /opt/bupc2.8/bin/upcc ${RPM_BUILD_ROOT}/%{_bindir}

链接需要在创buildRPM的地方创build,并且还需要指出安装 RPM的位置。

在创build链接之前,请确保目标目录存在,例如${RPM_BUILD_ROOT}/%{_bindir} 。 你可以使用mkdir或者为此install -d

macro %{__ln_s}也是好的

例如添加符号链接后安装:

 %post %{__ln_s} -f %{_bindir}/exec %{_bindir}/exec2 

例如删除符号链接卸载:

 %postun rm -f %{_bindir}/exec2