Thông số RPM Cách chỉ định trong gói để loại bỏ RPM trước đó


9

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.


1
Bắn trong bóng tối: đây không phải là lỗi thời?
Charles

Điều gì khác nhau giữa các gói và do đó triển khai của chúng - nhị phân, cấu hình hoặc cả hai?
nearora

Có gì khác nhau? Vì tôi đang đóng gói một ứng dụng PHP, cấu hình và mã php.
mệnh

Câu trả lời:


10

Bạn muốn làm cho các gói đó xung đột với nhau, để yum biết rằng chúng không thể được cài đặt đồng thời.

%package one
Summary:            Summary for foo-one
Group:              %{group}
Obsoletes:          %{name} <= %{version}
Provides:           %{name} = %{version}
Conflicts:          %{name}-two

Tôi đã thêm "Xung đột:" và ít nhất là không cho phép cài đặt nếu phiên bản giống nhau, vì vậy đó là những gì tôi đang sử dụng. Cảm ơn.
mệnh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.