Как обмануть подходящие зависимости?
Возможный дубликат:
Как создать метапакет, который автоматически устанавливает другие пакеты?
Я хочу использовать Frescobaldi (редактор для Lilypond), но упакованный выпуск lilypond (2.12.3; lilypond похож на TeX для таблиц результатов) в официальных репозиториях немного устарел, поскольку я хочу использовать некоторые совершенно новые функции. Поэтому я просто клонировал их git-репо и установил их оттуда.
Теперь мой вопрос: как я могу сказать apt, что я удовлетворил зависимость от lilypond вручную, чтобы он не пытался установить другую копию?
2 ответа
Для того, где вы фактически предоставляете зависимость, я бы использовал checkinstall
сделать установку. checkinstall
в основном заменяет make install
и генерирует правильный пакет.deb, а затем устанавливает его. Это не только позволяет вам удалить или обновить пакет лучше (когда придет время), но и удовлетворяет зависимости от других приложений.
Альтернативой является написание небольшого фиктивного пакета, который не предоставляет никаких файлов, но утверждает, что предоставляет все, что вы хотите. Самый простой способ, который я вижу, это использование приложения под названием equivs
:
sudo apt-get install equivs
equivs-control lilypond
# edit your fake package so it has the right versions, names, description, etc
nano lilypond
equivs-build lilypond
sudo dpkg -i lilypond-dummy*.deb
Есть третий путь, который прост, но потенциально опасен: просто установите его из стандартных репозиториев, а затем замените его файлами теми, которые вы генерируете. Заблокируйте версию пакета, чтобы он не обновлялся. Это может пойти не так, поэтому делайте это только если вы не можете checkinstall
или иным образом подделать пакет первым.
Вы должны были использовать dhmake
или же sudo check install
вместо sudo make install
, Таким образом, вы создаете deb (проверьте, что установка также устанавливает deb) более поздней версии lilypond ^^.
Если у вас все еще есть исходный код (и объектные файлы /make-файл и т. Д. После компиляции), вы все равно можете сделать это без необходимости повторной загрузки.