[devel] CMFQuickInstallerTool-1.5.3-alt1 strong semi-unmets

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Сен 12 14:46:34 MSD 2007


> @@ -257,4 +257,9 @@
>  CMFFormController-1.0.4-alt1	Requires(rpmlib)	rpmlib(PayloadFilesHavePrefix) <= 4.0-1
> +CMFQuickInstallerTool-1.5.3-alt1	Requires	/etc/init.d/zope
> +CMFQuickInstallerTool-1.5.3-alt1	Requires	/usr/share/debconf/confmodule
>  CMFQuickInstallerTool-1.5.3-alt1	Requires	CMF
>  CMFQuickInstallerTool-1.5.3-alt1	Requires	Zope-Modules
> +CMFQuickInstallerTool-1.5.3-alt1	Requires	dpkg
> +CMFQuickInstallerTool-1.5.3-alt1	Requires	findutils
> +CMFQuickInstallerTool-1.5.3-alt1	Requires	gawk
>  CMFQuickInstallerTool-1.5.3-alt1	Requires	make

Пакет CMFQuickInstallerTool заслуживает внимания по двум причинам --
общей и частной.

Общая причина это классификация полу-анметов.  Обратим внимание на
зависимость /etc/init.d/zope.  Она появляется при обработке файла
/usr/lib/zope/lib/python/Products/CMFQuickInstallerTool/debian/postinst.
Вообще-то этот файл, вероятно, запакован по ошибке.  Но с точки зрения
общей причины это сейчас не важно.  Этот файл является простым #!/bin/sh
скриптом; на нём не стоит бита -x, поэтому раньше зависимости не
искались, а теперь будут искаться.

В этом файле исползуется /etc/init.d/zope:
./usr/lib/zope/lib/python/Products/CMFQuickInstallerTool/debian/postinst: test "$RET" = "true" && /etc/init.d/zope restart

На самом деле в пакете Zope-ZUtils находится файл /etc/rc.d/init.d/zope.
Это тот же самый файл, но у него отличается канонический путь.  Поэтому
образуется "сильный полу-анмет" на /etc/init.d/zope.

Таким образом, это приводит меня к следующей классификации полу-анметов.

Слабый полу-анмет: зависимость типа /путь, которая явно не
предоставляется ни одним пакетом, но некоторые пакеты содержат
соответствующие файлы /путь, при явном совпадении канонических путей.
Такие пакеты при некоторых условиях всё еще можно поставить через
apt-get, а в противном случае можно установить через rpm.
Пример слабого полу-анмета: Requires: /etc/rc.d/init.d/zope

Сильный полу-анмет: зависимость типа /путь1, которая явно не
предоставляется ни одним пакетом; файл /путь1 не содержится ни
в одном пакете; но некоторые пакеты содержат файл /путь2;
каноникализация /путь1 и /путь2 дает один и тот же путь.  Такие пакеты
нельзя установить с помощью apt-get, и в некоторых случаях также нельзя
установить через rpm.  Пакет с сильным полу-анметом /путь1 можно
поставить в хост систему только тогда, когда пакет с файлом /путь2 УЖЕ
УСТАНОВЛЕН.  Пример сильного полу-анмета: Requires: /etc/init.d/zope

То есть встает вопрос каноникализации путей в процессе поиска
зависимостей.  Я реализовал в пост-alt78 бранче mod DWIM-хак,
который как раз направлен против сильных полу-анметов, называется
CanonPath.  Во многих случаях он делает как раз то, что нужно, но
полной гарантии супротив сильных полу-анметов нету.


Частная же причина состоит в появлении анмета на /usr/share/debconf/confmodule.

./usr/lib/zope/lib/python/Products/CMFQuickInstallerTool/debian/postinst:. /usr/share/debconf/confmodule
./usr/lib/zope/lib/python/Products/CMFQuickInstallerTool/debian/config:. /usr/share/debconf/confmodule

shell.req: /usr/src/tmp/CMFQuickInstallerTool-buildroot/usr/lib/zope/lib/python/Products/CMFQuickInstallerTool/debian/postinst: /usr/share/debconf/confmodule -> /usr/share/debconf/confmodule (raw, not found)

По-видимому, каталог debian/ всё же запакован по ошибке.
Если хотите паковать дебиановские скрипты, будьте готовы к дебиановским
зависимостям.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?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/f4c06de3/attachment-0002.bin>


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