Substituindo vários pacotes Debian da fonte compilada

Substituindo vários pacotes Debian da fonte compilada

Tive que baixar e instalar uma versão de uma biblioteca de seu repositório de código-fonte. O problema é que outros pacotes do gerenciador de pacotes Kubuntu exigem que esta biblioteca seja instalada. No momento estou trabalhando com ffmpeg, mas já tive que fazer isso antes (por exemplo, OpenCV) e estou procurando a melhor maneira de fazer isso no futuro...

Então o que estou tentando fazer é criar um pacote debian que eu possa instalar com o dpkg usando checkinstall. Desde então, descompactei o arquivo deb para modificá-lo, tentando fazê-lo funcionar corretamente

O problema é que o ffmpeg é dividido em vários pacotes no gerenciador de pacotes e não quero ter que escrever os pacotes 5/6 para substituir cada um deles, se não for necessário. Certifiquei-me de que ele esteja compilado corretamente com tudo o que é necessário para todos esses pacotes.

Tenho tentado usar "Requer" e "Substitui", mas parece que não funciona corretamente. Quando tento instalar o VLC posteriormente, ele pede para instalar todos os do gerenciador de pacotes. Também verifiquei se o número da versão é posterior aos do gerenciador de pacotes.

Pré-requisitos do VLC

Aqui está o que está escrito no meu arquivo de controle deb. Pelo que posso ver, tudo isso é reconhecido no gerenciador de pacotes 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

E aqui está instalado no gerenciador de pacotes:

gerenciador de pacotes ffmpeg gerenciador de pacotes ffmpeg 2

Alguém tem alguma idéia de como fazer isso funcionar?

Responder1

Bem, por um lado, Provides:não funciona com dependências que especificam uma versão. DeManual de Políticas Debian, "Pacotes Virtuais - Fornece":

Se um campo de relacionamento tiver um número de versão anexado, apenas pacotes reais serão considerados [...]. Em outras palavras, se um número de versão for especificado, esta é uma solicitação para ignorar todos os Provides para aquele nome de pacote e considerar apenas pacotes reais.

As dependências de bibliotecas quase sempre são versionadas. Então isso simplesmente não vai funcionar.

Em vez disso, você poderia:

  • Baixe o pacote Debian ( apt-get source PACKAGE) e atualize-o para o ffmpeg mais recente (e, de fato, você pode até enviar os patches necessários para o rastreador de bugs do Debian). Claro que você precisará atualizar os nomes das bibliotecas (aposto que a ABI mudou) e provavelmente reconstruir muitas coisas que dependem do ffmpeg. Parte disso pode exigir alterações na fonte se a API for alterada.
  • Ou a maneira mais fácil: instale-o no /usr/local. Você pode construir um .debdesses e dar a ele um nome de pacote diferente (por exemplo, local-ffmpeg). Você pode então instalá-lo junto com o ffmpeg fornecido pelo Debian e não se preocupar com tudo isso. Você também pode usar stowpara instalá-lo em /usr/local.

informação relacionada