0

rsv-1.0 という rpm をビルドします。rsv-1.0.rpm をインストールすると、自動的に rsv.cfg ファイルが /etc にインストールされます。

パッケージには、ファイル etc/rsc.cfg が 1 つだけ含まれています。

更新された rpm 用にファイル rsv.cfg を変更したい場合は、rsv-2.0.rpm とします。

次に、空のディレクトリを作成し、これを新しいSPECファイルに含めてrsv-2.0.tar.gzにテアしました

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

シェルコマンドとして

しかし、rpm -ivh rsv-2.0.rpmを使用した場合にのみ機能することがわかりました

rpm -Uvh rsv-2.0.rpm を使用すると、/etc/rsv.cfg 内のファイルが消えます。

だから私の質問は、シェルコマンドを実行するだけの更新rpmを作成する方法ですか?

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

v1.0 のスペック ファイルは、%config と #cp のコメントを外すだけです。

4

1 に答える 1

0

元のspecファイルが正しくなく、ファイルを構成ファイルとして明示的にリストしていなかったため、それが消去されていると思います。

これを修正するには、バージョン 2%preセクションが存在するかどうかを確認し、それをどこかにコピーします。

アップグレードのためのスクリプトの順序は、混乱を招く可能性があります。2 番目のコピーが呼び出されてインストールされ、%pre/%post次に最初のコピー%preun/%postunが呼び出されます。

于 2013-06-24T09:02:35.713 に答える