* Re: [newbies] Spec, Rpm, Conflicts-pre (?) @ 2019-12-04 13:42 ` Ivan Zakharyaschev 2019-12-04 19:25 ` Andie Khalu 2019-12-04 16:11 ` Michael Shigorin 1 sibling, 1 reply; 3+ messages in thread From: Ivan Zakharyaschev @ 2019-12-04 13:42 UTC (permalink / raw) To: devel@ where you _can_ ask [-- Attachment #1: Type: text/plain, Size: 2754 bytes --] 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 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [newbies] Spec, Rpm, Conflicts-pre (?) 2019-12-04 13:42 ` [newbies] Spec, Rpm, Conflicts-pre (?) Ivan Zakharyaschev @ 2019-12-04 19:25 ` Andie Khalu 0 siblings, 0 replies; 3+ messages in thread From: Andie Khalu @ 2019-12-04 19:25 UTC (permalink / raw) To: devel@ where you _can_ ask 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 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [newbies] Spec, Rpm, Conflicts-pre (?) 2019-12-04 13:42 ` [newbies] Spec, Rpm, Conflicts-pre (?) Ivan Zakharyaschev @ 2019-12-04 16:11 ` Michael Shigorin 1 sibling, 0 replies; 3+ messages in thread From: Michael Shigorin @ 2019-12-04 16:11 UTC (permalink / raw) To: devel-newbies On Wed, Dec 04, 2019 at 09:02:08AM +0500, Anton Shevtsov wrote: > Смысл такой, что надо установить chromium-gost, при этом удалить chromium, > при этом создать симлинку /usr/bin/chromium -> /usr/bin/chromium-gost Вдумчиво читайте порядок установки/удаления пакетов в самом конце /usr/share/doc/rpm-4.0.4/manual/triggers -- ---- WBR, Michael Shigorin / http://altlinux.org ------ http://opennet.ru / http://anna-news.info ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-12-04 19:25 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-12-04 13:42 ` [newbies] Spec, Rpm, Conflicts-pre (?) Ivan Zakharyaschev 2019-12-04 19:25 ` Andie Khalu 2019-12-04 16:11 ` Michael Shigorin
devel@ where you _can_ ask This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel-newbies/0 devel-newbies/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel-newbies devel-newbies/ http://lore.altlinux.org/devel-newbies \ devel-newbies@lists.altlinux.org devel-newbies@lists.altlinux.ru devel-newbies@lists.altlinux.com public-inbox-index devel-newbies Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel-newbies AGPL code for this site: git clone https://public-inbox.org/public-inbox.git