[devel] design-graphics-desktop-4.0-alt0.1 symlinks.req

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Сен 12 13:50:29 MSD 2007


On Wed, Sep 12, 2007 at 01:16:49PM +0400, Anton Farygin wrote:
> Это выглядит странно:
> @@ -19337,2 +19611,3 @@
>   design-graphics-desktop-4.0-alt0.1     Requires 
> /etc/alternatives/packages.d
> +design-graphics-desktop-4.0-alt0.1     Requires 
> /usr/share/wallpapers
>   design-graphics-desktop-4.0-alt0.1     Requires(interp)        /bin/sh

В пакете design-graphics-desktop имеется симлинк
/usr/share/design/desktop/backgrounds/more -> ../../../wallpapers

Я реализовал поиск зависимостей на все "битые" симлинки (другими
словами, поиск зависимостей на все симлинки, которые смотрят за
пределы пакета).  Как определить, что симлинк смотрит за пределы
пакета, я сейчас объяснять не буду.  Это не совсем тривиально,
хотя и не очень сложно.  Суть в том, что можно довольно точно
определить, что симлинк смотрит за пределы пакета, и узнать его
"канонический" таргет.

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

Далее запускается поиск зависимостей на таргет симлинка,
через стандартную процедуру /usr/lib/rpm/find-package.

Каталог /usr/share/wallpapers принадлежит более чем одному пакету.

$ rpm -qf /usr/share/wallpapers
wallpapers-mike-20030214-alt0.2.1
wallpapers-piter_xix-0.1-alt1
wallpapers-orange-0.1-alt0.1.1
wallpapers-gc-0.1-alt2
wallpapers-lav-20030331-alt1.1
wallpapers-landscapes-1-alt1
wallpapers-nordnature-1-alt1.1
kde-common-3.5.5-alt1
$

Поэтому алгоритм find-package проставляет "raw" зависимость
на /usr/share/wallpapers.  На самом деле идет поиск через недавно
реализованный в hasher contents_index_all, хотя в данном случае он
не дает ничего нового.

symlinks.req: /usr/src/tmp/design-graphics-desktop-buildroot/usr/share/design/desktop/backgrounds/more: checking contents_index_all for /usr/share/wallpapers
symlinks.req: /usr/src/tmp/design-graphics-desktop-buildroot/usr/share/design/desktop/backgrounds/more: /usr/share/wallpapers -> /usr/share/wallpapers (via contents_index_all)

Думаю, что ничего подозрительного в данном случае нету.  Цель здесь
не только в поиске зависимостей, но и в защите от битых симлинков.
Пакет с битым симлинком теперь не удастся установить по зависимостям,
пока кто-то не начнет предоставлять таргет симлинка.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20070912/9b689096/attachment-0002.bin>


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