Reemplazo de múltiples paquetes de Debian desde fuente compilada

Reemplazo de múltiples paquetes de Debian desde fuente compilada

Tuve que descargar e instalar una versión de una biblioteca desde su repositorio de código fuente. El problema es que otros paquetes del administrador de paquetes de Kubuntu requieren la instalación de esta biblioteca. En este momento estoy trabajando con ffmpeg, pero tuve que hacerlo antes (por ejemplo, OpenCV) y estoy buscando la mejor manera de hacerlo para el futuro...

Entonces, lo que intento hacer es crear un paquete Debian que pueda instalar con dpkg usando checkinstall. Desde entonces, descomprimí el archivo deb para modificarlo e intentar que funcione correctamente.

El problema es que ffmpeg está dividido en varios paquetes en el administrador de paquetes y no quiero tener que escribir los paquetes 5/6 para reemplazar todos y cada uno de ellos si no es necesario. Me he asegurado de que esté correctamente compilado con todo lo necesario para todos estos paquetes.

He estado intentando utilizar "Requiere" y "Reemplaza", pero parece que no funciona correctamente. Cuando intento instalar VLC después, me pide instalar todos los del administrador de paquetes. También me aseguré de que el número de versión sea posterior a los del administrador de paquetes.

Requisitos previos de VLC

Esto es lo que está escrito en mi archivo de control deb. Hasta donde puedo ver, todo esto se reconoce en el administrador de paquetes de muon.

Package: ffmpeg
Priority: extra
Section: checkinstall
Installed-Size: 172216
Maintainer: root@skund
Architecture: amd64
Version: 8:1.2.1-git-2
Provides: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Replaces: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Description: Package created with checkinstall 1.6.2

Y aquí está instalado en el administrador de paquetes:

administrador de paquetes ffmpeg administrador de paquetes ffmpeg 2

¿Alguien tiene alguna idea sobre cómo hacer que esto funcione?

Respuesta1

Bueno, por un lado, Provides:no funciona con dependencias que especifican una versión. Desde elManual de políticas de Debian, "Paquetes virtuales - Proporciona":

Si un campo de relación tiene un número de versión adjunto, solo se considerarán paquetes reales [...]. En otras palabras, si se especifica un número de versión, se trata de una solicitud para ignorar todos los proveedores de ese nombre de paquete y considerar solo los paquetes reales.

Las dependencias de las bibliotecas casi siempre tienen versiones. Entonces eso simplemente no va a funcionar.

En su lugar, podrías:

  • Descargue el paquete Debian ( apt-get source PACKAGE) y actualícelo para obtener el último ffmpeg (y, de hecho, incluso podría enviar los parches necesarios al rastreador de errores de Debian). Por supuesto, necesitarás actualizar los sonames de las bibliotecas (apuesto a que el ABI cambió) y probablemente reconstruir muchas cosas que dependen de ffmpeg. Algo de eso puede requerir cambios de fuente si la API cambió.
  • O la forma más sencilla: instálelo en /usr/local. Puede crear uno .debde eso y darle un nombre de paquete diferente (por ejemplo, local-ffmpeg). Luego puede instalarlo junto con el ffmpeg proporcionado por Debian y no preocuparse por todo lo anterior. También puedes utilizar stowpara instalarlo en /usr/local.

información relacionada