RPM Spec Önceki RPM'nin kaldırılması için pakette nasıl belirtilir


9

Soru:

Yüklemeden önce RPM'lerin önceki RPM'yi kaldırması için foo.spec dosyasına ne koyabilirim ?

Açıklama:

Her biri biraz farklı bir yapılandırma ile aynı kaynağı kullanan ve aynı hizmeti sunmak birkaç paketler için rpm's oluşturur bir spec dosyası oluşturduk. Örneğin, her biri aynı "kabiliyeti" sağlar

İşte benim .spec dosyama benzeyen temel örnekleri :

%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}

İlkini yüklediğimde, tamam yükler. Sonra ilkini kaldırıyorum ve sonra ikisini de yüklüyorum, bu da iyi çalışıyor.

Daha sonra ilkini yükledim, hemen sonra ikincisini yükledim ve ikisi de birini diğerinin üzerine yükledi, ancak ikincisini yüklemeden önce ikincisinin kaldırılmasını bekliyordum.

Örnek oturum:

# 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

Yüklemeden önce RPM'lerin önceki RPM'yi kaldırması için foo.spec dosyasına ne koyabilirim ?

Teşekkür ederim,

.dave.


1
Karanlıkta vuruldu: eskimiş bunun için değil mi?
Charles

Paketler ve sonuç olarak dağıtımları arasında ne fark vardır - ikili dosyalar, yapılandırma veya her ikisi?
nearora

Ne farklı? Ben bir PHP uygulaması, yapılandırma ve php kodu ambalaj beri.
fatehks

Yanıtlar:


10

Bu paketlerin birbiriyle çakışmasını istiyorsunuz , böylece yum aynı anda kurulamayacaklarını biliyor.

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

"Çakışmalar:" ı ekledim ve en azından sürüm aynıysa yüklemeyi devre dışı bıraktım, bu yüzden kullanıyorum. Teşekkürler.
fatehks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.