[devel] файловые зависимости на раскрытые альтернативы
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Вт Авг 19 17:06:49 MSD 2008
On Tue, Aug 19, 2008 at 04:09:38PM +0400, Valery V. Inozemtsev wrote:
> собственно subj
> $ rpmquery -R kdebase-wm-3.5.9-alt10 | grep Term
> /usr/share/design/Terminal/kde/kicker/pics/kside.png
> /usr/share/design/Terminal/kde/kicker/pics/kside_tile.png
> /usr/share/design/Terminal/kde/ktip-wizard_small.png
> /usr/share/design/Terminal/kde/splash/pics
>
> и в результате хотим design-graphics-terminal. ну и риторический вопрос - на
> что повесить что нибудь неподъемное?
Собак на меня можно вешать.
Дело тут вот какое. Когда идёт поиск зависимостей на относительные
симлинки, то сначала создаётся полный путь. Потом идёт поиск
зависимостей по полному пути -- см. /usr/lib/rpm/symlinks.req
В kdedabse-wm имеем симлинк
/usr/share/apps/kdewizard/pics/wizard_small.png -> ../../../design-current/kde/ktip-wizard_small.png
Тогда создаётся путь
/usr/share/apps/kdewizard/pics/../../../design-current/kde/ktip-wizard_small.png
Каждый компонент пути пробивается на предмет альтернатив -- см.
/usr/lib/rpm/find-package
Происходит вот что:
+ '[' -L /usr/share/apps/kdewizard/pics/../../../design-current/kde/ktip-wizard_small.png ']'
+ p=/usr/share/apps/kdewizard/pics/../../../design-current/kde
+ set +x
+ '[' -L /usr/share/apps/kdewizard/pics/../../../design-current/kde ']'
+ p=/usr/share/apps/kdewizard/pics/../../../design-current
+ set +x
+ '[' -L /usr/share/apps/kdewizard/pics/../../../design-current ']'
+ p=/usr/share/apps/kdewizard/pics/../../..
+ set +x
+ '[' -L /usr/share/apps/kdewizard/pics/../../.. ']'
+ p=/usr/share/apps/kdewizard/pics/../..
+ set +x
+ '[' -L /usr/share/apps/kdewizard/pics/../.. ']'
+ p=/usr/share/apps/kdewizard/pics/..
+ set +x
+ '[' -L /usr/share/apps/kdewizard/pics/.. ']'
+ p=/usr/share/apps/kdewizard/pics
+ set +x
+ '[' -L /usr/share/apps/kdewizard/pics ']'
+ p=/usr/share/apps/kdewizard
+ set +x
+ '[' -L /usr/share/apps/kdewizard ']'
+ p=/usr/share/apps
+ set +x
+ '[' -L /usr/share/apps ']'
+ p=/usr/share
+ set +x
+ '[' -L /usr/share ']'
+ p=/usr
+ set +x
+ '[' -L /usr ']'
+ p=
+ set +x
Путь /usr/share/design-current является альтернативой.
Если бы сработала проверка
[ -L /usr/share/apps/kdewizard/pics/../../../design-current ]
то вместо раскрытой зависимости на альтернативу типа
/usr/share/design/Terminal/kde/kicker/pics/kside.png
появилась бы всего лишь зависимость на альтернативный каталог
/usr/share/design-current
К сожалению, проверка
[ -L /usr/share/apps/kdewizard/pics/../../../design-current ]
не срабатывает. Легко понять, почему: промежуточных компонентов пути,
из которых мы потом выбираемся через ../.. , просто не существует.
$ [ -L /usr/share/apps/kdewizard/pics/../../../design-current ] || echo no
no
$ ls -l /usr/share/design-current
lrwxrwxrwx 1 root root 49 May 1 13:11 /usr/share/design-current -> /etc/alternatives/links/|usr|share|design-current/
$ l /usr/share/apps/kdewizard
ls: cannot access /usr/share/apps/kdewizard: No such file or directory
$
Мне казалось, что я придумал правильную стратегию разрешения путей
для поиске файловых зависимостей (с учетом альтернатив, отличия между
хост-системой и RPM_BUILD_ROOT, и т.д.), а всё-таки она лажается.
*Разводит руками*
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20080819/958a0d7a/attachment-0002.bin>
Подробная информация о списке рассылки Devel