Как обмануть подходящие зависимости?

Возможный дубликат:
Как создать метапакет, который автоматически устанавливает другие пакеты?

Я хочу использовать 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-файл и т. Д. После компиляции), вы все равно можете сделать это без необходимости повторной загрузки.

Другие вопросы по тегам