From: Andie Khalu <a.Khalu@hotmail.com>
To: "devel@ where you _can_ ask" <devel-newbies@lists.altlinux.org>
Subject: Re: [newbies] Spec, Rpm, Conflicts-pre (?)
Date: Wed, 4 Dec 2019 19:25:46 +0000
Message-ID: <DM6PR07MB610530ABD1F3230F06EE5D25FB5D0@DM6PR07MB6105.namprd07.prod.outlook.com> (raw)
In-Reply-To: <alpine.LFD.2.20.1912041636370.28829@imap.altlinux.org>
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
next prev parent reply other threads:[~2019-12-04 19:25 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-04 13:42 ` Ivan Zakharyaschev
2019-12-04 19:25 ` Andie Khalu [this message]
2019-12-04 16:11 ` Michael Shigorin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DM6PR07MB610530ABD1F3230F06EE5D25FB5D0@DM6PR07MB6105.namprd07.prod.outlook.com \
--to=a.khalu@hotmail.com \
--cc=devel-newbies@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
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