Come installare due pacchetti che scrivono lo stesso file


14

Ho due pacchetti che ognuno crea / usr / bin / ffprobe. Uno di questi è ffmpeg dal repository Deb Multimedia, mentre l'altro è ffmbc 0.7-rc5 creato dal sorgente. Quello arrotolato a mano è fondamentale per il business e lo installavamo solo da fonti ovunque fosse necessario. Posso solo supporre che occluderebbe il file ffmpeg e non ci sono mai stati effetti negativi.

In teoria, dovrebbe essere accettabile per il nostro pacchetto ffmbc sovrascrivere il file dal pacchetto ffmpeg. Lo svantaggio è che un aggiornamento a ffmpeg sovrascriverà il binario di ffmbc. C'è un modo semplice per conciliare questo?

Risposte:


12

Sui sistemi basati su Debian c'è DPKG (sotto apt) che può avere impostazioni di deviazioni usando il comando dpkg-divert

dpkg-divert è l'utilità utilizzata per impostare e aggiornare l'elenco delle deviazioni.

La deviazione dei file è un modo per forzare dpkg (1) a non installare un file nella sua posizione, ma in una posizione deviata. ... Gli amministratori di sistema possono anche usarlo per sovrascrivere il file di configurazione di alcuni pacchetti o ogni volta che alcuni file (che non sono contrassegnati come "conffile") devono essere conservati da dpkg, quando si installa una versione più recente di un pacchetto che contiene quei file .

Quindi nel tuo caso potresti usare un comando come questo per impostare un diversivo. (Non ho ancora testato, controlla la pagina man e verifica che ciò sembri giusto.)

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

8

Un'altra soluzione che ho trovato è stata quella di cambiare il modo in cui ho creato il pacchetto ffmbc. Generalmente è possibile passare un prefisso alternativo allo scopo di modificare i percorsi finali dei file installati:

./configure --prefix=/usr/local

Per i pacchetti Debian, questo va nel file $ {package} / debian / rules come segue:

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

Inserendo i file ffmbc /usr/local, posso mantenere i file ffmpeg /usre consentire a ciascun pacchetto di aggiornarsi in modo indipendente.


3
I pacchetti non devono installare nulla in /usr/local: si tratta di una violazione delle norme. Tutto il punto /usr/localper mantenere i file sotto la gestione dei pacchetti e i file installati manualmente a parte. Vedi la seguente discussione relativa a FHS: unix.stackexchange.com/questions/30/…
Onlyjob

-1

I pacchetti che forniscono gli stessi file dovrebbero essere in conflitto tra loro - in caso contrario si tratta di un bug (si prega di considerare la segnalazione di tali casi). Se si crea software da fonti e si installa utilizzando make install(o simili) assicurarsi che ciò accada /usr/localper evitare conflitti con la gestione dei pacchetti.

Si prega di notare che deb-multimedia.org è un repository non ufficiale obsoleto noto per causare conflitti con i pacchetti ufficiali.

Se il software di cui hai bisogno non è impacchettato per Debian , puoi inoltrare la richiesta di impacchettamento RFP ma controlla prima le richieste esistenti .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.