devel@ where you _can_ ask
 help / color / mirror / Atom feed
* 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 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

* 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

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