Substituindo Múltiplos Pacotes Debian da Fonte Compilada

3

Eu 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 do Kubuntu requerem que esta biblioteca seja instalada. No momento estou trabalhando com o ffmpeg, mas tive que fazer isso antes (por exemplo, OpenCV) e estou procurando a melhor maneira de fazer isso para o futuro ...

Então, o que estou tentando fazer é criar um pacote debian que eu possa instalar com o dpkg usando o checkinstall. Eu já 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 eu não quero ter que escrever os pacotes 5/6 para substituir todos e cada um se eu não precisar. Eu me certifiquei de que está compilado corretamente com tudo que é necessário para todos esses pacotes.

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

Aquiestáoqueestáescritonomeuarquivodecontroledeb.Tantoquantoeupossover,tudoissoéreconhecidonogerenciadordepacotesmuon.

Package:ffmpegPriority:extraSection:checkinstallInstalled-Size:172216Maintainer:root@skundArchitecture:amd64Version:8:1.2.1-git-2Provides:ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2Replaces:ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2Description:Packagecreatedwithcheckinstall1.6.2

Eaquiestáinstaladonogerenciadordepacotes:

Alguém tem alguma ideia sobre como fazer isso funcionar?

    
por AdmiralJonB 29.04.2013 / 18:34

1 resposta

3

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

If a relationship field has a version number attached, only real packages will be considered [...]. In other words, if a version number is specified, this is a request to ignore all Provides for that package name and consider only real packages.

Dependências em bibliotecas são quase sempre versionadas. Então isso não vai funcionar.

Em vez disso, você pode:

  • Faça o download do pacote Debian ( apt-get source PACKAGE ) e atualize-o para o último ffmpeg (e, de fato, você pode até mandar os patches necessários para o bug tracker do Debian). É claro que você precisará atualizar os sonames das bibliotecas (aposto que a ABI mudou) e provavelmente reconstruir muitas coisas que dependem do ffmpeg. Algumas delas podem exigir alterações na fonte, caso a API seja alterada.
  • Ou, o caminho mais fácil: instale-o em /usr/local . Você pode criar um .deb disso e atribuir 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 todos os itens acima. Você também pode usar stow para instalá-lo em /usr/local .
por 29.04.2013 / 21:12