web-dev-qa-db-fra.com

Création d'un paquet Debian pour plusieurs versions d'Ubuntu

J'ai une bibliothèque et quelques fichiers binaires à emballer sous forme de paquet Debian. Je suis dépendant de: libboost-log *, libprotobuf * etc.

Je ne veux pas ajouter de dépendance aux paquets de dev "libboost-all-dev", etc. et je veux ajouter des paquets de dépendance non dev. J'ai réalisé, en consultant les archives de paquets ubuntu, que certaines de ces bibliothèques changent de nom dans différentes versions d'ubuntu:

libboost-filesystem1.65 et libboost-filesystem1.58

Dois-je créer un package distinct pour chaque version d'ubuntu (14, 16, 18, etc.)?

De plus, mes fichiers binaires sont compilés sur ubuntu 18 et sont liés à la dernière version de boost (1.65). Lorsque je compresse et installe la même chose sur une version plus ancienne (ubuntu 16 où la version de boost est de 1,58), je reçois une erreur lors de l'exécution du programme binaire.

myprog: erreur lors du chargement des bibliothèques partagées: libboost_system.so.1.65.1: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type

Existe-t-il un moyen de compiler binaire sur une version d'ubuntu et de spécifier des dépendances de manière à ce que le package fonctionne avec toutes les versions d'ubuntu?

2
ramesh chhaba

Existe-t-il un moyen de compiler binaire sur une seule version d'Ubuntu et de spécifier des dépendances de manière à ce que le package fonctionne avec toutes les versions d'Ubuntu?

Pour les débats, en général, non, vous ne pouvez pas. Les dépendances livrées dans Ubuntu peuvent séparer ABI d'une version à l'autre, de sorte qu'une dépendance particulière peut ne pas avoir une ABI commune dans les versions fournies entre deux versions spécifiques d'Ubuntu.

Il est nécessaire de gérer les backports individuellement pour chaque version si vous souhaitez gérer les backports à l'aide de debs.

L'incorporation de dépendances est une façon de résoudre ce problème. Voir Snaps pour plus de détails. Vous pouvez également le faire avec les debs en théorie, mais vous constaterez probablement que l'outillage autour des captures rend la création beaucoup plus facile. Les instantanés sont également plus sûrs pour les utilisateurs, car ils fonctionnent en mode confiné.

1
Robie Basak