Specifiche RPM Come specificare nel pacchetto in modo da rimuovere gli RPM precedenti


9

Domanda:

Cosa metto nel foo.spec file in modo che il numero di giri rimuoveranno l'RPM precedente prima di installare?

Descrizione:

Ho creato un file di specifiche che crea rpm per alcuni pacchetti che utilizzano la stessa fonte e forniscono lo stesso servizio, ognuno con una configurazione leggermente diversa. Ad esempio, ognuno di essi fornisce la stessa "capacità"

Ecco un esempio degli elementi essenziali che il mio file .spec assomiglia a:

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

Quando installo il primo, si installa ok. Quindi rimuovo il primo, quindi installo il secondo, che funziona anche bene.

Quindi installo il primo, seguito immediatamente dall'installazione del secondo, ed entrambi si installano, uno sopra l'altro, ma mi aspettavo che il secondo fosse rimosso prima di installare il secondo.

Sessione di esempio:

# 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

Cosa metto nel foo.spec file in modo che il numero di giri rimuoveranno l'RPM precedente prima di installare?

Grazie,

.dave.


1
Girato nel buio: non è per questo che gli obsoletes sono?
Charles,

Che cosa differisce tra i pacchetti e di conseguenza le loro distribuzioni - binari, configurazione o entrambi?
Nearora,

Cosa differisce Dal momento che sto confezionando un'app PHP, la configurazione e il codice php.
fatehks,

Risposte:


10

Volete mettere in conflitto quei pacchetti l' uno con l'altro, in modo che yum sappia che non possono essere installati contemporaneamente.

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

Ho aggiunto "Conflicts:" e che almeno non consentiva l'installazione se la versione era la stessa, quindi è quello che sto usando. Grazie.
fatehks,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.