Criando symlink em / usr / bin ao criar um RPM

13

Estou criando um RPM para um aplicativo que ainda não possui um. Eu tenho que construir e instalar bem no diretório /opt usando $RPM_BUILD_ROOT , mas eu também gostaria de criar um casal links simbólicos em /usr/bin para que o aplicativo esteja disponível no caminho. Todas as minhas tentativas de fazer isso geraram erros de "permissão negada" porque estou executando rpmbuild como um usuário não raiz e não é permitido criar arquivos em /usr/bin/ .

Este é o meu arquivo .spec atual:

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
    
por Edward Dale 06.11.2009 / 15:13

2 respostas

6

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

O link precisa ser criado na seção %build e também precisa apontar para onde você está instalando o RPM.

Antes de criar o link, verifique se o diretório de destino existe, por exemplo, ${RPM_BUILD_ROOT}/%{_bindir} . Você pode usar mkdir ou install -d para isso.

    
por 06.11.2009 / 15:50
1

macro %{__ln_s} também é bom

exemplo, adicione link simbólico após a instalação:

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

exemplo remova a desinstalação do link simbólico:

%postun
rm -f %{_bindir}/exec2
    
por 03.09.2015 / 14:33

Tags