Будучи первопроходцем и использующим ежедневные сборки 11.04, я иногда сталкиваюсь с ситуацией, когда для некоторых пакетов требуются более ранние версии других пакетов, чем те, которые я установил. Обычно более новые (но отказанные) версии необходимых пакетов предоставляют все функциональные возможности своих более старых версий.
Если я использую dpkg -i --force-depends-version
для установки зависимых пакетов, все работает нормально, я никогда не видел проблемы.
Вместо того, чтобы вручную загружать и устанавливать каждый пакет, могу ли я сделать так, чтобы система делала вид, что при установке более новой версии установлена конкретная версия пакета? Или есть --force-depends-version
эквивалент ключа для apt-get
?
Несмотря на то, что ответ уже принят, вставка принятого лучше передает процесс:
Существует пакет Debian,
equivs
который может создавать фиктивные пакеты. Установите его, запустивsudo apt-get install -y equivs
После установки вы создаете шаблон «управляющего» файла с помощью следующей команды:
equivs-control postfix
(заменитеpostfix
на имя вашего пакета). В моем случае я мог бы использовать альтернативное имя пакета, например,postfix-custom
или как угодно, но мой пользовательский пакет был выполнен илиProvides
зависел от установкиpostfix
(снова заменивpostfix
любой пакет, который вы хотите.После создания файла управления шаблоном я обычно удаляю много закомментированных операторов (операторов, которые начинаются с
#
). Одно из них, которое я хотел бы сохранить, - этоProvides:
утверждение, в котором я могу сказать, что мой пакет предоставляет возможности, предлагаемые другим пакетом, который я пытаюсь подделать, например,Provides: postfix
сообщает механизму разрешения зависимостей Debian / Ubuntu, что мой пакет - с любым именем - обеспечивает те же возможности целевого пакета, сноваpostfix
или что-то еще. Это позволяет мне называть свой пакет независимо от целевого пакета, чтобы избежать путаницы. Erlang Factory делает это со своими вещами, например,esl-erlang
предоставляетerlang
.Наконец, после создания файла управления шаблоном вы используете
equivs-build
для создания поддельный пакет, напримерequivs-build /path/to/generated/control/file
.Сборка пакета занимает несколько секунд, а затем вы можете запустить
sudo dpkg -i my_package_name*.deb
Для опытных пользователей, если ваш файл управления шаблоном имеет
Requires:
строку зависимостей, вы можете использовать инструмент, подобныйgdebi
для установки вашего пакета, а также различных пакетов, которые он объявляет как зависимости.источник