Meilleure approche pour écrire un programme d’installation générique pour une application Linux?

Nous avons une application de serveur Linux qui comprend un certain nombre d’outils open-source ainsi que des programmes que nous avons écrits nous-mêmes. Idéalement, nous aimerions pouvoir installer cette application sur toute dissortingbution Linux commune.

Dans le passé, nous avons écrit des scripts Perl pour automatiser les installations de cette application. Malheureusement, en raison des particularités de différentes dissortingbutions Linux, la logique à l’intérieur de ces scripts d’installation est extrêmement complexe et peut changer à mesure que de nouvelles versions de chaque dissortingbution sont disponibles. Maintenir l’installateur devient ainsi l’une des parties les plus longues du projet!

Je cherche de l’aide, que ce soit un cadre, de la documentation, des exemples de code, qui peuvent rendre ce processus moins pénible. Voici les types de choses que notre installateur doit faire:

Au lieu de l’approche du programme d’installation, je pense qu’il serait préférable d’avoir un système de génération qui génère des fichiers .deb ou .rpm adaptés à l’installation sur chaque système à prendre en charge.

La méthode la plus simple serait d’utiliser checkinstall , qui crée des paquets à partir des fichiers installés via “make install”. Ainsi, vous construirez votre application sur chaque système et créerez le package comme par magie dans le format natif de la dissortingbution.

Je crois que la plupart des tâches que vous décrivez sont assez standardisées entre les dissortingbutions Linux. D’après mon expérience, la famille Debian (y compris Ubuntu) et la famille Red Hat (y compris Fedora et CentOS) devraient fonctionner comme suit:

  • Créer des comptes d’utilisateurs / de groupes – Commande adduser
  • Créer des arborescences de répertoires – mkdir ou install ou simplement développer une archive
  • Installer des applications open source – Sauf si vous avez des besoins particulièrement ésotériques, cela devrait probablement être laissé au gestionnaire de paquets de la dissortingbution.
  • Installer des fichiers – install ou simplement développer une archive
  • Scripts de démarrage et d’arrêt – install dans /etc/init.d puis un lien symbolique vers /etc/rc*.d

VMware Server est disponible gratuitement pour Linux et effectue la plupart des tâches que vous décrivez. Il utilise Perl et peut-être shell pour son installation et sa configuration, vous pouvez donc voir l’approche qu’il prend.

Cependant, en tant qu’administrateur Linux, je préfère fortement les applications qui s’intègrent à mon système de gestion de paquets. En d’autres termes, créez des fichiers .deb et .rpm, comme l’a suggéré Vinko Vrsalovic. Les modules de construction sont extrêmement bien documentés:

  • Création de RPM pour Fedora (ou Red Hat ou CentOS): documentation préliminaire , Guide RPM
  • Construction de .debs pour Debian (ou Ubuntu): Guide du responsable Debian

J’ai essayé Autopackage il y a quelques années, je ne sais pas à quel point il est universel mais ça a plutôt bien fonctionné (c’était la seule façon vraiment universelle à l’époque). Vous devez sûrement fournir des méthodes compatibles avec LSB pour créer vos propres répertoires, mais ce logiciel devrait vous aider.

Bien qu’il y ait probablement encore trop de diversité parmi les dissortingbutions Linux pour tout faire de manière complètement indépendante de la plate-forme, mais je peux me tromper.

Vous pouvez essayer BitRock InstallBuilder . C’est un outil d’installation multi-plateforme qui vous permet de faire exactement ce que vous recherchez (append des utilisateurs, installer des services, installer des binarys pré-compilés, etc.). Bien que certains des autres articles mentionnent un certain nombre d’outils que vous pouvez utiliser dans vos scripts, le problème est que chaque dissortingbution Linux est un peu différente et que des tâches simples comme append un utilisateur ou un installateur sont soudainement inutiles lorsque vous devez faites-les sur Debian, Ubuntu, Mandriva, RedHat, Gentoo, etc. Un bon programme d’installation multi-plateforme devrait vous isoler de tout cela. De nombreuses entresockets commerciales open source telles que MySQL, SugarCRM, Zenoss, Jaspersoft, Groundwork, etc. ont construit des installateurs basés sur notre technologie à cause de cela (en plus de leurs archives tar, etc.) Nous fournissons également des licences gratuites pour des projets open source .

Autopackage a maintenant fusionné avec le projet Listaller. La documentation n’est pas encore complète mais semble fonctionner.