ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Subject: Re: [devel] packages/rpm: heads/altlinux-4.1
Date: Sat, 8 Nov 2008 22:32:40 +0300
Message-ID: <20081108193240.GF8826@altlinux.org> (raw)
In-Reply-To: <20081108185124.GB20353@wo.int.altlinux.org>

[-- Attachment #1: Type: text/plain, Size: 4280 bytes --]

On Sat, Nov 08, 2008 at 09:51:24PM +0300, Dmitry V. Levin wrote:
> On Sat, Nov 08, 2008 at 08:23:00PM +0300, Alexey M. Tourbin wrote:
> > Update of /people/at/packages/rpm.git
> > 
> > Changes statistics since `4.0.4-alt95.M41.5-7-g43948fb' follows:
> >  rpm-4_0.spec                      |    8 +++++++-
> >  scripts/posttrans-filetriggers.in |   16 ++++++++--------
> >  2 files changed, 15 insertions(+), 9 deletions(-)
> > 
> > Changelog since `4.0.4-alt95.M41.5-7-g43948fb' follows:
> > commit bc50dc2a3ed5c26edc56af052b838a0a2d7b959c
> > Author: Alexey Tourbin <at@altlinux>
> > Date:   Sat Nov 8 19:54:44 2008 +0300
> > 
> >     4.0.4-alt95.M41.6
> >     
> >     - implemented post-transaction filetriggers, loosely based on filetriggers.patch
> >       from Mandriva Linux (see %_rpmlibdir/posttrans-filetriggers for details)
> >     - implemented %_rpmlibdir/0ldconfig.filetrigger, so that packages with
> >       shared libraries need not invoke ldconfig(1) in they %%post-scriptlets
> 
> Ну хорошо, допустим, мы убрали вызовы %post_ldconfig/%postun_ldconfig из
> spec-файлов.  Как обеспечить, чтобы в системе работал librpm с поддержкой
> post-transaction filetriggers?

Выходит, что никак (по состоянию на 4.0.4-alt95.M41.5-7-g43948fb).
Самое время обсудить, как это можно сделать.

> Как вариант, rpmbuild мог бы добавлять в пакеты зависимость типа
> rpmlib(filetriggers) <= версия
> при наличии в этих пакетах файлов, которые обрабатывает хотя бы один
> %_rpmlibdir/*.filetrigger

By design файлтриггеры являются черными ящиками: в них скрыты как
критерии действия, так и выполнение самого действия.  Значит, мы не
можем определить, для данных пакетов и их файлов, будут ли выполняться
какие-либо триггеры или нет.

Это имеет смысл, потому что триггеры (как и настоящие триггеры в rpmdb)
обладают условной семантикой: _один_ пакет с триггером, если он установлен,
вызывает срабатывание действия на некоторые другие пакеты.  Для rpmdb
триггеров явно перечисляются пакеты, на которые будет срабатывать
триггер; а для файлтриггеров множество пакетов, на которых он будет
срабатывать, заранее неизвестно.

Пример, когда условное срабатывание триггера имеет смысл: пакет содержит
файл /usr/lib/menu/*.  Тогда, если установлен пакет menu, который
содержит /usr/lib/rpm/menu.filetrigger, то этот триггер будет
срабатывать.  Если же пакет menu не установлен, то триггер тоже
не установлен и срабатывать не будет.

При первой установке пакета menu нужно запустить его триггер
в %post-скрипте (потому что некоторые пакеты с /usr/lib/menu/* могут
быть уже установлены).  Это аналогично семантике %triggerin скрипта --
он будет задействован либо когда устанавливаются/обновляются пакеты
"по условию", либо когда изменяется/обновляется "сам пакет с триггером".

Нужно ли добавлять в пакет, который содержит /usr/lib/menu/*,
зависимость на menu.filegrigger?  По-моему, не нужно.

А как быть с ldconfig?  Есть ли тут аналогия с menu и %triggerin?
Вроде бы есть.  Пакет устанавливает в систему разделяему библиотеку.
В системе есть какой-то кеш разделяемых библиотек.  Пусть этот кеш
сам себя обслуживает.  Пакету с библиотекой не интересно, есть там
где-то этот кеш или нет.

Если аналогия с rpmdb триггерами верна и в привлечении этой аналогии
нет просчета, тогда можно двигаться дальше.

Почему срабатывает rpmdb триггер?  Потому что так устроена библиотека
librpm (специальной зависимости указать нельзя, но библиотека librpm
"уже давно" так устроена).  Почему должен сработать
/usr/lib/rpm/menu.filetrigger?  Потому что этот скрипт должен (косвенно)
запуститься из librpm.  Но если в системе установлена старая версия
librpm, то она его не запустит.

Получается, что зависимость вида rpmlib(filetriggers) нужна в пакетах
*с триггерами*, чтобы триггеры гарантированно запускались.

> Плюс зависимость типа
> rpmlib-filetrigger(NAME) при наличии файлов, которые обрабатывает
> %_rpmlibdir/NAME.filetrigger

Наличие нужных триггеров должно обеспечиваться правильными зависимостями
у пакетов.

ldconfig тут является слишком неудачным частным случаем: нельзя, чтобы
пакет rpm зависел (через 0ldconfig.filetrigger) от rpmlib(filetriggers).
Иначе такой пакет rpm будет очень трудно установить.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

  reply	other threads:[~2008-11-08 19:32 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-08 18:51 ` [devel] [SCM] " Dmitry V. Levin
2008-11-08 19:32   ` Alexey Tourbin [this message]
2008-11-09  0:09     ` [devel] " Alexey Tourbin

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=20081108193240.GF8826@altlinux.org \
    --to=at@altlinux.ru \
    --cc=devel@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

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/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 devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git