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

14

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

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

Джоэл Э Салас
источник

Ответы:

12

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

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

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

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

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe
Zoredache
источник
8

Другое решение, которое я нашел, состояло в том, чтобы изменить способ сборки пакета ffmbc. Как правило, можно передать альтернативный префикс для изменения окончательных путей установленных файлов:

./configure --prefix=/usr/local

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

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

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

Джоэл Э Салас
источник
3
Пакеты не должны ничего устанавливать /usr/local- это нарушение политики. Весь смысл в /usr/localтом, чтобы держать файлы под управлением пакета и вручную установленные файлы отдельно. См. Следующее обсуждение, связанное с FHS: unix.stackexchange.com/questions/30/…
Onlyjob
-1

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

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

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

Onlyjob
источник