Pouvez-vous m'aider avec mon problème de dépendance logicielle?

12

Il s'agit d'une question canonique sur les dépendances de compilation et la gestion des packages.

J'ai une question concernant la compilation de ports / logiciels ou l'installation de RPM sur mon serveur * nix. Lorsque j'essaie de le faire, je reçois beaucoup de messages sur les dépendances manquantes.

La communauté Server Fault peut-elle aider?

dunxd
la source

Réponses:

10

Bienvenue dans Server Fault. En général, ce type de question n'est pas sur le sujet ici. Il est prévu que la plupart des administrateurs système auront déjà rencontré ce problème avant de devenir administrateur système en bricolant leurs propres postes de travail. Cependant, les administrateurs système provenant d'un arrière-plan Windows n'ont peut-être pas fait face à cela, alors voici quelques éléments à considérer:

Pourquoi ne pas utiliser un gestionnaire de packages pour installer des logiciels sur votre serveur?

Les gestionnaires de packages tels que yumou aptgèrent ces dépendances pour vous. De plus, ils peuvent également être utilisés pour gérer les mises à jour du logiciel sur votre serveur. La plupart des versions de * nix auront un gestionnaire de paquets installé par défaut, en particulier sur les VPS fournis avec le système d'exploitation préinstallé. Si vous êtes vraiment nouveau dans ce domaine, utilisez l'un d'entre eux sur votre système de production et économisez des aventures dans la compilation ou l'installation de RPM de pointe pour votre environnement de test.

Mais je dois utiliser un package plus à jour que ce qui est disponible dans mon gestionnaire de packages!

La plupart des gestionnaires de packages peuvent être configurés pour utiliser différents référentiels - vous trouverez peut-être qu'il en existe un qui fournit la version du package dont vous avez besoin et vous permet toujours de profiter des fonctions de votre gestionnaire de packages.

Le package dont j'ai besoin n'est disponible via aucun référentiel ou gestionnaire de package

Dans ce cas , vous avez probablement faire besoin de comprendre les dépendances (ou le sucer et utiliser une version plus stable de / commune du logiciel). Vous devriez probablement faire ce qui suit dans un environnement de test et prendre soigneusement note de ce que vous faites:

  • Assurez-vous de lire la documentation du logiciel que vous installez - cela listera probablement ce que vous devez installer en premier, mais pas ce qui est requis pour ce logiciel.
  • Utilisez votre gestionnaire de packages pour installer les éléments nécessaires - dans la plupart des cas, ils seront disponibles.
  • Une fois que vous avez terminé, essayez d'installer.
  • Si vous voyez toujours des messages sur les dépendances manquantes, notez-les tous et essayez à nouveau d'en installer autant que possible à l'aide de votre gestionnaire de packages.
  • Si une dépendance n'est pas trouvée, vous devez la considérer comme une sous-tâche et la traiter récursivement (trouver l'archive source, trouver les dépendances, installer).
  • C'est un processus itératif.

J'ai toujours des problèmes!

Si vous avez suivi toutes les étapes ci-dessus et que vous rencontrez toujours des problèmes, vous avez peut-être rencontré un problème étrange avec lequel d'autres failles de serveur peuvent être ravies de vous aider. Créez une nouvelle question, en donnant des détails sur le logiciel que vous essayez d'installer, la version et les messages d'erreur exacts que vous voyez.

Conseils spécifiques pour les principaux systèmes de gestion de colis

Gestion des packages RPM (RHEL / Fedora et clones) et DEB (Debian / Ubuntu et clones)

  • yum whatprovides filename est un excellent moyen de trouver le package qui fournit un fichier ou une bibliothèque spécifique sur un système de type RHEL.
  • Ne pas utiliser ./configure && make && make installaveuglément si possible! La gestion des packages a été inventée pour cette raison même afin d'éviter le désordre gênant et impossible à gérer qui résulte de l'installation introuvable de nombreux fichiers en conflit.
  • De nombreuses bibliothèques sont divisées en deux parties: binaire (objets partagés, par exemple) et développement (en-têtes). Ainsi, vous auriez besoin à la fois libfooet libfoo-devel(ou -devpaquets).
  • Pensez à utiliser fpm( https://github.com/jordansissel/fpm ) pour convertir les tarballs en RPM et DEB soignés
  • Si vous lancez vos propres packages, VOUS êtes la personne responsable de leurs mises à jour, tests et maintenance. Si vous n'avez pas d'infrastructure pour cela, vous visez certainement trop haut.

Recherche de dépendances par nom de fichier pour les RPM

http://rpmfind.net est un bon endroit pour rechercher des noms de packages si vous connaissez le nom du fichier dont la procédure d'installation se plaint. Cependant, il n'est pas recommandé de faire correspondre et mélanger les packages de différentes distributions.

dunxd
la source
Je pense qu'il serait utile de fournir une section qui traite de la question des dépendances de bibliothèque qui peut être un peu plus délicate à résoudre - mais je suis moins expérimenté dans ce domaine - quelqu'un veut-il contribuer?
dunxd
Les éléments que je recommanderais fortement comprendraient des détails sur les RPM src et la façon de maintenir un référentiel local personnalisé. La construction de fichiers deb ou rpm devrait faire partie de la ceinture d'outils de quiconque doit travailler avec des exigences de package décalées.
Tim Brigham
Cela pourrait valoir la peine de l'étendre pour aborder le sujet des piles d'applications et de leurs pièges. La question « plus à jour paquet » m'a rappelé une récente .
Andrew B
C'est un wiki communautaire alors n'hésitez pas à ajouter des choses, ou bien sûr à donner votre propre réponse :-)
dunxd