Як встановити два пакети, які записують один і той же файл


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) не встановлювати файл у його місце розташування, а в перенаправлене місце. ... Системні адміністратори також можуть використовувати його для зміни файлу конфігурації пакету, або коли деякі файли (які не позначені як "конфілі") повинні зберігатися dpkg, встановлюючи новішу версію пакета, що містить ці файли .

Отже, для вашого випадку ви можете використовувати таку команду, щоб встановити відхилення. (Я не перевіряв, перевірте головну сторінку та переконайтесь, що це здається правильним.)

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

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, але спочатку перевірте наявність існуючих запитів .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.