From: Alexey Tourbin <at@altlinux.ru> To: devel@lists.altlinux.org Subject: [devel] kde4games & dep optimizations Date: Sun, 6 Feb 2011 06:31:15 +0300 Message-ID: <20110206033115.GE22517@altlinux.org> (raw) Новый rpm выполняет оптимизацию зависимостей между подпакетами: если пакет A содержит строгую зависимость на libA (Requires: libA = %version-%release), то все остальные зависимости пакета A, которые разрешаются в libA, - например Requires: libA.so.0, - удаляются. В этом примере названия пакетов A и libA условны, оптимизация работает для пакетов с любыми именами (я выбрал имена A и libA, чтобы пример был интуитивно понятнее). Оптимизация в том числе выстраивает цепочки строгих зависимостей: A -> libA0 -> libA1 -> ... libAN, чтобы удалить лишние зависимости пакета A, разрешающиеся в libAN (в случае, если пакет A требует только libA0, но libA0 в свою очередь требует libA1 и т.д.) К сожалению, для некоторых пакетов эта оптимизация не сработает, потому что у этих пакетов нет строгих зависимостей между подпакетами. Как ни странно, одним из первых пакетов такого рода мне попался kde4games (в то время как kde4 у нас собирается с очень жесткими зависимостями). $ hsh-install kde4games-bovo ... $ hsh-run -- rpm -e --test libkdegames4 error: removing these packages would break dependencies: libkdegames.so.5()(64bit) >= set:okXdnAZtmOhWJfrPk02zqtrC0apKQoS0 is needed by kde4games-bovo-4.5.5-alt1 $ hsh-run -- rpm -q --qf '%{SOURCERPM}\n' kde4games-bovo libkdegames4 kde4games-4.5.5-alt1.src.rpm kde4games-4.5.5-alt1.src.rpm $ Отсюда видно, что подпакеты kde4games-bovo и libkdegames4 собираются из одного исходного пакета, и между ними существует soname-зависимость с set-версией; но в тоже время нет ни одной строгой зависимости на имя пакета с библиотекой - ни прямой, ни по цепочке. Таким образом, во всех kde4games-* подпакетах не удастся соптимизировать дорогостоящую зависимость с set-версией (которая занимает больше места, и для проверки которой будет выполняться rpmsetcmp) на более строгую и дешевую зависимость - имя пакета с версией (для проверки такой версии обычно будет достаточно strcmp). Получается, что мои усилия по оптимизации зависимостей во многом бесполезны, потому что некоторые толстые пакеты собраны не по понятиям. Интересно, что тогда дальше делать? С одной стороны, следовало бы исправить такие пакеты (для этого нужно сначала научиться их диагностировать). С другой стороны, если мейнтейнерам это в голову не приходит, то может лучше научить rpm автоматически вставлять строгие зависимости туда, где они будут иметь смысл?
next reply other threads:[~2011-02-06 3:31 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-02-06 3:31 Alexey Tourbin [this message] 2011-02-06 21:27 ` Dmitry V. Levin 2011-02-06 23:55 ` Alexey Tourbin 2011-02-07 0:07 ` Dmitry V. Levin 2011-02-08 5:13 ` Alexey Tourbin 2011-02-12 13:13 ` Alexey Tourbin 2011-02-14 14:15 ` Sergey V Turchin
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=20110206033115.GE22517@altlinux.org \ --to=at@altlinux.ru \ --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