[newbies] Spec, Rpm, Conflicts-pre (?)

Andie Khalu a.Khalu на hotmail.com
Ср Дек 4 22:25:46 MSK 2019


Stop emailing me 

Sent from my iPhone

> On Dec 4, 2019, at 8:42 AM, Ivan Zakharyaschev <imz на altlinux.org> wrote:
> 
> Hello!
> 
>> On Wed, 4 Dec 2019, Anton Shevtsov wrote:
>> 
>> Суть вопроса. Делаю небольшой метапакет, не для апстрима,  для локального
>> использования. Хотя и достаточного глобального использования.
>> 
>> Смысл такой, что надо установить chromium-gost, при этом удалить chromium,
>> при этом создать симлинку /usr/bin/chromium -> /usr/bin/chromium-gost
>> 
>> В spec пишу
>> ..
>> Requires(pre): chromium-gost
>> ...
>> %post
>> ln -s /usr/bin/chromium-gost /usr/bin/chromium
>> %postun
>> rm -f /usr/bin/chromium
>> ...
>> 
>> при попытке установить мой метапакет, выводится, что обычный хромиум будет
>> удален, будет поставлен chromium-gost. На этом этапе все хорошо. Пакеты
>> ставятся, но тут же получаю
>> 
>> ln: не удалось создать символьную ссылку '/usr/bin/chromium': Файл
>> существует
>> 
>> Что логично ибо логика пакетного менеджера _сначала установить_, а лишь
>> потом _удалить_. Т.е. симлинка пытается появится, когда еще установлен
>> обычный chromium.
>> 
>> А Conflicts(pre) нету, чтобы удалить его раньше установки.
> 
> Раз Conflicts(pre) нету, можно было бы придумать попробовать
> 
> Requires(pre): conflicts-chromium
> 
> а в пакете conflicts-chromium поставить Conflicts: chromium
> 
> Но я так не советую пробовать делать в первую очередь, см. моё предложение 
> ниже.
> 
>> Есть ли механим, вмешаться в транзакцию и удалить пакет раньше? Какие пути
>> решения?
> 
> Вмешаться в порядок действия в транзакцию довольно сложно, там и так в 
> коде rpm всё очень непросто в этом месте.
> 
> Мне кажется, в Вашем случае этот симлинк можно просто положить в секцию 
> %files Вашего пакета.
> 
> Раз в результате транзакции старый владелец этого файла (пакет chromium) 
> удаляется, то rpm это учтёт и без жалоб сразу на этом месте создаст новый 
> симлинк при выполнении транзакции.
> 
> -- 
> Best regards,
> Ivan
> _______________________________________________
> devel-newbies mailing list
> devel-newbies на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-newbies


Подробная информация о списке рассылки devel-newbies