RPM Spec วิธีการระบุในแพ็คเกจเพื่อให้ลบ RPM ก่อนหน้านี้ออก


9

คำถาม:

ฉันจะใส่อะไรลงในไฟล์foo.specเพื่อให้ RPMs จะลบ 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เพื่อให้ RPMs จะลบ RPM ก่อนหน้านี้ก่อนติดตั้ง

ขอบคุณ,

.dave


1
ถ่ายภาพในที่มืด: นี่ไม่ใช่สิ่งที่ล้าสมัยหรือ?
Charles

อะไรคือความแตกต่างระหว่างแพ็กเกจและดังนั้นการปรับใช้ของพวกเขา - ไบนารีการกำหนดค่าหรือทั้งสองอย่าง?
nearora

ความแตกต่างคืออะไร เนื่องจากฉันบรรจุแอพ PHP ไว้การกำหนดค่าและรหัส PHP
fatehks

คำตอบ:


10

คุณต้องการทำให้แพ็คเกจเหล่านั้นขัดแย้งกันดังนั้น yum จึงรู้ว่าไม่สามารถติดตั้งพร้อมกันได้

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

ฉันได้เพิ่ม "ความขัดแย้ง:" และอย่างน้อยก็ไม่อนุญาตให้ติดตั้งหากรุ่นเดียวกันดังนั้นนั่นคือสิ่งที่ฉันกำลังใช้ ขอบคุณ
fatehks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.