apt всегда пытается удалить локально созданный пакет при установке зависимостей

327
Rwky

У меня есть локально скомпилированная версия apache, которая в контрольном файле

Replaces: apache2, apache2-mpm, httpd, httpd-cgi, apache2-mpm-prefork, apache2-utils, apache2-common, apache2.2-bin, apache2.2-common Conflicts: apache2, apache2-mpm, httpd, httpd-cgi, apache2-mpm-prefork, apache2-utils, apache2-common, apache2.2-bin, apache2.2-common 

Однако, если я затем выполню apt-get install php5, apt попытается удалить мой пакет и установить пакеты apache из репозитория ubuntu.

Я пытался поменять местами Replaces, Conflicts and Provides, но, похоже, не могу заставить его сохранить мой локальный пакет, приоритет пакета «необязательный», который совпадает с apache2.

Кто-нибудь знает, как я могу настроить свой пакет для замены Apache Ubuntu?

1

2 ответа на вопрос

1
BillThor

Установите свои пакеты и отметьте их как удерживающие.

Я пробовал это, но затем aptitude просит меня разрешить конфликты, а apt-get просто игнорирует это и пытается удалить мой apache Rwky 13 лет назад 0
Существует зависимость от libapache-mod-php5 среди других. С вашим собственным apache у вас скорее всего нет этого пакета. Вы можете встретить зависимость, установив php5-common. Это может решить вашу проблему. BillThor 13 лет назад 0
1
Gilles

Это может быть связано с тем, что у php5пакета есть зависимость (возможно, косвенная), которую ваши пакеты не удовлетворяют. Попробуйте использовать aptitudeвместо apt-get, возможно, передачу этого параметра -vодин или несколько раз, чтобы получить более подробный отчет о том, что представляет собой цепочка зависимых проблем; или используйте aptitude в интерактивном режиме, чтобы можно было легко исследовать цепочку зависимостей (запросите установку php5и посмотрите предложения по разрешению конфликтов).

Самый простой способ удовлетворения зависимостей - использовать сценарии компиляции Ubuntu для вашей собственной версии Apache, чтобы иметь одинаковые имена пакетов и большие номера версий, которые должны удовлетворять всем зависимостям.

Если ничего не помогает, вы можете использовать equivs-buildинструмент из equivsпакета для создания тривиального пакета для удовлетворения отсутствующих зависимостей.

Это сработало, спасибо, я использовал управляющий файл Ubuntu, чтобы скомпилировать свой файл с более высоким номером версии, как вы и предлагали :) Rwky 13 лет назад 0