Comment garder une trace des logiciels installés

8

De temps en temps, j'ai besoin de mettre à jour un logiciel fonctionnant sur l'un de nos serveurs de test au travail (principalement Debian). Ce qui me déroute presque à chaque fois, c'est qu'il n'y a pas qu'une seule façon d'installer un logiciel. Aujourd'hui, j'avais besoin de mettre à niveau Coffeescript. Je ne savais pas comment il avait été installé au départ et donc pas comment le mettre à jour de la meilleure façon.

Il aurait pu être installé avec apt ou manuellement en clonant le projet github et en le construisant moi-même ou via le gestionnaire de paquets nodejs npm. Après avoir lutté avec cela et jeté manuellement tous les fichiers et répertoires liés à coffeescript, j'ai réussi à faire une nouvelle installation. Mais ensuite, je voulais utiliser une commande coffeescript qui avait besoin que nodejs 0.6 et 0.4 soit installé.

Alors, laissez les jeux recommencer!

Nodejs a-t-il été installé manuellement? Ou en paquet? Ou a-t-il été mis là par Dieu? Je ne sais pas.

Je me demande donc s'il existe une stratégie simple pour mettre à jour le logiciel installé lorsque vous ne savez pas vraiment comment il a été initialement installé? Quelles sont les meilleures approches ici?

acmé
la source
2
À mon humble avis, la meilleure approche est de ne pas entrer dans cet état en premier lieu. Dictez que tous les logiciels doivent être emballés ou qu'ils ne seront pas installés, si nécessaire, faites le paquet vous-même. Mettez-les ensuite sur votre serveur de paquets interne.
Sirex

Réponses:

7

Il y a une règle simple que vous devez suivre, qui résoudra la plupart des cas:

Ne jamais mettre un fichier sous /bin, /lib, /sbinou /usr, à l' exception /usr/local, sans passer par le gestionnaire de paquets.

De cette façon, si un fichier se trouve dans la zone gérée par le gestionnaire de packages, vous savez qu'il provient d'un package. Si ce n'est pas le cas, vous savez que vous l'avez installé manuellement.

Vous devriez vous en tenir aux packages fournis par votre distribution chaque fois que possible. N'installez des packages tiers que si vous avez un besoin documenté de fonctionnalités non fournies par la distribution. «Je veux avoir la dernière version» n'est pas une justification valable. Si vous installez des packages tiers, notez où vous les avez obtenus et archivez les packages ( .rpmou .debfichiers) quelque part. Privilégiez les sources apt ou yum sur des téléchargements Web aléatoires.

Utilisez stow ou xstow pour les programmes que vous installez manuellement.

Utilisez etckeeper pour rester /etcsous contrôle de version . Engagez-vous chaque fois que vous apportez une modification, avec un message significatif.


Si vous avez rencontré une situation où vous avez fait les choses de façon sale et avez perdu la trace de l'origine d'un logiciel:

  • Installez une version propre de ce logiciel, à l'emplacement approprié en suivant les conseils ci-dessus.
  • Testez que la nouvelle installation fonctionne pour vos objectifs.
  • Basculez vos services pour utiliser la nouvelle installation.
  • Nettoyez l'ancienne installation du mieux que vous le pouvez.
Gilles 'SO- arrête d'être méchant'
la source
1

Je peux vous suggérer d'utiliser le puppetpour suivre le logiciel installé sous Linux.

Puppet, un moteur d'administration automatisé pour vos systèmes * nix, effectue des tâches administratives (telles que l'ajout d'utilisateurs, l'installation de packages et la mise à jour des configurations de serveur) sur la base d'une spécification centralisée.

Vous pouvez renvoyer le lien

Mughil
la source
Merci pour le lien! Mais j'ai besoin de quelque chose sur la ligne de commande. À première vue, la marionnette ne fonctionne qu'avec un système de bureau.
Acme
1

Si vous installez un package à l'aide d'apt-get, tous les packages dépendants seront installés par eux-mêmes car apt-get résout toutes les dépendances.

Dans mon cas, j'essaie d'installer chaque paquet par ligne de commande en utilisant apt-get dans la mesure où le paquet est là dans les référentiels Ubuntu. S'il n'est pas présent dans leur référentiel, vous devez lire le manuel d'installation de cet utilitaire et l'installer selon que l'utilitaire utilise Makefile ou autre chose.

pradeepchhetri
la source