Y a-t-il un moyen d'obtenir DPKG, apt-get ou aptitude à produire une liste des packages à installer sur une deuxième machine pour dupliquer les packages installés sur une première?
I.e. Si j'ai installé un serveur uni Ubuntu, choisissez l'option SSHD au moment de l'installation, puis installée Constray-essentielle, je m'attendrais à ce que la sortie ressemble à quelque chose comme: p> J'aimerais voir juste la liste du paquet que je dois installer pour recréer mon ensemble actuel de packages sur une autre machine. p> est-ce possible? P> P>
4 Réponses :
Donc, vous souhaitez que la liste des packages a été explicitement installée (comme, dire, Ubuntu-Desktop et Openssh) et non les dépendances automatiques? Je ne suis pas positif, mais je pense que c'est ce que puis, sur l'autre ordinateur, utilisez le même "fichier" et exécuter p> je suis Pas absolument positif em> que ces commandes ne font que choisir manuellement des paquets, cependant, et je suis actuellement absent de tout système basé sur Debian pour vérifier. :) p> p> dpkg --get-sélections code> fait. Donc, vous pouvez faire
Non, on dirait que cela répertorie les packages qui ont été tirés en tant que dépendances. Sur ma machine, la liste comprend des packages tels que G ++, G ++ - 4.4, GCC ... que je sais a été installé par Build-Essential.
Maintenant, il manquera des packages, car certains paquets ont des dépendances circulaires. Mais ceux-ci ont tendance à être assez rares, il devrait donc vous demander suffisamment proche. P> deborphan code>, en quelque sorte. Il construit une liste de chaque paquet de votre système, des chiffres sur ce qui dépend de quoi et imprime les paquets qui n'ont aucune dépendance. Par défaut, il n'imprime que les bibliothèques (pour faciliter la recherche de bibliothèques installées par d'autres packages et ne plus besoin, d'où le nom). Il a des options pour faire ce que vous voulez, surtout. Je l'exécute comme: p>
deborphan -anp requis - non-show-section code> p>
-A code> Spécifie tous les packages (pas seulement des bibliothèques)
-n code> ignore "suggère" ou "recommande" Vérification de la dépendance (c'est-à-dire "dépend" de
-P requis code> répertorie tous les packages malgré la priorité
- No-Show-Section Code> n'indique pas quelle partie de Debian Il est intégré, juste une belle fonctionnalité de formatage, vous trouverez peut-être utile pour créer une liste. P>
Pourquoi "Deborphanan -anp -anp a-t-il besoin" d'inclure "GCC" dans sa production, lorsque "APT-RDepends Build-Essential" montre que "Build-Essential" dépend de "GCC"?
Est-ce qu'il montre une version spécifique de GCC, comme GCC-4.3 ou le paquet GCC lui-même? Si c'est le package "GCC", peut-être que la construction n'est pas réellement installée? ... Pas de bonnes suppositions, désolé. Dans ma sortie, je vois la construction-essentielle mais pas de GCC.
Le code que Dannysauer a affiché est un début. Une fois que vous avez une liste de packages qui inclut des dépendances, vous pouvez utiliser apt-rdepends Code>
pour trouver les dépendances d'un package particulier (voir cette page par exemple, utilisation et sortie). P>
Contour de procédure P>
apt-rdepends code> sur chaque li>
- Supprimer tous les packages de la liste qui apparaît dans la sortie de
apt-rdepends code> li>
ol>
Je pense que c'est aussi une approche viable, mais cela semble plus lent et plus de travail que le déborphane. Y a-t-il un problème avec l'utilisation de Deborphan que APT-RdePendends résout?
IIRC, deborphan code> fait simplement une liste de packages installés qui n'en ont rien dépencé d'eux. Cela peut ne pas être ce que vous voulez (voir le commentaire d'Eric ci-dessus sur
deborphan code> éventuellement des paquets manquants). Si vous avez des problèmes, j'ai mentionné
apt-rdepends code> car vous pouvez toujours obtenir une liste complète de tous les packages installés des deux machines, supprimez les packages communs aux listes et examiner les packages restants avec
apt-rdepends code> pour générer la liste la plus courte possible des packages qui recréeront votre package actuel sur la deuxième machine. Cela devrait également être facilement scriptable.
Qu'en est-il de cela:
#!/bin/bash packages=$(dpkg --get-selections | grep '[[:space:]]install$' | awk '{print $1}') for pkg in $packages do nr_lines=$(apt-cache -i rdepends $pkg | wc -l ) if [ "$nr_lines" = "2" ] then echo $pkg fi done