Вопрос:
Что я положил в foo.spec файл, чтобы RPM удалили предыдущий RPM перед установкой?
Описание:
Я создал файл спецификации, который создает 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 файл, чтобы RPM удалили предыдущий RPM перед установкой?
Спасибо,
.dave.
Вы хотите, чтобы эти пакеты конфликт друг с другом, чтобы yum знал, что их нельзя установить одновременно.
%package one
Summary: Summary for foo-one
Group: %{group}
Obsoletes: %{name} <= %{version}
Provides: %{name} = %{version}
Conflicts: %{name}-two