2017-02-16 2 views
0

Je configure un RPM Redis pour une boîte locale non connectée. Je suis en train de créer un lien symbolique:/usr/sbin/Redis-server ->/opt/Redis/Redis-serveurrpmbuild -/usr/sbin Symlink non installé

Cependant, quand je fais un rpm -Uvh redis-3.2.7-1.rpm, il est installé bien à /opt/redis/redis-server mais jamais crée le lien symbolique. Voici la partie pertinente de mon dossier de spécifications:

%build 
# Empty section. 

%install 
rm -rf %{buildroot} 
rm -f /usr/sbin/redis-server 

mkdir -p %{buildroot} 

# in builddir 
cp -a * %{buildroot} 

ln -sf /opt/redis/redis-server /usr/sbin/redis-server 

%clean 
rm -rf %{buildroot} 

%files 
/opt/redis/* 
/etc/init.d/redis 

Répondre

2

ln -sf /opt/redis/redis-server /usr/sbin/redis-server a besoin d'être ln -sf /opt/redis/redis-server %{buildroot}/usr/sbin/redis-server puis /usr/sbin/redis-server doit être ajouté à la section %files. Supprimez également ce rm dans %install.

Le fait que le ln a fait pas échouent me dit que vous avez vraiment fait le lien symbolique, et vous construisez RPM en tant que root ce qui est une mauvaise idée spectaculaire.

Je suppose que le tarball se développe avec opt au plus haut niveau; sinon, votre cp est également incorrect.

+0

Ah, c'est logique. Mon problème était que je ne créais pas le répertoire 'usr/sbin' dans mon archive. – ev0lution37

+0

Et je ne fais que fonctionner en tant que root parce que je le fais dans un conteneur Docker. Donc, pas de soucis à ce sujet. – ev0lution37

+0

Vous pouvez également faire 'mkdir -p' à partir du fichier spec si vous le souhaitez. –