सवाल:
मैं foo.spec फ़ाइल में क्या डालूं ताकि RPM इंस्टॉल करने से पहले पिछले RPM को हटा दे?
विवरण:
मैंने एक कल्पना फ़ाइल बनाई है जो आरपीएम के लिए कुछ पैकेजों का निर्माण करती है जो एक ही स्रोत का उपयोग करते हैं और एक ही सेवा प्रदान करते हैं, प्रत्येक थोड़ा अलग कॉन्फ़िगरेशन के साथ। उदाहरण के लिए, वे एक ही "क्षमता" प्रदान करते हैं
यहां उन अनिवार्यताओं का एक उदाहरण दिया गया है जो मेरी .spec फाइल की तरह दिखती हैं:
%define version 1234
%define name foo
%define release 1
%define pkgname %{name}-%{version}-%{release}
Name: %{name}
Version: %{version}
Release: %{release}
Provides: %{name}
%package one
Summary: Summary for foo-one
Group: %{group}
Obsoletes: %{name} <= %{version}
Provides: %{name} = %{version}
%description one
Blah blah blah
%package two
Summary: Summary for foo-two
Group: %{group}
Obsoletes: %{name} <= %{version}
Provides: %{name} = %{version}
%description two
Blah blah blah
# %prep, %install, %build and %clean are pretty simple
# and omitted here for brevity sake
%files one
%defattr(-,root,root,-)
%{_prefix}/%{pkgname}
%files two
%defattr(-,root,root,-)
%{_prefix}/%{pkgname}
जब मैं पहला स्थापित करता हूं, तो यह ठीक है। मैं फिर पहले एक को हटाता हूं, और फिर दूसरे को स्थापित करता हूं, जो ठीक भी काम करता है।
मैं पहले एक को स्थापित करता हूं, उसके तुरंत बाद दूसरा स्थापित करता हूं, और वे दोनों स्थापित करते हैं, एक के ऊपर एक, लेकिन, मैं उम्मीद कर रहा था कि दूसरे को स्थापित करने से पहले हटा दिया जाएगा।
उदाहरण सत्र:
# rpmbuild foo and copy rpms to yum repo
$ yum install foo-one
...
$ yum list installed|grep foo
foo-one.noarch 1234-1 @myrepo
$ yum install foo-two
...[Should say that it is removing foo-one, but does not]...
$ yum list installed|grep foo
foo-one.noarch 1234-1 @myrepo
foo-two.noarch 1234-1 @myrepo
$ rpm -q --provides foo-one
foo = 1234
foo-one = 1234-1
$ rpm -q --provides foo-two
foo = 1234
foo-two = 1234-1
मैं foo.spec फ़ाइल में क्या डालूं ताकि RPM इंस्टॉल करने से पहले पिछले RPM को हटा दे?
धन्यवाद,
.dave।