Comment installer deux packages qui écrivent le même fichier

14

J'ai deux paquets qui créent chacun / usr / bin / ffprobe. L'un d'eux est ffmpeg du référentiel Deb Multimedia, tandis que l'autre est ffmbc 0.7-rc5 construit à partir de la source. Celui roulé à la main est essentiel pour l'entreprise, et nous avions l'habitude de l'installer à partir de la source là où c'était nécessaire. Je peux seulement supposer que cela encombrerait le fichier ffmpeg, et qu'il n'y a jamais eu d'effets néfastes.

En théorie, notre package ffmbc devrait être acceptable pour remplacer le fichier du package ffmpeg. L'inconvénient est qu'une mise à jour de ffmpeg écrasera le binaire ffmbc. Existe-t-il un moyen facile de concilier cela?

Joel E Salas
la source

Réponses:

12

Sur les systèmes basés sur Debian, le DPKG (ci-dessous apt) peut avoir une configuration de diversions en utilisant la commande dpkg-divert

dpkg-divert est l'utilitaire utilisé pour configurer et mettre à jour la liste des déviations.

Les détournements de fichiers sont un moyen de forcer dpkg (1) à ne pas installer un fichier à son emplacement, mais vers un emplacement détourné. ... Les administrateurs système peuvent également l'utiliser pour remplacer le fichier de configuration d'un package, ou chaque fois que certains fichiers (qui ne sont pas marqués comme 'conffiles') doivent être conservés par dpkg, lors de l'installation d'une version plus récente d'un package qui contient ces fichiers .

Donc, pour votre cas, vous pouvez utiliser une commande comme celle-ci pour configurer une déviation. (Je n'ai pas testé, consultez la page de manuel et vérifiez que cela semble correct.)

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

Une autre solution que j'ai trouvée a été de changer la façon dont j'ai construit le paquet ffmbc. En général, il est possible de passer un préfixe alternatif dans le but de changer les chemins finaux des fichiers installés:

./configure --prefix=/usr/local

Pour les paquets Debian, cela va dans le fichier $ {package} / debian / rules comme suit:

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

En mettant les fichiers ffmbc /usr/local, je peux conserver les fichiers ffmpeg /usret permettre à chaque paquet de se mettre à jour indépendamment.

Joel E Salas
la source
3
Les packages ne doivent rien installer sur /usr/local- c'est une violation de politique. L'intérêt de /usr/localgarder les fichiers sous gestion des packages et les fichiers installés manuellement séparément. Voir la discussion relative à la FHS suivante: unix.stackexchange.com/questions/30/…
Onlyjob
-1

Les paquets fournissant le même fichier doivent entrer en conflit les uns avec les autres - si ce n'est pas le cas, c'est un bogue (veuillez envisager de signaler de tels cas). Si vous créez un logiciel à partir de sources et installez à l'aide make install(ou similaire), assurez-vous qu'il est utilisé /usr/localpour éviter les conflits avec la gestion des packages.

Veuillez noter que deb-multimedia.org est un référentiel non officiel obsolète connu pour provoquer des conflits avec les paquets officiels.

Si le logiciel dont vous avez besoin n'est pas empaqueté pour Debian, vous pouvez soumettre une demande de mise en package RFP mais veuillez d'abord vérifier les demandes existantes .

Onlyjob
la source