Cómo instalar dos paquetes que escriben el mismo archivo

14

Tengo dos paquetes que cada uno crea / usr / bin / ffprobe. Uno de ellos es ffmpeg del repositorio de Deb Multimedia, mientras que el otro es ffmbc 0.7-rc5 construido desde la fuente. El enrollado a mano es crítico para el negocio, y solíamos instalarlo desde la fuente donde era necesario. Solo puedo suponer que golpearía el archivo ffmpeg, y nunca hubo ningún efecto negativo.

En teoría, debería ser aceptable que nuestro paquete ffmbc sobrescriba el archivo del paquete ffmpeg. El inconveniente es que una actualización de ffmpeg sobrescribirá el binario ffmbc. ¿Hay alguna manera fácil de conciliar esto?

Joel E Salas
fuente

Respuestas:

12

En los sistemas basados ​​en Debian, el DPKG (debajo de apt) puede tener configuraciones de desvíos usando el comando dpkg-divert

dpkg-divert es la utilidad utilizada para configurar y actualizar la lista de desvíos.

Los desvíos de archivos son una forma de forzar a dpkg (1) a no instalar un archivo en su ubicación, sino a una ubicación desviada. ... Los administradores del sistema también pueden usarlo para anular el archivo de configuración de algún paquete, o cuando dpkg necesite preservar algunos archivos (que no están marcados como 'conffiles'), al instalar una versión más nueva de un paquete que contenga esos archivos .

Entonces, para su caso, puede usar un comando como este para configurar un desvío. (No lo he probado, revise la página de manual y verifique que esto parezca correcto).

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe
Zoredache
fuente
8

Otra solución que encontré fue cambiar la forma en que construí el paquete ffmbc. En general, es posible pasar un prefijo alternativo con el fin de cambiar las rutas finales de los archivos instalados:

./configure --prefix=/usr/local

Para los paquetes Debian, esto va en el archivo $ {package} / debian / rules de la siguiente manera:

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

Al poner los archivos ffmbc /usr/local, puedo mantener los archivos ffmpeg /usry permitir que cada paquete se actualice de forma independiente.

Joel E Salas
fuente
3
Los paquetes no deben instalar nada en /usr/local- es una violación de la política. El objetivo /usr/locales mantener separados los archivos bajo administración de paquetes y los archivos instalados manualmente. Consulte la siguiente discusión relacionada con FHS: unix.stackexchange.com/questions/30/…
Onlyjob
-1

Los paquetes que proporcionan el (los) mismo (s) archivo (s) deben entrar en conflicto entre sí; si no lo hacen, es un error (considere informar tales casos). Si construye software a partir de fuentes e instala utilizando make install(o similar) asegúrese de hacerlo /usr/localpara evitar conflictos con la administración de paquetes.

Tenga en cuenta que deb-multimedia.org está en desuso como repositorio no oficial conocido por causar conflictos con los paquetes oficiales.

Si el software que necesita no está empaquetado para Debian , puede enviar una solicitud de paquete RFP, pero primero verifique las solicitudes existentes .

Solo trabajo
fuente