2013-06-23 47 views
0

我建一個名爲RSV-1.0轉,當你安裝RSV-1.0.rpm如何進行更新rpm,除了運行shell命令外,什麼都不做。

包僅包含一個文件等/ rsc.cfg

它會自動安裝rsv.cfg文件到/ etc如果我想在更新的rpm文件rsv.cfg中進行更改,請執行以下操作:rsv-2.0.rpm

然後我創建了一個空目錄,並將它編入rsv-2.0.tar.gz ,包括新的SPEC文件

%post 
if [ -f /etc/rsv.cfg ]; then 
    /bin/echo "hello-2.0" > /etc/rsv.cfg 
fi 

作爲一個shell命令

但我覺得,當你使用rpm -ivh RSV-2.0.rpm它只能

,如果你用rpm -Uvh RSV-2.0.rpm,在/etc/rsv.cfg文件消失

所以我的問題是,如何使一個更新的rpm,除了運行一個shell命令,什麼都不算?對於V2

更新規格文件

Name: rsv 
Version: 2.0 
Release: 1 
Summary: rsv rpm 

Group: rsv 
License: GPL+ 
URL: 
Source0: %{name}-%{version}.tar.gz 
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root 

#BuildRequires: 
#Requires: 

%description 
%{summary} 

%prep 
%setup -q 


%build 


%install 
rm -rf %{buildroot} 
mkdir -p %{buildroot} 

#cp -a * %{buildroot} 


%clean 
rm -rf %{buildroot} 

%post 
if [ -f /etc/rsv.cfg ]; then 
    /bin/echo "hello-2.0" > /etc/rsv.cfg 
fi 


%files 
%defattr(-,root,root,-) 
%doc 

#%config %{_sysconfdir}/%{name}.cfg 

%changelog 

的1.0版本規範文件只是取消註釋%配置和用#cp

+0

請發佈兩個版本的'spec'文件。這聽起來像'%files'部分或'%postun'中的錯誤。 –

+0

我已更新v2的規格文件.. – user2124498

回答

0

因爲原spec文件是不正確的,並沒有明確列出文件作爲配置文件,我認爲這是擦除它。

可能的解決方法是讓版本2 %pre部分查看它是否存在並將其複製到某處。

script ordering for upgrade可能會引起混淆。安裝第二個副本,調用其%pre/%post,然後調用第一個副本%preun/%postun