Выше предложения, работавшего для меня. Установленный PHP и MySQL на новом сервере, с помощью той же установки PHP со старого сервера, но более новой копии MySQL. В пути это находило более новый libmysql.dll от папки MySQL/bin. Переупорядоченный путь для рассмотрения папки PHP сначала таким образом, это использует libmysql.dll в той папке, и это работало.
Я потратил довольно много времени на изучение этой же проблемы и пришел к выводу, что «Provides» игнорируется, поскольку xen-utils-4.0 имеет версию «Depends» на xen-utils-common .
Цитата из Руководства по политике Debian :
Поле Provides может не содержать номеров версий, а номер версии конкретного пакета, который предоставляет конкретный виртуальный пакет, не будет учитываться при рассмотрении зависимости на имя виртуального пакета или конфликт с ним.
Если бы Depends были неверсированными, обеспечивающие были бы удовлетворены, однако Provides, который всегда не версионирован, никогда не может удовлетворить версионные Depends.
К сожалению, у меня нет решение, отличное от того, что вы уже предложили: сохранить то же имя пакета и иметь более высокий номер версии.
В конечном итоге проблема была решена, переименовав его обратно в xen-utils-common с настраиваемым версия, и создание пакета, требующего настройки, конфликтует с более высокими версиями. Таким образом, обновления xen-utils-common блокируются, пока я не обновлю оба пакета.
Вроде работает, но я открыт для лучших решений.
«Предоставляет» только для виртуальных пакетов. Если вы хотите заменить реальный пакет, вам нужно использовать «Заменяет» и, возможно, также «Конфликты», если пакет предоставляет те же файлы.
См. Политика Debian, глава 7 .
Раздел Руководства по политике 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})