2017-02-16 104 views
0

我正在爲本地未聯網框設置Redis RPM。我嘗試創建一個符號鏈接:/ usr/sbin/redis-server - >/opt/redis/redis-serverrpmbuild -/usr/sbin符號鏈接不安裝

但是,當我執行rpm -Uvh redis-3.2.7-1.rpm時,它安裝正常,但從未創建符號鏈接。這裏是我的規格文件的相關部分:

%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 

回答

2

ln -sf /opt/redis/redis-server /usr/sbin/redis-server需求是ln -sf /opt/redis/redis-server %{buildroot}/usr/sbin/redis-server然後/usr/sbin/redis-server需要被添加到%files部分。還要刪除rm中的%install

的事實ln沒有失敗告訴我,你真的讓符號鏈接,而你正在構建的RPMs根這是一個引人注目的壞主意。

我假設tarball在頂層擴展爲opt;如果不是,您的cp也不正確。

+0

啊,這很有道理。我的問題是我沒有在我的tarball中創建'usr/sbin'目錄。 – ev0lution37

+0

而我只作爲root運行,因爲我在Docker容器中執行它。所以不用擔心。 – ev0lution37

+0

如果需要,您也可以從spec文件中執行'mkdir -p'。 –