2011-04-20 72 views
1

我想在我的spec文件中使用下面的代碼,我正在將我的應用程序安裝爲獨立的tomcat實例。rpm -U刪除符號鏈接,除非我使用--force

# Symlink $CATALINA_BASE/logs to /var/log/$SERVICE_NAME. 
# If it's already there, we'll get rid of it and make a new symlink. 
if [ -h "$RPM_INSTALL_PREFIX/logs" ]; then 
    # It's a symlink, so just remove it. 
    rm -f $RPM_INSTALL_PREFIX/logs 
fi 
# If it's still there, and it's a directory, see if we can rmdir it. 
if [ -d "$RPM_INSTALL_PREFIX/logs" ]; then 
    rmdir $RPM_INSTALL_PREFIX/logs >/dev/null 2>&1 || : 
fi 
if [ -e "$RPM_INSTALL_PREFIX/logs" ]; then 
    # It's probably either a file or a dir, so we'll move it. 
    mv $RPM_INSTALL_PREFIX/logs $RPM_INSTALL_PREFIX/logs.rpmsave || : 
fi 
ln -s /var/log/$SERVICE_NAME $RPM_INSTALL_PREFIX/logs || : 

當此代碼-i運行它創建並離開那裏符號鏈接。

當我使用-U運行新版本的rpm時,它會執行此代碼並正確創建符號鏈接,但是當rpm命令退出時,符號鏈接將被刪除。

如果我第二次運行-U --force,則符號鏈接保持不變。

如何獲得-U而不必使用--force

+0

我添加了'bash'標籤,因此它將語法突出顯示代碼片段 – 2011-04-20 23:48:00

回答

0

這是解決通過在名爲日誌添加一個文件作爲RPM的更新文件列表的一部分,它會自動由於停止刪除符號鏈接它現在認爲它一直存在。

0

你想做什麼?你保留或刪除符號鏈接?

如果你刪除它,試試這個:

rm -f -i $RPM_INSTALL_PREFIX/logs # File 
rmdir -f $RPM_INSTALL_PREFIX/logs >/dev/null 2>&1 || : # Directory