Мне пришлось загрузить и установить версию библиотеки из репозитория исходного кода. Проблема в том, что другие пакеты из менеджера пакетов Kubuntu требуют установки этой библиотеки. Сейчас я работаю с ffmpeg, но мне уже приходилось это делать (например, OpenCV), и я ищу лучший способ сделать это в будущем...
Итак, я пытаюсь создать пакет Debian, который я могу установить с помощью dpkg, используя checkinstall. С тех пор я распаковал файл deb, чтобы изменить его, пытаясь заставить его работать правильно
Проблема в том, что ffmpeg разделен на несколько пакетов в менеджере пакетов, и я не хочу писать 5/6 пакетов, чтобы заменить каждый из них, если мне это не нужно. Я убедился, что он правильно скомпилирован со всем, что требуется для всех этих пакетов.
Я пытался использовать "Requires" и "Replaces", но это, похоже, работает некорректно. Когда я пытаюсь установить VLC после этого, он просит установить все из менеджера пакетов. Я также убедился, что номер версии более поздний, чем в менеджере пакетов.
Вот что написано в моем deb control файле. Насколько я могу судить, все это распознается в менеджере пакетов muon.
Package: ffmpeg
Priority: extra
Section: checkinstall
Installed-Size: 172216
Maintainer: root@skund
Architecture: amd64
Version: 8:1.2.1-git-2
Provides: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Replaces: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Description: Package created with checkinstall 1.6.2
А вот он установлен в менеджере пакетов:
Есть ли у кого-нибудь идеи, как это реализовать?
решение1
Ну, во-первых, Provides:
не работает с зависимостями, в которых указана версия. ИзРуководство по политике Debian, «Виртуальные пакеты — Предоставляет»:
Если к полю связи прикреплен номер версии, будут рассматриваться только реальные пакеты [...]. Другими словами, если указан номер версии, это запрос на игнорирование всех Provides для этого имени пакета и рассмотрение только реальных пакетов.
Зависимости от библиотек почти всегда версионированы. Так что это просто не сработает.
Вместо этого вы могли бы:
- Загрузите пакет Debian (
apt-get source PACKAGE
) и обновите его для последней версии ffmpeg (и, конечно, вы даже можете отправить необходимые исправления в Debian bug tracker). Конечно, вам нужно будет обновить sonames библиотек (я уверен, что ABI изменился), и, вероятно, пересобрать много всего, что зависит от ffmpeg. Некоторые из них могут потребовать изменения исходного кода, если API изменился. - Или, простой способ: установите его в
/usr/local
. Вы можете собрать.deb
его и дать ему другое имя пакета (например,local-ffmpeg
). Затем вы можете установить его вместе с ffmpeg, предоставленным Debian, и не беспокоиться обо всем вышеперечисленном. Вы также можете использоватьstow
для установки его в/usr/local
.