DEB: “Обеспечивает”: поле проигнорировано

Выше предложения, работавшего для меня. Установленный PHP и MySQL на новом сервере, с помощью той же установки PHP со старого сервера, но более новой копии MySQL. В пути это находило более новый libmysql.dll от папки MySQL/bin. Переупорядоченный путь для рассмотрения папки PHP сначала таким образом, это использует libmysql.dll в той папке, и это работало.

4
задан 22 February 2012 в 11:54
4 ответа

Я потратил довольно много времени на изучение этой же проблемы и пришел к выводу, что «Provides» игнорируется, поскольку xen-utils-4.0 имеет версию «Depends» на xen-utils-common .

Цитата из Руководства по политике Debian :

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

Если бы Depends были неверсированными, обеспечивающие были бы удовлетворены, однако Provides, который всегда не версионирован, никогда не может удовлетворить версионные Depends.

К сожалению, у меня нет решение, отличное от того, что вы уже предложили: сохранить то же имя пакета и иметь более высокий номер версии.

6
ответ дан 3 December 2019 в 02:52

В конечном итоге проблема была решена, переименовав его обратно в xen-utils-common с настраиваемым версия, и создание пакета, требующего настройки, конфликтует с более высокими версиями. Таким образом, обновления xen-utils-common блокируются, пока я не обновлю оба пакета.

Вроде работает, но я открыт для лучших решений.

0
ответ дан 3 December 2019 в 02:52

«Предоставляет» только для виртуальных пакетов. Если вы хотите заменить реальный пакет, вам нужно использовать «Заменяет» и, возможно, также «Конфликты», если пакет предоставляет те же файлы.

См. Политика Debian, глава 7 .

0
ответ дан 3 December 2019 в 02:52

Раздел Руководства по политике Debian, цитируемый в @ cavedon ответ , все еще не изменился, но устарел. Начиная с dpkg 1.17.11 возможна установка версии для предоставленного пакета. Из журнала изменений :

  • Добавить с поддержкой версий Обеспечивает поддержку:
    • Добавьте новую команду dpkg --assert-versioned-provided.
    • Пакеты могут предоставлять определенную версию, «виртуальную (= 1.0)», которая будет
    • Виртуальные пакеты без поддержки версий не будут удовлетворять зависимостям с поддержкой версий.
    • Виртуальные пакеты с поддержкой версий будут удовлетворять зависимостям без поддержки версий. Основан на скелетном коде Бена Коллинза. Закрывается: # 7330, # 24934, # 112131, # 134582, # 180316

Итак, чтобы решить исходный пример, в контрольном файле вы добавляете строку

Version: * version *

(заменяя * version * фактической версией) и замените строку

Provides: xen-utils-common

на

Provides: xen-utils-common (= $ {binary: Version})

2
ответ дан 3 December 2019 в 02:52

Теги

Похожие вопросы