Заставить пакет PPA удовлетворить зависимость метапакета дистрибутива

Я создаю пакет для моего ppa, который требует более новой реализации libboost, чем то, что предусмотрено в моем целевом дистрибутиве (точнее). Я скопировал libboost1.55 из расширенного ppa в мой ppa. Я использую pbuilder-dist для проверки сборки моего пакета. Я успешно использовал ответ на этот вопрос, чтобы pbuilder получил пакеты libboost из ppa в среду chroot.

К сожалению, пока все зависимости можно установить из ppa как libboost-libname1.55-devни один из них не удовлетворяет метапакету libboost-libname-dev и pbuilder-dist сборка не удалась из-за неудовлетворенных зависимостей.

Таким образом, этот вопрос не обязательно связан только с pbuilder-dist, но как мне позволить pbuilder игнорировать пакеты для зависимостей (как я уверен, что зависимость встречается) или заставить apt-get считать, что зависимость метапакета удовлетворена? Я бы предпочел не связываться с debian/control если нет другого пути.

1 ответ

Решение

Поскольку основной метапакет, который обновляется в зависимости от библиотек Boost 1.55, не поставляется через PPA, вы получаете ошибки зависимости. Нет строителя (pbuilder или же sbuild) или менеджер пакетов (apt-get) позволит создать / установить пакет, где зависимости не встречаются, так как это означает, что пакет не будет собран или работает. Поэтому вам придется идти в debian/control, Чтобы обойти ошибку, попробуйте использовать альтернативные зависимости, чтобы указать, используя основной метапакет, если он имеет достаточную версию или альтернативную версию.

Чтобы сделать это, в случае модуля Boost с именем name, зависимость для этого модуля будет выглядеть libboost-name-dev (>= 1.55.0) | libboost-name1.55-dev, В этом случае libboost-name-dev будет использоваться, если это хотя бы версия 1.55; в противном случае он будет использовать libboost-name1.55-dev,

Обратите внимание, что вам может потребоваться вручную включить использование альтернатив в pbuilder,

Другие вопросы по тегам