Como instalar dois pacotes que escrevem o mesmo arquivo

14

Eu tenho dois pacotes que criam / usr / bin / ffprobe. Um deles é ffmpeg do repositório Deb Multimedia, enquanto o outro é ffmbc 0.7-rc5 construído a partir da fonte. A mão-enrolada é crítica para os negócios, e nós costumávamos instalá-la da fonte onde quer que fosse necessário. Eu só posso supor que iria destruir o arquivo ffmpeg, e nunca houve efeitos nocivos.

Em teoria, deve ser aceitável que o nosso pacote ffmbc sobrescreva o arquivo do pacote ffmpeg. A desvantagem é que uma atualização para o ffmpeg sobrescreve o binário ffmbc. Existe alguma maneira fácil de conciliar isso?

    
por Joel E Salas 06.09.2012 / 03:11

3 respostas

13

Em sistemas baseados em Debian, o DPKG (abaixo do apt) pode ter diversões configuração usando o comando dpkg-divert

dpkg-divert is the utility used to set up and update the list of diversions.

File diversions are a way of forcing dpkg(1) not to install a file into its location, but to a diverted location. ... System administrators can also use it to override some package's configuration file, or whenever some files (which aren't marked as 'conffiles') need to be preserved by dpkg, when installing a newer version of a package which contains those files.

Então, para o seu caso, você pode usar um comando como este para configurar um desvio. (Eu não testei, verifique a man page e verifique se isso está correto.)

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe
    
por 06.09.2012 / 03:32
8

Outra solução que encontrei foi alterar a forma como construí o pacote ffmbc. Geralmente é possível passar um prefixo alternativo com o propósito de alterar os caminhos finais dos arquivos instalados:

./configure --prefix=/usr/local

Para pacotes Debian, isto vai no arquivo $ {package} / debian / rules da seguinte forma:

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

Ao colocar os arquivos ffmbc em /usr/local , posso manter os arquivos ffmpeg em /usr e permitir que cada pacote seja atualizado independentemente.

    
por 06.09.2012 / 20:15
0

Pacotes que fornecem o (s) mesmo (s) arquivo (s) devem entrar em conflito uns com os outros - eles não são um bug (por favor, considere relatar tais casos). Se você criar um software a partir de fontes e instalar usando make install (ou similar), certifique-se de ir para /usr/local para evitar conflitos com o gerenciamento de pacotes.

Por favor, note que deb-multimedia.org é obsoleto repositório não oficial notório por causar conflitos com pacotes oficiais.

Se o software que você precisa não está empacotado para o Debian , você pode enviar um pedido de empacotamento RFP , mas verifique as solicitações existentes primeiro.

    
por 27.08.2014 / 02:39