Как я должен предоставить замену для пакета в ням?

Я пишу файл спецификации для замены пакета yum на один из нашего собственного репозитория. Новая упаковка станет заменой оригинальной.

Я думал, что лучший способ сделать это будет дать спецификации файл идентичный Conflicts а также Provides как можно сделать с типичным пакетом Arch Linux:

Name:       vncsnapshot-png

Provides:   vncsnapshot
Conflicts:  vncsnapshot

Казалось, это работает, и пакет может быть установлен / понижен / обновлен без проблем. Однако переустановки не удаются:

Loaded plugins: security
Setting up Reinstall Process
Resolving Dependencies
--> Running transaction check
---> Package vncsnapshot-png.x86_64 0:1.3-1.el6 will be reinstalled
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================================================================
 Package                                    Arch                              Version                                 Repository                          Size
===============================================================================================================================================================
Reinstalling:
 vncsnapshot-png                            x86_64                            1.3-1.el6                               sv.repo                             35 k

Transaction Summary
===============================================================================================================================================================
Reinstall     1 Package(s)

Total download size: 35 k
Installed size: 72 k
Is this ok [y/N]: y
Downloading Packages:
vncsnapshot-png-1.3-1.el6.x86_64.rpm                                                                                                    |  35 kB     00:00     
Running rpm_check_debug
ERROR with rpm_check_debug vs depsolve:
vncsnapshot conflicts with vncsnapshot-png-1.3-1.el6.x86_64
vncsnapshot conflicts with vncsnapshot-png-1.3-1.el6.x86_64
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
vncsnapshot-png-1.3-1.el6.x86_64 has installed conflicts vncsnapshot: vncsnapshot-png-1.3-1.el6.x86_64
Your transaction was saved, rerun it with:
 yum load-transaction /tmp/yum_save_tx-2016-02-18-12-18dAjmpb.yumtx

Есть ли способ пометить пакет как конфликтующий с оригиналом (то есть не может быть установлен в то же время), при этом предоставляя оригинал (то есть замену без замены), не сталкиваясь с этой проблемой?

1 ответ

Решение

В языке RPM конфликты также работают с виртуальными поставщиками, поэтому ваш пакет конфликтует сам с собой. Чтобы это исправить, вам нужно Provides а также Conflicts с версией макроса.

Provides:   vncsnapshot = %{version}
Conflicts:  vncsnapshot < %{version}

Я делаю это регулярно для проекта IUS. Вы можете увидеть больше примеров, просмотрев некоторые из наших спецификаций.

Другие вопросы по тегам