Comment créer une liste des packages installés pour une réinstallation facile / automatique après le formatage du disque

8

Je vais changer mon système de 32 bits à 64 bits, et ce sera le même que j'avais auparavant, Debian Squeeze, mais je ne veux pas perdre les programmes que j'ai installés auparavant, car je ne me souviens pas du nom de tous.

Je voulais donc une commande pour le faire pour moi, enregistrer le nom de tous les programmes que j'ai installés sur un fichier, mais pas les programmes standard fournis avec le système, et lorsque j'utilise l'autre système, je mentionnerais le nom de le fichier et votre répertoire pour que tout soit installé automatiquement.

Une dernière question: est-il possible de le faire avec des programmes installés manuellement avec dpkg-i package.deb? Si oui, comment puis-je faire cela?

Zignd
la source

Réponses:

7

Avez-vous essayé d'utiliser dpkg --get-selections >packages? Si vous souhaitez exclure certains packages, vous pouvez modifier le fichier de sortie packages. Lorsque vous avez terminé, transférez-le sur le système cible et dites:

dpkg --set-selections <packages

Et les packages seront marqués pour l'installation. Vous devrez probablement aussi dire aptitude update; aptitude dist-upgrade.

L'autre question: si ces packages sont i386des packages d'architecture et que vous les avez multiarchinstallés, vous pouvez installer les .debs avec l'habituel dpkg -i package.deb. Mais il est probablement préférable d'enquêter au cas par cas et d'installer des versions 64 bits de ces packages qui les ont.

Alexios
la source
Merci, vous m'avez vraiment aidé lorsque vous avez dit que les packages déjà installés sont dans l'architecture i386, je n'y avais pas pensé, je pense qu'il vaut mieux réinstaller ces autres.
Zignd
9

Sur les versions actuelles de Debian, vous pouvez obtenir une liste des paquets installés explicitement avec

apt-mark showmanual

Pour ceux qui exécutent des versions anciennes de Debian où apt-mark showmanualn'existe pas, ou si vous souhaitez effectuer des sélections supplémentaires, vous pouvez utiliser aptitude.

aptitude search '~i !~M' -F %p >package.list

~icorrespond aux packages installés; !~Momet les packages qui ont été installés automatiquement en tant que dépendance d'un autre package. -F %pmodifie le format de sortie pour inclure uniquement le nom du package.

Vous pouvez ultérieurement installer ces packages avec

apt-get install $(cat package.list)

Debian squeeze n'en a pas apt-mark showmanual, mais il en contient les apt-mark showautolistes installées automatiquement. Si vous l'utilisez, vous pouvez répertorier tous les packages de l'ancien système avec dpkg --get-selections >package.list, restaurer tous ces éléments, puis marquer les packages automatiques avec apt-mark markauto. Pour votre cas d'utilisation (32 bits à 64 bits), cette approche est susceptible de laisser quelques bibliothèques marquées comme manuelles, car elles ont des noms différents sous différentes architectures.

Notez que si le cas d'utilisation est de reproduire une installation identique, plutôt que de conserver l'ensemble des paquets mais de changer l'architecture, il existe maintenant un outil appelé apt-clone (distribué dans Debian depuis Wheezy) qui fait tout automatiquement.

Gilles 'SO- arrête d'être méchant'
la source
Malheureusement, ce n'est pas parfait. Quand je fais cela, la première chose qui est listée est "acl", que je n'ai pas explicitement chargée. En regardant rdepends, il semble que systemd en dépende et dans Debian 8 qui est déjà installé. Et, systemd est également sur cette liste. Ainsi, même si systemd et acl sont installés, aptitude ne les identifie pas comme "automatiques". Serait-ce un manque d'aptitude?
Liam
@Liam Je pense que l'installateur ne marque aucun package comme automatique. Même si c'était le cas, ce qui aurait du sens pour les bibliothèques, un package comme celui-ci aclpourrait être considéré comme une partie importante du système de base et serait donc marqué comme installé manuellement. Il a été installé «manuellement» par l'installateur initial plutôt que par l'utilisateur, mais même ainsi, la signification de «installé automatiquement» est «vous pouvez le supprimer en toute sécurité s'il ne casse pas les dépendances», et les packages fondamentaux nécessaires pour faire le le système ne fonctionne pas correctement.
Gilles 'SO- arrête d'être méchant'
1

Je ne vois pas de moyen simple et standard de le faire. Je crains que vous n'ayez à jouer avec dpkgles journaux et les options de, car dpkgcela ne distingue pas les "programmes standard fournis avec le système" et les autres.

CELA NE SERA PAS DIRECTEMENT , je préfère être clair en utilisant du texte en majuscule gras , mais vous pouvez faire quelque chose comme ça

  • Extrayez la liste des logiciels installés à partir des /var/log/dpkg.log*fichiers.

  • Supprimez ceux installés lors de l'installation du système. (Utilisez le temps d'installation pour les détecter)

  • Enregistrez la liste au dpkg --get-selectionsformat

Et voilà! Lorsque votre système est opérationnel, réinstallez vos programmes avec

 apt-get update
 dpkg --set-selections < yourSelection
 apt-get -u dselect-upgrade
deviantkarot
la source