La compilation et l'installation de logiciels sont une douleur et un problème que je ne peux pas surmonter. Je veux juste parcourir ma compréhension de ce processus avec quelqu'un de plus compétent pour éclaircir mon esprit et passer au niveau suivant.
De nombreux logiciels scientifiques dont j'ai besoin ne sont pas distribués sous forme de packages. Je comprends que "./configure" configure les variables de compilation et la vérification des dépendances "make" fait la compilation "sudo make install" met toutes les bibliothèques et les bacs à leur place. Mais ça ne marche jamais. Je sors rarement de l'étape a) "./configure" sans entrer dans l'enfer des dépendances, et si je le fais, b) "sudo make install" nuira probablement à ma boîte.
a) L'enfer de la dépendance est très frustrant. Parfois, j'ai la bibliothèque, mais ça ne lui plaît pas. Ou la bibliothèque ne veut pas installer. Ou "configurer" ne le trouve pas. Ou ma distribution l'a placé quelque part où il ne devrait pas être. Ou il y a deux versions dans mon système. Le problème est que je ne comprends pas comment diagnostiquer et donc résoudre ces problèmes. Quelles sont les bonnes références à apprendre pour quelqu'un qui n'a pas besoin de devenir programmeur?
b) Ma compréhension est que «make install» remplacera certaines bibliothèques et modifiera les paramètres sans que mon gestionnaire de paquets en soit conscient. Par conséquent, certains programmes ne s'exécutent pas, d'autres ne peuvent pas être mis à jour. Donc, si je n'utilise pas "make install", et que je garde juste le binaire compilé dans mon répertoire utilisateur avec un lien symbolique ajouté au PATH, serai-je en clair?
Ma boîte est mono-utilisateur, a des tonnes de HD gratuit, donc je ne me soucie pas vraiment d'avoir plusieurs (des dizaines) de copies de bibliothèques si cela résout mes problèmes. L'espace est bon marché.
apt-get build-dep <package>
pour installer automatiquement les dépendances nécessaires.Réponses:
La plupart des paquets auront
<package>-dev
(pour Debian) ou<package>-devel
(pour Red Hat) qui seront les bibliothèques nécessaires pour créer des liens.Ainsi, par exemple, si la source le dit
libxml
, dans les systèmes basés sur Debian, vous trouverezlibxml2
etlibxml2-dev
(utilisezapt-cache search <dependancy>
pour les trouver).Vous en aurez besoin
libxml2-dev
pour le construire et l'libxml2
exécuter.L'
./configure
étape prend généralement en charge les indicateurs comme--with-libxml=/usr/lib/
pour le pointer vers les bibliothèques correctes (./configure --help
doit répertorier toutes les options). Il prend également généralement en charge la modification de l'emplacement d'installation avec--prefix=$HOME/sw
. L'utilisation d'un préfixe en dehors de ce que votre gestionnaire de packages contrôle est le meilleur moyen d'éviter les conflits avec les logiciels installés par le gestionnaire de packages.Sur Debian et dérivés en utilisant un
--prefix
des/usr/local/
ou/opt/local/
devraient être en sécurité.Si une bibliothèque (ou une version) dont vous avez besoin n'est pas disponible dans le gestionnaire de paquets, téléchargez simplement la source et compilez-la en utilisant des options similaires. Surtout, utilisez un
--prefix
extérieur à votre gestionnaire de paquets et lors de la compilation du logiciel que vous souhaitez vraiment utiliser--with-<library>=/<path/to/installed/library>
.la source
Il y a l'outil
auto-apt
qui peut être utilisé pour cela.De l' homme auto-apt :
Il est utilisé comme suit:
Une autre façon est d'utiliser
apt-get build-dep <package>
sur les distributions basées sur Debian.la source
apt-get build-dep <package>
travaillé pour moi. C'était frustrant de courir./configure
encore et encore pour apprendre un package supplémentaire!Pour les distributions basées sur RPM, vous pouvez vous essayer à créer des packages appropriés (ce n'est pas si difficile ...).
Les avantages d'un package approprié sont que votre gestionnaire de packages garde une trace du logiciel et vous pouvez facilement répliquer votre configuration ailleurs / sur la prochaine machine. Avec un package source approprié, le portage vers l'avant (nouvelle version en amont, correctif de correction de bogue, les bibliothèques sous-jacentes sont mises à jour) est plus facile que d'avoir à tout comprendre à partir de zéro la prochaine fois.
la source