Назад | Перейти на главную страницу

Как установить два пакета, которые пишут один и тот же файл

У меня есть два пакета, каждый из которых создает / usr / bin / ffprobe. Один из них - ffmpeg из репозитория Deb Multimedia, а другой - ffmbc 0.7-rc5, собранный из исходников. Свернутый вручную вариант критически важен для бизнеса, и раньше мы просто устанавливали его из исходного кода везде, где это было необходимо. Я могу только предположить, что он заткнет файл ffmpeg, и никаких побочных эффектов не было.

Теоретически для нашего пакета ffmbc должно быть приемлемо перезапись файла из пакета ffmpeg. Недостатком является то, что обновление ffmpeg перезапишет двоичный файл ffmbc. Есть ли простой способ примирить это?

В системах на основе Debian DPKG (ниже apt) может иметь диверсии настройка с помощью команды dpkg-divert

dpkg-divert - это утилита, используемая для настройки и обновления списка переадресации.

Переадресация файлов - это способ заставить dpkg (1) установить файл не в его местоположение, а в другое место. ... Системные администраторы также могут использовать его для переопределения файла конфигурации некоторого пакета или когда некоторые файлы (которые не помечены как 'conffiles') необходимо сохранить с помощью dpkg, при установке более новой версии пакета, который содержит эти файлы .

Поэтому в вашем случае вы можете использовать такую ​​команду для настройки переадресации. (Я не тестировал, проверьте страницу руководства и убедитесь, что это кажется правильным.)

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe

Еще одно решение, которое я нашел, - это изменить способ создания пакета ffmbc. Как правило, можно передать альтернативный префикс с целью изменения окончательных путей к установленным файлам:

./configure --prefix=/usr/local

Для пакетов Debian это находится в файле $ {package} / debian / rules следующим образом:

override_dh_auto_configure:
    ./configure --enable-gpl --prefix=/usr/local

Поместив файлы ffmbc в /usr/local, Я могу хранить файлы ffmpeg в /usr и позволить каждому пакету обновляться независимо.

Пакеты, содержащие одинаковые файлы, должны конфликтовать друг с другом - в противном случае это ошибка (пожалуйста, рассмотрите возможность сообщения о таких случаях). Если вы собираете программное обеспечение из исходников и устанавливаете с помощью make install (или аналогичный) убедитесь, что он попадает в /usr/local чтобы избежать конфликтов с управлением пакетами.

Обратите внимание, что deb-multimedia.org устарел. Неофициальный репозиторий, печально известный тем, что вызывает конфликты с официальными пакетами.

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