0 votes

Comment dois-je installer un logiciel à partir des sources afin de rendre ma configuration gérable et reproductible ?

Question connexe sur Unix/Linux : Comment dois-je installer un logiciel à partir de la source afin de rendre ma configuration gérable et reproductible ? Toutefois, j'ai adapté cette question à l'écosystème Mac OS X.

Je travaille avec de nombreux logiciels scientifiques sur Mac OS X (actuellement 10.7, mais aussi 10.6). Afin d'optimiser les performances et d'avoir accès aux dernières fonctionnalités, il est souvent préférable de compiler les logiciels à partir des sources.

Toutefois, cette méthode est compliquée et peut entraîner des problèmes de configuration. Étant donné que je développe également sous Linux, j'ai examiné toutes les suggestions de la section Question sur Unix et Linux "Comment compiler et installer des programmes à partir des sources". et le Question Unix & Linux Où dois-je mettre les logiciels que je compile à partir des sources ? pour obtenir des conseils. Ces questions sont un bon point de départ, mais je ne vois pas très bien comment je peux gérer facilement les dépendances et la configuration. Par exemple, si je construis la branche de développement de NumPy à partir des sources, comment dois-je détecter, gérer et résoudre les dépendances afin de pouvoir gérer ma configuration ? Un gestionnaire de paquets comme MacPorts, Homebrew ou Fink est une option, mais si je choisis cette voie pour gérer ma configuration, comment compiler les paquets pour pouvoir utiliser ces gestionnaires de paquets pour gérer les dépendances ? Existe-t-il quelque chose comme checkinstall pour ces gestionnaires de paquets ? Mon objectif ici est de rendre l'installation et la désinstallation de logiciels relativement faciles sans encombrer ma configuration.

J'aimerais également que ma configuration soit reproductible. J'entends par là que j'aimerais mettre en place un flux de travail pour l'installation de logiciels sur ma machine afin de pouvoir le répéter exactement lors d'une nouvelle installation du système d'exploitation. Existe-t-il une meilleure pratique pour cela ? Lorsqu'il s'agit de paquets standard dans un gestionnaire de paquets Linux, la méthode la plus simple pour répéter l'installation d'un logiciel consiste à créer un script contenant les fichiers appropriés. apt-get install <package> (ou équivalents). Cependant, lors de l'installation d'un logiciel à partir des sources, je pourrais voir cette méthode devenir très compliquée. Existe-t-il une meilleure méthode ?

Par ailleurs, pour Mac OS X, de nombreuses applications sont installées en copiant un fichier *.app pour /Applications ou en double-cliquant sur un *.pkg fichier. Puis-je les installer depuis une ligne de commande et script l'installation de ces paquets ? En outre, existe-t-il un bon moyen de désinstaller ces paquets ?

2voto

yoliho Points 340

Je pense qu'un gestionnaire de paquets fera la plupart des choses dont vous avez besoin. Je vais montrer macports car c'est celui que je connais mais les autres ont des fonctionnalités similaires.

Si vous utilisez les paquets standards, c'est-à-dire ceux qui sont à jour et qui ont été empaquetés, alors macports fera toutes les dépendances pour vous. Par exemple, la construction de scipy sait qu'il doit construire numpy en premier et le fera. Vous pouvez également installer un port facilement - macports vous dira si des ports dépendent de lui. Si un port est modifié, macports mettra à jour les ports qui en dépendent.

Vous pouvez également modifier manuellement le port pour traiter les versions de développement de numpy par exemple. Vous devrez produire une copie du fichier de portage et l'éditer, cf. Guide des macports . Le minimum serait de changer la version et les règles de téléchargement pour que vous obteniez un code différent mais pouvant inclure de nombreux correctifs pour les fonctions spécifiques à OSX.

Vous pouvez garder la trace de ce que vous avez installé en port list (également des appels plus avancés pour minimiser le nombre de commandes dont vous avez besoin. Les changements que vous avez faits seront dans votre dépôt local de Portfile qui devra être sauvegardé et un petit changement à la configuration défuelle de macports effectué.

1voto

Philzen Points 111

On dirait qu'il y a vraiment deux questions ici :

  • Comment auto configurer un code source distribué.
  • Comment installer des paquets d'applications précompilées à partir de la ligne de commande.

Pour la distribution des sources, il semble que GNU autoconf est ce que vous recherchez.

Pour les produits précompilés .app l'installation en ligne de commande est aussi simple que

cp -R MyApp.app /Applications/

Cela suppose une version 10.5 ou ultérieure, où les outils de ligne de commande sont entièrement compatibles avec OS X.

Pour les produits précompilés .pkg l'installation en ligne de commande est

installer -package MyApp.pkg -target /

Les deux commandes ci-dessus doivent être précédées de sudo si l'installation nécessite des privilèges administratifs. En cas de doute, supposez que ce sera le cas :

sudo installer -package MyApp.pkg -target /

Conseil bonus pour l'installateur : vous pouvez transformer n'importe quel dossier en une .dmg comme ça :

hdiutil create -ov -format UDBZ -noscrub -srcfolder MyAppsFolder/ MyAppImage.dmg

Inclure un lien symbolique vers /Applications/ dans ce dossier, à côté de votre .app et les utilisateurs finaux peuvent faire un glisser-déposer.

Conseil bonus avancé : Recherchez dans PAM l'utilitaire PERL Mac::Finder::DSStore. Il vous permet d'éditer le fichier .DS_Store dans le dossier modèle de votre .dmg afin de pouvoir placer précisément les icônes et les graphiques.

1 votes

Vous avez raison pour la deuxième partie : utiliser cp est si évident, je ne sais même pas pourquoi je n'y ai pas pensé ! Pour la première partie, autoconf ne résoudra pas le problème. J'utilise régulièrement autoconf pour configurer les Makefiles. Le problème pour moi est que lorsque j'installe le logiciel (c'est-à-dire le fichier make install partie de la ./configure && make && make install normalement, je les exécute séparément). Peu de paquets fournissent un make uninstall comamnd, c'est pourquoi checkinstall a été développé. Je suis à la recherche de quelque chose comme checkinstall pour Mac OS X.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X