ALT Linux Team development discussions
 help / color / mirror / Atom feed
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 --]

  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