[devel] kde4games & dep optimizations

Alexey Tourbin at на altlinux.ru
Вс Фев 6 23:55:09 UTC 2011


On Mon, Feb 07, 2011 at 12:27:02AM +0300, Dmitry V. Levin wrote:
> On Sun, Feb 06, 2011 at 06:31:15AM +0300, Alexey Tourbin wrote:
> > Интересно, что тогда дальше делать?  С одной стороны, следовало бы
> > исправить такие пакеты (для этого нужно сначала научиться их
> > диагностировать).  С другой стороны, если мейнтейнерам это в голову не
> > приходит, то может лучше научить rpm автоматически вставлять строгие
> > зависимости туда, где они будут иметь смысл?
> 
> Для того, чтобы проставлять такие зависимости автоматически, нужно
> - научиться диагностировать нехватку таких зависимостей;

Я ещё раз проверил зависмости kde4games, там всё не так глупо.

$ hsh-run -- rpm -e --test kde4games-common
error: removing these packages would break dependencies:
        kde4games-common = 4.5.5-alt1 is needed by kde4games-core-4.5.5-alt1
        kde4games-common = 4.5.5-alt1 is needed by libkdegames4-4.5.5-alt1
$

Зависимости устроены по принципу

%package common
%package -n libkdegames4
Requires: %name-common = %version-%release
%package game1
Requires: %name-common = %version-%release
%package game2
Requires: %name-common = %version-%release
...
%package gameN
Requires: %name-common = %version-%release

То есть, с одной стороны, все зависимости вроде бы строгие.  С другой
стороны, строгой цепочки от kde4games-gameN к libkdegames4 нет.
Смысл этого феномена мне ещё не сосем понятен.  Нельзя ли из всего
этого каким-то образом заключить, что можно добавить (или "усилить")
строгую зависимость на libkdegames4?

> - выдать packager'ам интерфейс для отключения новой автоматики в случае,
>   если она принимает неправильное решение.

Понятно, что автоматика будет работать по принципу: если между двумя
подпакетами есть виртуальная зависимость, но нет строгой зависимости на
имя пакета, то нужно добавить строгую зависимость на имя пакета.

Мне пока известно всего одно необходимое и разумное исключение из этого
правила: пакет gcc4.5 требует libgcc4.5 >= 4.5.1-alt7.  Такая конструкция
позволит сосуществовать старому компилятору gcc4.5 с новой библиотекой
libgcc4.6.  Этот класс случаев, когда зависимость на имя пакета
с библиотекой уже есть, но она специально не строгая, легко учитывать
автоматически.


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