From: "Dmitry V. Levin" <ldv@altlinux.org> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: Re: [devel] non-strict dependency in apache2 (was: non-strict dependency warnings) Date: Thu, 24 Jan 2013 23:15:54 +0400 Message-ID: <20130124191554.GB11370@altlinux.org> (raw) In-Reply-To: <51017634.6030605@solin.spb.ru> [-- Attachment #1: Type: text/plain, Size: 8702 bytes --] On Thu, Jan 24, 2013 at 09:58:12PM +0400, Aleksey Avdeev wrote: > 24.01.2013 15:25, Dmitry V. Levin пишет: > > On Thu, Jan 24, 2013 at 02:47:26PM +0400, Aleksey Avdeev wrote: > >> 24.01.2013 10:44, Dmitry V. Levin пишет: > >> ... > >>> В rpm-build-4.0.4-alt100.61 этот warning превратился в error, > >>> и добавлен макрос %_allowed_nonstrict_interdeps для тонкой настройки > >>> списка разрешенных пар нестрогих зависимостей: > >>> %define _allowed_nonstrict_interdeps pkg11,pkg12 ... pkgN1,pkgN2 > >> > >> Прошу уточнения: > >> > >> 1. Имеется в виду, что пакет из данного списка может иметь нестрогие > >> зависимости на любой другой пакет из него же? > >> > >> 2. В каком виде должны присутствовать имена пакетов в списке: > >> %name-<subname> или достаточно <subname>? > > > > Имеется в виду, что каждый случай применения этого макроса стоит проводить > > через обсуждение в этом списке, хотя бы только для того, чтобы убедиться, > > что нестрогие зависимости в данном конкретном пакете действительно имеют > > смысл, а не являются следствием приземления благих намерений. > > Тогда давайте обсуждать apache2, то что сейчас собираю (см. > <http://git.altlinux.org/people/solo/packages/apache2.git?p=apache2.git;a=blob;f=apache2.spec;h=c9e9fad9fb4dc01789edc90d6757de8c77b734dd;hb=ALT/apache2/spec>): > > error: apache2: non-strict dependency on apache2-cgi-bin > error: apache2: non-strict dependency on apache2-html > error: apache2: non-strict dependency on apache2-icons > > Вызвано зависимостями: > > Requires: webserver-cgi-bin > Requires: webserver-html > Requires: webserver-icons > > Данные зависимости предоставляют не только пакеты > apache2-{cgi-bin,html,icons}, но и apache-{cgi-bin,html,icons}. И пакету > apache2 _действительно_ всё равно, какие именно пакеты данные > зависимости реализуют. Нам действительно нужно много разных вариантов apache*-{cgi-bin,html,icons}? От этого действительно может быть какая-то польза? Или все это разнообразие упаковывается просто потому, что это возможно? > error: apache2-base: non-strict dependency on apache2-common > > apache2-base это в основном сборище конфигов, каталогов и пр. не > исполняемых файлов. Бинарные вспомогательные утилиты там тоже есть, но > от бинарного содержимого apache2-common (и его ABI) они не зависят. > Несовместимости учтены зависимостями вида > Requires: %name-common > 2.2.22-alt11 в самом пакете и конфликтами вида > Conflicts: apache2-base <= 2.2.22-alt11 в apache2-common. Есть ли смысл использовать apache2-base и apache2-common от разных сборок одновременно? Мне кажется, что здесь чем проще, тем лучше. > error: apache2-base: non-strict dependency on apache2-httpd-worker > error: apache2-base: non-strict dependency on apache2-httpd-prefork > error: apache2-base: non-strict dependency on apache2-httpd-event > error: apache2-base: non-strict dependency on apache2-httpd-itk > error: apache2-base: non-strict dependency on apache2-httpd-peruser > > Вызвано требованием: > > Requires: %apache2_sbindir/%apache2_dname > > т. к. файл %apache2_sbindir/%apache2_dname альтернатива, предоставляемая > всеми перечисленными подпакетами > (apache2-httpd-{worker,prefork,event,itk,peruser}). Вот это очень похоже на реальную альтернативу, где неявность зависимости объективно связана с возможностью осмысленного выбора. > error: apache2-configs-A1PROXIED: non-strict dependency on apache2-base > error: apache2-configs-A1PROXIED: non-strict dependency on apache2-common > > Комплект конфигов. Совместимость учтена через зависимости. Не понимаю. > error: apache2-httpd-worker: non-strict dependency on apache2-common > error: apache2-httpd-prefork: non-strict dependency on apache2-common > error: apache2-httpd-event: non-strict dependency on apache2-common > error: apache2-httpd-itk: non-strict dependency on apache2-common > error: apache2-httpd-peruser: non-strict dependency on apache2-common > > Фактически, здесь недолинкованные библиотеки (модули > в apache2-common) зависят от бинарников, подставляемых пакетми > apache2-httpd-{worker,prefork,event,itk,peruser} через альтернативу > %apache2_sbindir/%apache2_dname (/usr/sbin/httpd2), но направление > зависимостей выставлено обратным. Т. е. для rpm не модули > (apache2-common) зависят от исполняемых бинарников (/usr/sbin/httpd2), > что имеет место быть по факту, а бинарники (пакеты apache2-httpd-*) от > модулей (apache2-common). (Пакет apache2-common выбран центральной > сущностью.) > > От проблем защищают: > > 1. Привязка к конкретному MMU (Module Magic Number, см. > <http://httpd.apache.org/docs/2.2/glossary.html>) (apache2-common > предоставляет %name-mmn = %mmn, а apache2-httpd-* его _строго_ требуют). > > 2. Есть защита от использования не той libaprutil1, через: > > а) Requires: libaprutil1 >= %n_aprutil_devel_ver в apache2-common > (%n_aprutil_devel_ver соответствует версии-релизу пакета > libaprutil1-devel использованного при сборке). > > б) Автозависимость вида libaprutil-1.so.0()(64bit) >= set:... (наши > set-version, или как их назвать правильно) в пакетах > apache2-httpd-{worker,prefork,event,itk,peruser}. > > Т. е. сейчас я считаю что пакет libaprutil1 такой-же или более новый чем > libaprutil1-devel использованный при сборке, скорее всего подойдёт для > модулей (в apache2-common). (С пакетами apache2-httpd-* проще -- там > set-version работает.) > > Понятно что это тонкое место, и что для модулей нужно делать > автогенирацию нечто подобного /usr/sbin/httpd2 >= set:... (по аналогии > set-version сделанного для библиотек), но я не знаю как подступиться к > данной задачи. > > Что здесь стоит сделать (могу, достаточно быстро): > > 1. Удалить устаревшие, не актуальные, условия (например, сейчас по > факту, от libssl зависит только apache2-mod_ssl). > > 2. Сделать защиту от использования не той libapr1 (по аналогии > сделанного для libaprutil1). > > 3. Сделать привязку к версии libpcre (требуется apache2-httpd-*, для > apache2-common похоже не нужно, но может потребоваться другим модулям). Мне кажется, что здесь было бы вполне естественно просто поставить строгую зависимость apache2-httpd-* на apache2-common; мы ведь практически ничего не выигрываем от того, что существует возможность одновременно установить apache2-httpd-worker и apache2-common от разных сборок. > > error: apache2-manual: non-strict dependency on apache2-base > error: apache2-manual: non-strict dependency on apache2-common > > Это контент. Заведомо будет работать с любыми совместимыми версиями > (задано нестрогими зависимостями и конфликтами). И в каких случаях такая свобода выбора могла бы быть полезна? > error: apache2-mod_ldap: non-strict dependency on apache2-common > > Фактические требования модуля совпадают с требованием модулей > находящихся в apache2-common. Но т. к. apache2-common выбран центральной > сущностью -- все завязано на него. Модуль не зависит от > %apache2_sbindir/%apache2_dname, но требуют: > > PreReq: %name-common > Requires: %name-mmn = %mmn > Requires: libaprutil1-ldap >= %n_aprutil_devel_ver > > error: apache2-mod_disk_cache: non-strict dependency on apache2-common > error: apache2-mod_ssl: non-strict dependency on apache2-common > error: apache2-suexec: non-strict dependency on apache2-common > > Практически аналогично apache2-mod_ldap. (Но похоже нужно использовать > Requires: libaprutil1 >= %n_aprutil_devel_ver -- сейчас зависимости на > libaprutil1 сдесь нет.) Опять же, не вижу, какая могла бы быть польза в возможность одновременно установить эти пакеты и apache2-common от разных сборок. > error: apache2-compat: non-strict dependency on apache2-base > error: apache2-compat: non-strict dependency on apache2-common > error: apache2-mod_ssl-compat: non-strict dependency on apache2-common > > Конфиги. С бинарниками напрямую не связанны. Oт apache2-{base,common} > нужна инфроструктура и работающие с ней утилиты. > > error: apache2-cgi-bin-test-cgi: non-strict dependency on apache2-datadirs > error: apache2-cgi-bin-printenv: non-strict dependency on apache2-datadirs > > CGI скрипты. С бинарниками напрямую не связанны. > > error: apache2-htcacheclean: non-strict dependency on apache2-mod_disk_cache > > Обусловлено требованием каталога, содержащегося > в apache2-mod_disk_cache: > > Requires: %apache2_htcacheclean_cachepath За исключением альтернативных провайдеров %apache2_sbindir/%apache2_dname, все это выборное разнообразие выглядит самым что ни на есть сферическим индейцем в вакууме. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
next prev parent reply other threads:[~2013-01-24 19:15 UTC|newest] Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-01-03 16:40 [devel] samba Led 2013-01-03 22:36 ` Alexey Shabalin 2013-01-03 22:45 ` Led 2013-01-04 9:55 ` Alexey Shabalin 2013-01-23 20:14 ` [devel] non-strict dependency warnings Dmitry V. Levin 2013-01-23 21:05 ` Igor Vlasenko 2013-01-24 6:44 ` Dmitry V. Levin 2013-01-24 10:47 ` Aleksey Avdeev 2013-01-24 11:25 ` Dmitry V. Levin 2013-01-24 17:58 ` [devel] non-strict dependency in apache2 (was: non-strict dependency warnings) Aleksey Avdeev 2013-01-24 19:15 ` Dmitry V. Levin [this message] 2013-01-24 23:19 ` [devel] non-strict dependency in apache2 Aleksey Avdeev 2013-01-24 23:37 ` Dmitry V. Levin 2013-01-25 0:48 ` Aleksey Avdeev 2013-01-25 8:53 ` Dmitry V. Levin 2013-01-25 10:11 ` Aleksey Avdeev 2013-01-26 9:22 ` [devel] %_allowed_nonstrict_interdeps (was: non-strict dependency warnings) Aleksey Avdeev 2013-01-24 6:46 ` [devel] non-strict dependency warnings Dmitry V. Levin 2013-01-24 11:21 ` Dmitry V. Levin 2013-01-24 16:00 ` Dmitry V. Levin 2013-01-24 16:22 ` Led 2013-01-24 22:16 ` [devel] %EVR macro Dmitry V. Levin 2013-01-24 22:37 ` Led 2013-01-24 23:21 ` Aleksey Avdeev 2013-01-24 12:07 ` [devel] non-strict dependency warnings Igor Vlasenko 2013-01-24 6:53 ` [devel] dependency needs Epoch warnings Dmitry V. Levin 2013-01-24 7:09 ` Yuri N. Sedunov 2013-01-24 7:16 ` Dmitry V. Levin 2013-01-24 7:24 ` Yuri N. Sedunov 2013-01-24 10:25 ` Aleksey Avdeev 2013-01-24 11:31 ` Dmitry V. Levin 2013-01-24 12:21 ` Aleksey Avdeev 2013-01-24 16:52 ` Dmitry V. Levin 2013-01-24 21:44 ` [devel] Зависимости между apache2-httpd-* и apache2-{mod_*,common} (was: dependency needs Epoch warnings) Aleksey Avdeev 2013-01-24 21:47 ` Dmitry V. Levin 2013-01-24 22:26 ` [devel] Зависимости между apache2-httpd-* и apache2-{mod_*,common} Aleksey Avdeev 2013-01-24 21:53 ` [devel] Зависимости между apache2-httpd-* и apache2-{mod_*,common} (was: dependency needs Epoch warnings) Dmitry V. Levin 2013-01-24 22:31 ` [devel] Зависимости между apache2-httpd-* и apache2-{mod_*,common} Aleksey Avdeev 2013-01-24 12:15 ` [devel] dependency needs Epoch warnings Igor Vlasenko 2013-01-23 22:29 ` [devel] non-strict dependency warnings Led 2013-01-23 22:37 ` Dmitry V. Levin 2013-01-23 22:43 ` Led 2013-01-24 11:57 ` [devel] Рано поднимать до error (was: non-strict dependency warnings) Sergey V Turchin 2013-01-24 12:23 ` [devel] Рано поднимать до error Aleksey Avdeev 2013-01-24 12:31 ` [devel] non-strict dependency warnings Dmitry V. Levin 2013-01-24 12:55 ` Sergey V Turchin 2013-01-24 14:49 ` Dmitry V. Levin 2013-01-24 14:59 ` Sergey V Turchin 2013-01-26 8:49 ` [devel] Рано поднимать до error REAL 2013-01-26 10:39 ` Dmitry V. Levin 2013-01-26 17:36 ` Aleksey Avdeev 2013-01-26 19:07 ` Sergey Vlasov 2013-01-26 20:08 ` [devel] non-strict deps Dmitry V. Levin 2013-01-26 20:39 ` Dmitry V. Levin 2013-01-26 23:31 ` Igor Zubkov 2013-01-26 23:56 ` Dmitry V. Levin 2013-01-27 0:25 ` Led 2013-01-27 0:37 ` [devel] gear-rules Dmitry V. Levin 2013-01-27 0:56 ` Led 2013-01-27 1:01 ` Dmitry V. Levin 2013-01-27 1:09 ` Led 2013-01-30 0:50 ` [devel] non-strict deps Igor Zubkov 2013-01-30 0:55 ` Dmitry V. Levin 2013-01-26 20:38 ` [devel] Рано поднимать до error Aleksey Avdeev 2013-01-27 7:00 ` Sergey Vlasov 2013-01-04 1:58 ` [devel] samba REAL 2013-01-04 11:06 ` [devel] llvm Dmitry V. Levin 2013-01-04 15:32 ` REAL 2013-01-04 15:24 ` Valery V. Inozemtsev 2013-01-05 5:13 ` REAL 2013-01-05 9:43 ` Dmitry V. Levin
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=20130124191554.GB11370@altlinux.org \ --to=ldv@altlinux.org \ --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