Cara menginstal dua paket yang menulis file yang sama

14

Saya punya dua paket yang masing-masing buat / usr / bin / ffprobe. Salah satunya adalah ffmpeg dari repositori Deb Multimedia, sementara yang lain adalah ffmbc 0.7-rc5 dibangun dari sumber. Yang digulung tangan adalah bisnis-kritis, dan kami biasa menginstalnya dari sumber di mana pun itu diperlukan. Saya hanya bisa berasumsi itu akan merusak file ffmpeg, dan tidak pernah ada efek buruk.

Secara teori, paket ffmbc kami dapat diterima untuk menimpa file dari paket ffmpeg. Kekurangannya adalah bahwa pembaruan ke ffmpeg akan menimpa biner ffmbc. Apakah ada cara mudah untuk mendamaikan ini?

Joel E Salas
sumber

Jawaban:

12

Pada sistem berbasis Debian ada DPKG (di bawah apt) dapat memiliki pengaturan pengalihan menggunakan perintah dpkg-divert

dpkg-divert adalah utilitas yang digunakan untuk mengatur dan memperbarui daftar pengalihan.

Pengalihan file adalah cara memaksa dpkg (1) untuk tidak menginstal file ke lokasi, tetapi ke lokasi yang dialihkan. ... Administrator sistem juga dapat menggunakannya untuk mengganti file konfigurasi beberapa paket, atau setiap kali beberapa file (yang tidak ditandai sebagai 'conffiles') harus disimpan oleh dpkg, ketika menginstal versi yang lebih baru dari sebuah paket yang berisi file-file itu .

Jadi untuk kasus Anda, Anda dapat menggunakan perintah seperti ini untuk menyiapkan pengalihan. (Saya belum menguji, periksa halaman manual dan verifikasi bahwa ini sepertinya benar.)

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe
Sakit kepala
sumber
8

Solusi lain yang saya temukan adalah mengubah cara saya membangun paket ffmbc. Secara umum dimungkinkan untuk memberikan awalan alternatif untuk tujuan mengubah jalur akhir dari file yang diinstal:

./configure --prefix=/usr/local

Untuk paket Debian, ini ada dalam file $ {package} / debian / rules sebagai berikut:

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

Dengan memasukkan file ffmbc /usr/local, saya dapat menyimpan file ffmpeg /usrdan memungkinkan setiap paket untuk memperbarui secara mandiri.

Joel E Salas
sumber
3
Paket tidak boleh menginstal apa pun untuk /usr/local- itu adalah pelanggaran kebijakan. Seluruh intinya /usr/localuntuk menjaga file di bawah manajemen paket dan file yang diinstal secara manual terpisah. Lihat diskusi terkait FHS berikut: unix.stackexchange.com/questions/30/…
Onlyjob
-1

Paket yang menyediakan file yang sama harus saling bertentangan - jika tidak, ini adalah bug (harap pertimbangkan untuk melaporkan kasus-kasus seperti itu). Jika Anda membuat perangkat lunak dari sumber dan menginstal menggunakan make install(atau serupa), pastikan /usr/localuntuk menghindari konflik dengan manajemen paket.

Harap dicatat bahwa deb-multimedia.org sudah usang repositori tidak terkenal karena menyebabkan konflik dengan paket resmi.

Jika perangkat lunak yang Anda butuhkan tidak dikemas untuk Debian maka Anda dapat mengirimkan permintaan kemasan RFP tetapi harap periksa permintaan yang ada terlebih dahulu.

Onlyjob
sumber