Câu hỏi:
Tôi phải làm gì trong tệp foo.spec để các RPM sẽ xóa RPM trước đó trước khi cài đặt?
Sự miêu tả:
Tôi đã tạo một tệp spec tạo vòng / phút cho một vài gói sử dụng cùng một nguồn và cung cấp cùng một dịch vụ, mỗi gói có cấu hình hơi khác nhau. Ví dụ, mỗi người cung cấp cùng một "khả năng"
Đây là một ví dụ về các yếu tố cần thiết mà tệp .spec của tôi trông giống như:
%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}
Khi tôi cài đặt cái đầu tiên, nó sẽ cài đặt ok. Tôi sau đó loại bỏ cái đầu tiên, và sau đó cài đặt cái thứ hai, nó cũng hoạt động tốt.
Sau đó, tôi cài đặt cái đầu tiên, ngay lập tức bằng cách cài đặt cái thứ hai và cả hai đều cài đặt cái này, cái kia, nhưng tôi đã hy vọng rằng cái thứ hai sẽ bị xóa trước khi cài đặt cái thứ hai.
Phiên ví dụ:
# 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
Tôi phải làm gì trong tệp foo.spec để các RPM sẽ xóa RPM trước đó trước khi cài đặt?
Cảm ơn bạn,
.dave.