Собирал сегодня libcairo и заметил что apt ставит в чрут scrollkeeper. [at@people ~]$ hsh --no-stuff --init [at@people ~]$ hsh-install fontconfig-devel gtk-doc imake libXrender-devel libdirectfb-devel libfreetype-devel libglitz-devel libpng-devel xorg-cf-files Preparing packages for installation... libexpat-2.0.1-alt0.1 libfreetype-2.3.5-alt2 fontconfig-2.5.0-alt2 Updating fonts cache: [ DONE ] fontconfig-devel-2.5.0-alt2 imake-1.0.1-alt2 libX11-locales-1.1.3-alt7 libdirectfb-1.1.0-alt1 libpng12-1.2.23-alt1 libdirectfb-devel-1.1.0-alt1 libdrm-2.4.0-alt1 libdrm-devel-2.4.0-alt1 libexpat-devel-2.0.1-alt0.1 zlib-devel-1.2.3-alt4 libfreetype-devel-2.3.5-alt2 libXau-1.0.3-alt1 libXdmcp-1.0.2-alt1.0 libxcb-1.1-alt4 libX11-1.1.3-alt7 libXdamage-1.1.1-alt1 libXext-1.0.3-alt2 libXfixes-4.0.3-alt1 libXxf86vm-1.0.1-alt1 libstdc++4.1-4.1.1-alt12 libmesa-7.0.2-alt7 libglitz-0.5.7-alt1 libICE-1.0.4-alt1 libSM-1.0.3-alt1 libXt-1.0.5-alt1 libxcb-devel-1.1-alt4 libXi-1.1.3-alt2 libXmu-1.0.4-alt1 libpng-devel-1.2.23-alt1 sgml-common-0.6.3-alt11 xml-common-0.6.3-alt11 libxml2-2.6.31-alt1 xml-utils-2.6.31-alt1 xorg-cf-files-1.0.2-alt1 libgpg-error-1.5-alt1 libgcrypt-1.4.0-alt2 libxslt-1.1.22-alt1 xsltproc-1.1.22-alt1 crontab-control-1.1-alt1 setproctitle-0.3.1-alt1 vixie-cron-4.1.20060426-alt3 crontabs-1.8-alt1 docbook-dtds-4.4-alt1 docbook-style-xsl-1.71.0-alt1 libscrollkeeper-0.3.14-alt12 logrotate-3.6.2-alt4 scrollkeeper-0.3.14-alt12 libOpenSP-1.5.2-alt1 openjade-1.3.2-alt8 gtk-doc-1.9-alt1 libXrender-0.9.4-alt1 xorg-x11-proto-devel-7.3.0-alt9 libICE-devel-1.0.4-alt1 libSM-devel-1.0.3-alt1 libXdmcp-devel-1.0.2-alt1.0 libXau-devel-1.0.3-alt1 libX11-devel-1.1.3-alt7 libXt-devel-1.0.5-alt1 libXext-devel-1.0.3-alt2 libXfixes-devel-4.0.3-alt1 libXdamage-devel-1.1.1-alt1 libXi-devel-1.1.3-alt2 libXmu-devel-1.0.4-alt1 libXxf86vm-devel-1.0.1-alt1 libmesa-devel-7.0.2-alt7 libglitz-devel-0.5.7-alt1 libXrender-devel-0.9.4-alt1 [at@people ~]$ hsh-shell [builder@people .in]$ rpm -e --test scrollkeeper [builder@people .in]$ rpm -e --test libscrollkeeper scrollkeeper [builder@people .in]$ То есть эти пакеты в чруте лишние и их можно спокойно удалить. [at@people ~]$ hsh-run --rooter -- rpm -ev {,lib}scrollkeeper [at@people ~]$ hsh-install fontconfig-devel gtk-doc imake libXrender-devel libdirectfb-devel libfreetype-devel libglitz-devel libpng-devel xorg-cf-files [at@people ~]$ Какого хрена он их туда ставит особо не понятно. Это особенно плохо потому что мы хотим сделать систему автоматической пересборки необходимых пакетов по замыканию, которое вычисляет apt. То есть например если пришёл новый пакет scrollkeeper то будет выполнена тестовая пересборка libcairo, а на самом деле тестовая пересборка libcairo не нужна. Просто apt с какого-то хрена ставит в чрут scrollkeeper.
Дело в том, что $ rpmquery -R gtk-doc |fgrep scrollkeeper scrollkeeper
Точно. С другой стороны, [builder@people .in]$ rpm -q --whatrequires scrollkeeper warning: no package requires scrollkeeper [builder@people .in]$ rpm -qR gtk-doc |grep scrollkeeper scrollkeeper [builder@people .in]$ Зависимость на scrollkeeper в gtk-doc прописана так: Requires(post,postun): scrollkeeper То есть требуется только для запуска макросов %update_scrollkeeper и %clean_scrollkeeper, а для работы не требуется. При этом мкросы раскрываются как $ rpm --eval %update_scrollkeeper [ -x /usr/bin/scrollkeeper-update ] && /usr/bin/scrollkeeper-update -q ||: $ rpm --eval %clean_scrollkeeper [ "$1" = 0 -a -x /usr/bin/scrollkeeper-update ] && /usr/bin/scrollkeeper-update -q ||: $ То есть у них тоже необязательный запуск. А теперь внимание, сюрприз: $ rpm -qf /usr/bin/scrollkeeper-update librarian-0.7.0-alt6 $ rpm -qR librarian |grep scrollk $ Казалось бы, при чем здесь scrollkeeper. Я всё больше склоняюсь к мысли, что нужно сделать (безусловный) автоматический поиск зависимостей в %post/%pre скриптах, а вручную зависимости _вообще_ не писать. А макросы для %pre/%post скриптов можно написать достаточно аккуратно, чтобы зависимости искались как надо (или, наоборот, не искались, как следовало бы сделать в данном случае). $ sudo apt-get install scrollkeeper Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: libscrollkeeper The following packages will be REMOVED: gnumeric librarian yelp The following NEW packages will be installed: libscrollkeeper scrollkeeper 0 upgraded, 2 newly installed, 3 removed and 1 not upgraded. Need to get 0B/272kB of archives. After unpacking 30.9MB disk space will be freed. Do you want to continue? [Y/n] Что-то бред какой-то. [at@people RPMS]$ hsh-install gnumeric librarian yelp scrollkeeper Reading Package Lists... Building Dependency Tree... Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: librarian: Obsoletes: scrollkeeper (< 0.3.14.rarian) scrollkeeper: PreDepends: libscrollkeeper (= 0.3.14-alt12) Depends: libscrollkeeper.so.0()(64bit) E: Broken packages hsh-install: failed to calculate package file list. hsh-install: Failed to generate package file list. [at@people RPMS]$
(In reply to comment #2) > А теперь внимание, сюрприз: > > $ rpm -qf /usr/bin/scrollkeeper-update > librarian-0.7.0-alt6 > $ rpm -qR librarian |grep scrollk > $ > > Казалось бы, при чем здесь scrollkeeper. > > $ sudo apt-get install scrollkeeper > Reading Package Lists... Done > Building Dependency Tree... Done > The following extra packages will be installed: > libscrollkeeper > The following packages will be REMOVED: > gnumeric librarian yelp > The following NEW packages will be installed: > libscrollkeeper scrollkeeper > 0 upgraded, 2 newly installed, 3 removed and 1 not upgraded. > Need to get 0B/272kB of archives. > After unpacking 30.9MB disk space will be freed. > Do you want to continue? [Y/n] > > Что-то бред какой-то. > > [at@people RPMS]$ hsh-install gnumeric librarian yelp scrollkeeper > Reading Package Lists... > Building Dependency Tree... > Some packages could not be installed. This may mean that you have > requested an impossible situation or if you are using the unstable > distribution that some required packages have not yet been created > or been moved out of Incoming. > The following information may help to resolve the situation: > > The following packages have unmet dependencies: > librarian: Obsoletes: scrollkeeper (< 0.3.14.rarian) > scrollkeeper: PreDepends: libscrollkeeper (= 0.3.14-alt12) > Depends: libscrollkeeper.so.0()(64bit) > E: Broken packages > hsh-install: failed to calculate package file list. > hsh-install: Failed to generate package file list. > [at@people RPMS]$ 2ktirf: Что делают в Сизифе пакеты *scrollkeeper*?
Кстати вызов %update_scrollkeeper происходит для пакета gtk-doc-manual: %post manual %update_scrollkeeper %postun manual %clean_scrollkeeper А зависимость на scrollkeeper стоит в пакете gtk-doc. Как бы всю эту лавочку разом прикрыть. Потому что людишки когда вручную пишут ошибаются безбожно, да и сам я аз есмь тово. $ rpm -q --scripts gtk-doc $ rpm -qR gtk-doc |grep scrollk scrollkeeper $
gtk-doc не должен содержать вызовы этих скриптов и требовать scrollkeeper, это отдельный баг. Что касается взаимоотношений librarian и scrollkeeper, они просты: librarian - это нестабильное замещение scrollkeeper, с предоставлением обратной совместимости по вызовам. Scrollkeeper потихоньку доживает свой век, но пока стабильнее, чем librarian; кроме того, librarian нет в бранче, есть только scrollkeeper.