Quelle est la meilleure façon de publier une application uniquement binaire pour plusieurs distributions Linux?

StackOverflow https://stackoverflow.com/questions/1502543

Question

J'ai une application Linux source fermée que je veux distribuer. Cette application utilise wxWidgets / GTK donc il y a une liste énorme de bibliothèques partagées (60+) que cette application dépend.

Quelle est la façon preferred de publier l'application et de soutenir le nombre maximal de distros?

  • Est-il pour construire l'application pour chaque distribution pris en charge et les publier séparément? Cela a l'inconvénient d'être compliqué à construire (un chroot et une construction par distro) et ne fonctionne que sur la distribution pris en charge.

  • Faut-il ajouter toutes les bibliothèques partagées dans le programme d'installation et de les utiliser avec la variable d'env LD_LIBRARY_PATH (comme VMware)? Cela a l'inconvénient d'augmenter la taille de l'installateur.

  • est-il pour construire une application complètement statique? Ceci est sûrement pas possible, car cela casserait certaines licences.

  • Est-ce un mélange de ce ou une autre option? Comment les fournisseurs les plus commerciaux publient leur propre application graphique (de préférence à base GTK)?

Était-ce utile?

La solution

Vous devriez jeter un oeil à la Linux Standard Base . Il a été conçu spécifiquement pour aider les gens dans votre position. Il définit un environnement que les développeurs d'applications 3ème partie peuvent compter sur - donc il y a la version ensemble de libc et d'autres bibliothèques, et certains programmes et répertoires vivent dans des endroits connus. Tous les principaux support de distribution Linux LSB.

Cela dit, vous devez emballer encore probablement le résultat spécifiquement pour chaque grande distribution -. Juste pour que vos clients peuvent gérer votre application avec leurs outils de gestion de paquets familiers

Autres conseils

En fait, il y a deux façons. Vous pouvez choisir les deux, si vous le souhaitez.

La première est les jeux de façon courante et ce faire. Faire un lib / sous-répertoire, utilisez LD_LIBARY_PATH et comprennent à peu près toutes les bibliothèques partagées dont vous avez besoin. Cela garantit une expérience sans douleur de votre utilisateur, mais ne fait plus le programme d'installation et probablement l'empreinte mémoire plus aussi bien. Je ne tenterai même pas de réutiliser les bibliothèques pré-existantes, car elles ont tendance à disparaître à mesure que les mises à jour sont apportées au système.

La deuxième façon est de fournir des paquets de distribution. Ceux-ci ne sont généralement pas si difficile à faire, et ensuite intégrer bien avec les distributions, et seront en outre sembler beaucoup plus accueillant à vos clients. Les 2 inconvénients sont les suivants: Vous aurez besoin de le faire pour chaque distribution (Debian, Ubuntu, SuSE, RedHat est probablement un bon point de départ), et vous aurez besoin de les maintenir: au fil du temps, certaines bibliothèques ne seront plus disponibles dans une version spécifique, et donc l'utilisateur obtiendra des problèmes de dépendance.

Dans votre installateur, vérifiez que les bibliothèques sont installées et télécharger les binaires pour ceux qui ne sont pas.

Pour plus de confort de vos utilisateurs, s'il n'y a pas de connexion à Internet, ont le programme d'installation génère une clé que vous pouvez entrer sur votre site pour recevoir une archive ZIP que vous pouvez ensuite alimenter à l'installateur.

Pour le plus grand confort, vérifiez que les bibliothèques sont disponibles sur le distro cible et demander à l'utilisateur d'utiliser l'outil standard d'administration pour les installer. De cette façon, vous ne polluera pas l'ordinateur avec les différentes versions de la même bibliothèque.

Cela dit: Il serait peut-être plus intelligent de mettre votre code précieux dans une bibliothèque de liens et prévoir que, blob binaire dans un paquet source. De cette façon, votre code est aussi protégé qu'il serait en binaire pur et les utilisateurs peuvent compiler le code de la colle sur leur système favori sans avoir à se soucier des choses.

Je veux dire: Combien vaut la peine est la partie de votre code qui met en place l'interface utilisateur? Combien allez-vous perdre quand quelqu'un vole cela?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top