RPM을 만들 때 / usr / bin에 심볼릭 링크 만들기 발생 했습니다

아직없는 응용 프로그램에 대한 RPM을 만들고 있습니다. 을 /opt사용 하여 디렉토리 에 빌드하고 설치하는 $RPM_BUILD_ROOT것이 좋지만 /usr/bin응용 프로그램을 경로에서 사용할 수 있도록 몇 개의 심볼릭 링크를 만들고 싶습니다 . rpmbuild루트가 아닌 사용자로 실행 중이고 에서 파일을 만들 수 없기 때문에이 작업을 모두 시도하면 “권한 거부”오류가 발생 했습니다 /usr/bin/.

내 현재 .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}

링크는 %build섹션 에서 작성 해야 하며 RPM을 설치할 위치를 가리켜 야 합니다.

링크를 작성하기 전에 대상 디렉토리가 있는지 확인하십시오 (예 🙂 ${RPM_BUILD_ROOT}/%{_bindir}. mkdir또는 install -d이것을 사용할 수 있습니다 .


답변

macro %{__ln_s} 또한 좋다

설치 후 기호 링크 추가 :

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

예 : 심볼릭 링크 제거 제거 :

%postun
rm -f %{_bindir}/exec2


답변