Здравствуйте Alexey Tourbin В сообщении от Суббота 15 сентября 2007 Alexey Tourbin написал(a): > On Thu, Sep 13, 2007 at 12:08:25AM +0400, Хихин Руслан wrote: > > Здравствуйте Alexey Tourbin > > > А зачем? Мы обсуждали это на конференции. Если явно указывать > дизъюнкцию, то она получается "закрытой" во времени, к ней нельзя > ничего присоединить. Напр. Requires: gcc3.4|gcc4.1. Ну, при следующей пересборке пакета она легко присоединяется. > А можно длеать "открытую" дизъюнкцию на основе виртуальных > зависимостей, > типа Requires: /usr/bin/gcc. К ней потом можно будет задним числом > "подшить" gcc4.2, и скорее всего такая семантика более преемлема > с точки зрения репозитария в целом. Не всегда зависимость определяется общим файлом - чаще - это различный набор интерфейса. > Вообще у меня была идея, что с помощью дополнительных виртуальных > зависмостей (иногда с помощью явного умножения числа сущностей) > можно выразить на зависимостях любую булеву функцию. > См. теорему Поста о полноте системы булевых функций. > Например мы хотим выразить функцию Requires: mysql xor postgresql. > > Делаем пакеты > %package only-postgresql > Requires: postgresql-server > Conflicts: mysql-server > Provides: postgresql-xor-mysql > > %package only-mysql > Requires: mysql-server > Conflicts: postgresql-server > Provides: postgresql-xor-mysql > > В основном пакете пишем > Requires: postgresql-xor-mysql > > То есть дислексия при выражении зависимостей присутствует, но в > принципе > система вроде бы полна. Это мне понятно - дизъюнкционная зависимость и Provides это разные формы отбражения одного и того-же. Вопрос стоит именно о возможности хранить такую информацию не в куче пакетов, собираемых разными людьми, а в одном пакете. Особенно полезно с учётом того, что дизъюнкция выполняется при первой истине. -- С уважением Хихин Руслан