Ubuntu, comment configurer une nouvelle machine comme une machine existante

27

J'ai une configuration de machine avec les applications dont j'ai besoin, et j'aimerais l'installer sur une nouvelle boîte Ubuntu.

Existe-t-il un script qui listera toutes les applications installées, afin que je puisse faire la différence entre les cases et ainsi ajouter les éléments manquants?

Merci d'avance, Chris

Chris Kimpton
la source

Réponses:

18

En plus des astuces dpkg mentionnées par pjz, vous pouvez également consulter etckeeper ( tutoriel ) - une application qui place votre / etc / * sous contrôle de version, ce qui facilite la recherche des modifications que vous avez apportées et leur réplication sur d'autres les serveurs.

De plus, pour une liste plus courte que celle produite par la méthode de pjz, vous pouvez utiliser

$ deborphan -a --no-show-section > /tmp/mypackagelist

Cela vous donnera une liste de packages qui installeront tous les autres packages dont vous avez besoin en tant que dépendances. Peut être utile si vous souhaitez réellement parcourir la liste. (dpkg --get-selections produira une longue liste). De plus, la liste est suffisamment courte pour que vous puissiez ajouter des retours à la ligne et commenter les entrées avec '#'. Ensuite, lors de l'installation des packages supplémentaires, vous pouvez le faire

$ grep -v '#' /tmp/mypackagelist | xargs apt-get install -y

De cette façon, s'il y a des packages que vous souhaitez uniquement installer sur certaines machines, vous n'avez pas à les supprimer complètement de la liste des packages.

Hamish Downer
la source
etckeeper a l'air vraiment intéressant (+1).
jkp
17
dpkg --get-selections >/tmp/mypackagelist

devrait faire l'affaire. Ensuite, après vous être assuré que votre /etc/apt/sources.list sur la nouvelle machine a le même ensemble d'entrées que sur l'ancienne, copiez mypackagelist sur la nouvelle machine et faites:

cat mypackagelist | xargs apt-get -y install 

et vous devriez être prêt à partir.

Notez que la ligne dpkg --get-selections est également une bonne information à mettre dans votre / etc / dir occasionnellement - cela signifie que vous n'avez pas à vous soucier de sauvegarder / bin / et / usr / bin / et ainsi parce que vous savez quels packages sont sur le système.

pjz
la source
Oui, Jeff, mais qu'en est-il des modifications apportées aux fichiers de configuration? que diriez-vous des options de dpkg-reconfigure? Que diriez - vous ... hostnames utilisateurs, actions, supports ... Voir ma réponse au sujet ddci - dessous
elcuco
2

Les forums Ubuntu ont une bonne réponse

  1. Sur l'ancienne machine: $ dpkg --get-selections> installed-software
    • Cela obtient votre liste des applications installées
  2. Sur la nouvelle machine: $ dpkg --set-selections
    • Cela définit la nouvelle machine pour installer les packages non installés sur la nouvelle machine.
    • Il peut être intéressant de voir si la nouvelle machine a des packages non installés sur l'ancienne machine, vous pouvez donc trouver la commande dpkg --get-selections> sur la nouvelle machine, puis utiliser diff pour comparer les fichiers de sortie des deux.
  3. Enfin, sur la nouvelle machine: $ dselect et les packages seront installés.

Quelques liens supplémentaires issus de la discussion sur les forums:

  1. N'oubliez pas vos clés gpg (du même fil)
  2. Comment installer tous les packages souhaités et désinstaller tous les packages indésirables
pcapademic
la source
2

Les meilleures commandes de dpkg peuvent être [machine d'origine]

dpkg --get-selections | grep -v deinstall > packages_list

puis lors de l'installation [nouvelle machine; après avoir transféré la liste packages_]

sudo dpkg --set-selections < packages_list
sudo apt-get -u dselect-upgrade
Benji
la source
1

Si vous n'êtes pas un fan de CLI (bien que vous devriez vraiment l'être), vous pouvez utiliser le gestionnaire de packages Synaptic pour enregistrer l'image des packages installés et utiliser ce fichier (à nouveau via Synaptic) pour charger la nouvelle machine. Sous l'option fichier / enregistrer les marquages, il y a une case à cocher appelée "enregistrer l'état complet".

Nerdfest
la source
Je pense que c'est la méthode trouvée par Cory
jbdavid
1

Pourquoi ne connectez-vous pas simplement la machine à l'aide dd?

elcuco
la source
1
Cette. Il suffit de cloner la machine et de changer le nom, c'est de loin le moyen le plus rapide de le faire.
pjc50
1

L'utilisation de FSArchiver pour répliquer les machines est parfaitement acceptable. Sinon, voici des paires de commandes utiles, dont la première moitié peut également être ajoutée à votre cron de sauvegarde:

debconf-get-selections
debconf-set-selections

~

aptitude-create-state-bundle
aptitude-run-state-bundle --unpack

~

dpkg --get-selections
dpkg --clear-selections; dpkg --set-selections

Les emplacements que vous devez répliquer sont / etc et / var. Les commandes ci-dessus manipulent directement quelques fichiers dans / var, et certains fichiers de configuration dans / etc indirectement via debconf. Vous obtiendrez le même effet en répliquant simplement ces sous-arbres et en exécutant aptitude.

Tobu
la source
0

Je suppose que Docker serait le moyen de le faire maintenant - définir les exigences dans un Dockerfile - vous pouvez ensuite l'exécuter sur n'importe quel hôte Docker.

Chris Kimpton
la source