Может ли `Build-Depends:` указать более старую версию пакета?

Мой пакет зависит от foo следующим образом:

Build-Depends: foo (>= 2.99.2)

Однако я обнаружил, что из-за поломки API foo v2.99.3 и 2.99.4 вызывают несовместимость со сборкой моего пакета.

Могу ли я указать поле Build-Depends, в котором указано, что он может извлекать только версию 2.99.2? (не выше и не ниже)

Я просто пробовал foo (= 2.99.2), но это не работает. Там написано Unmet build-dependency in source.


person knocte    schedule 13.07.2015    source источник


Ответы (2)


Да, вы можете указать точную версию с помощью = (соответствующий раздел политики)< /а>.

Это не совсем ясно, но у вас могут возникнуть проблемы, потому что версия foo имеет версию Debian; то есть вся версия может быть 2.99.2-3 или тому подобное. Если вам нужна точная версия, вам нужно указать точную версию.

Если это так, вы можете сделать что-то вроде foo (>= 2.99.2), foo (<< 2.99.3), чтобы охватить весь диапазон 2.99.2 с.

Отредактировано для добавления: я предполагал, что у вас уже была установлена ​​необходимая версия, но использование вами слова «тянуть» заставило меня задуматься, не связана ли ваша проблема с подходящей стороной. Возможно, вы используете инфраструктуру сборки, такую ​​как pbuilder, которая пытается автоматически установить свои сборки-зависимости, и автоматическая установка — это та часть, которая терпит неудачу. Если это так, вам нужно либо сделать версию 2.99.2 доступной через ваши источники apt, либо установить ее вручную в вашей среде сборки перед сборкой.

person the paul    schedule 14.07.2015

Если поломка API носит временный характер, например, из-за ошибок, вы можете использовать Build-Conflicts для этих конкретных версий, но вам, возможно, придется обрабатывать все возможные версии и т. д. В Debian мы обычно не рассматриваем такие случаи, и предположить, что для временных ошибок, они должны быть исправлены в любом случае. В противном случае мы можем попасть в очень запутанные отношения зависимости.

Если это постоянная поломка API, и это часть дистрибутива, вам нужно будет обновить свой пакет, запросить восстановление поломки API в зависимости сборки или упаковать старую зависимость сборки под другим именем, обычно нет путь вокруг этого.

Если вместо этого это для локального/настраиваемого репозитория, где у вас может быть несколько доступных версий для зависимости сборки, вы все равно можете добавить версионный Build-Conflicts для чего-то вроде Build-Conflicts: foo (>= 2.99.3). Или, если это действительно работает только с 2.99.2, то что-то вроде Build-Depends: foo (>= 2.99.2), foo (<< 2.99.3) тоже может работать лучше.

person Guillem Jover    schedule 25.10.2016