Que dois-je savoir si je veux écrire une application qui s'exécutera sur n'importe quelle distribution Linux?

15

Je prévois d'écrire une application que j'aimerais pouvoir exécuter sur n'importe quelle installation Linux sans avoir à réécrire le code en le faisant (sauf peut-être l'interface, GNOME vs KDE, etc.).

Je ne suis pas très expérimenté dans la minutie des différences entre les distributions, et je ne peux pas non plus fournir de détails sur le projet car il vient tout juste d'entrer dans la phase de planification, sauf qu'il va fouiller profondément à l'intérieur du noyau afin d'interagir avec autant de matériel informatique que possible.


la source
open source ou propriétaire? compilé ou interprété?
xenoterracide
open source et compilé.
Eh bien, vous n'avez pas à vous soucier d'écrire une petite application / makefile ou quelque chose qui reliera votre programme, comme le fait Oracle
xenoterracide

Réponses:

10

Quelques points à garder à l'esprit lors du développement,

  1. Utilisez un système de construction standard
  2. Évitez les chemins de bibliothèque de codage en dur
  3. utilisez pkg-configplutôt des outils comme pour trouver les packages externes.
  4. Si votre application possède une interface graphique, utilisez des frameworks tels wxWidgetsque ceux qui peuvent rendre des éléments d'interface utilisateur natifs en fonction de l'endroit où vous exécutez.
  5. Évitez de créer des dépendances avec des packages qui ne s'exécuteront pas sur d'autres distributions.

La seule façon de vous assurer que votre application fonctionne sur toutes les distributions est de l'exécuter et de la tester. Pour cela, vous pouvez créer des machines virtuelles pour chaque distribution. VirtualBox peut être utilisé pour ce faire. J'ai environ 8 machines virtuelles sur ma boîte pour ce type de test.

Je pense que vous ne pouvez pas trop généraliser sur le déploiement de l'application car chaque distribution utilise une manière différente d'installer les packages. Debian utilise debet fedora rpm.

Navaneeth KN
la source
3
évitez tout simplement les chemins de codage durs, la plus grande différence entre TOUTES les distributions est leur gestionnaire de paquets et où ils mettent les choses. Supposons qu'ils placent chaque fichier et répertoire dans un endroit différent de vous.
xenoterracide
2

Juste mon 2c, mais j'ai eu moins de maux de tête avec des applications qui viennent avec des packages dans les dépôts officiels ou qui sont compilées à partir des sources. Les applications distribuées en tant que binaires tiers ont tendance à souffrir de certains problèmes de dépendance. J'ai généralement besoin de les retrouver et de les résoudre manuellement.

Donc, si je devais publier une application Linux, je travaillerais soit pour l'empaqueter et la mettre dans les dépôts officiels. Sinon, je le distribuerais sous forme source et demanderais à l'utilisateur de le compiler pour leur système.

sybreon
la source
2

Si vous écrivez pour Linux non intégré, la principale chose à garder à l'esprit est que les différentes distributions auront une collection différente de versions de bibliothèque. Vous devez donc définir une ligne de base suffisamment ancienne. Comme Debian se met à jour lentement, Debian stable (ou oldstable quand elle existe, dans les quelques mois après une publication) a tendance à être un choix raisonnable.

Vous devrez emballer séparément pour chaque distribution. Si votre application est open source et réussit, vous pouvez compter sur quelqu'un pour la récupérer et contribuer à l'emballage, ce n'est donc pas une compétence essentielle. À part le conditionnement, les différences entre les distributions affectent principalement l'administration du système et non le développement ou l'utilisation quotidienne.

Si vous allez patcher le noyau, vous devrez tester avec plus de distributions car chaque distribution a ses propres correctifs qui pourraient provoquer des incompatibilités et chaque distribution a des paramètres de zone utilisateur qui peuvent dépendre de différents ensembles d'interfaces du noyau disponibles (par exemple, les exigences pour certaines choses ne pas être des modules).

Notez que ce que j'ai écrit ci-dessus n'est pas vrai si vous voulez que votre application fonctionne sur des systèmes embarqués (ce qui signifie ici tout ce qui n'est pas un serveur, un ordinateur de bureau ou un ordinateur portable), qui même lorsqu'ils exécutent un noyau Linux n'ont souvent pas les bibliothèques habituelles, en commençant par Glibc étant évité en faveur de µClibc , dietlibc , Bionic , etc.

Gilles 'SO- arrête d'être méchant'
la source
0

Les discothèques diffèrent principalement par les configurations / défauts de configuration et d'application. Chaque code qui s'exécute dans une architecture déterminée doit s'exécuter sur chaque distribution de cette architecture. Vous pouvez également exécuter facilement des applications GNOME dans KDE et vice-versa, vous pouvez donc choisir celle qui vous convient le mieux / votre base d'utilisateurs et vous avez terminé!

M. Shunz
la source
0

L'essentiel est de choisir une langue. Dans quelle langue cela sera-t-il exécuté? Si vous voulez vraiment tourner sur n'importe quelle distribution Linux, vous pouvez l'écrire en Python. Toute application python qui s'exécutera sur linux s'exécutera (essentiellement) sur n'importe quelle distribution linux avec 0 modifications.

Python a également de très bons classeurs GTK et Qt. Je n'ai jamais travaillé avec gtk, mais PyQt est vraiment génial de travailler avec.

Les avantages de python sont que vous n'aurez probablement pas besoin de compiler d'extensions (cela dépend totalement de ce que vous écrivez cependant. Même si vous en avez besoin, c'est assez facile.) Et vous avez également une excellente source de distribution via pypi . L'installation de programmes python à partir de là est généralement encore plus facile que le référentiel de packages distro.

Falmarri
la source