Comment puis-je filtrer «dpkg --get-selections» sur les seuls packages disponibles dans les référentiels?

9

Je voudrais obtenir une liste des packages installés sur un système et les installer tous sur un autre système.

Je sais que cela dpkg --get-selectionspeut me donner une liste de tous les packages installés que je peux diriger dpkg --set-selectionssur le système cible. Cependant, certains des packages installés sont ceux que j'ai construits moi-même localement (en utilisant par exemple checkinstall) et ne sont pas disponibles dans les référentiels. Le dpkg --set-selectionsprocessus échouera s'il ne parvient pas à trouver ces packages dans les référentiels.

Existe-t-il un moyen de filtrer la liste générée par dpkg --get-selectionsafin qu'elle ne contienne que des packages dont la version actuellement installée est disponible dans mes référentiels actuels?

Ryan C. Thompson
la source

Réponses:

9

Je crois que le Centre logiciel a une fonctionnalité pour la synchronisation entre les ordinateurs ces jours-ci. Si cela gère correctement les paquets manquants, cela pourrait résoudre votre problème.

Le problème ici est qu'il dpkgne connaît pas les référentiels, uniquement les packages installés. Vous pouvez savoir si un package est disponible dans un référentiel en exécutant apt-cache policy $package. Si vous voyez un référentiel dans le Version Table, il est disponible là-bas.

Alors, qu'en est-il?. C'est lent, mais ça devrait marcher:

dpkg --get-selections '*' \
  | while read line; do
    apt-cache policy $(echo "$line" | cut -f1 ) \
      | grep -q 'http://' \
      && echo "$line"
done
tumbleweed
la source
Cela montrera la progression et écrit dans un fichier:total=$(dpkg --get-selections '*'|wc -l); i=0; dpkg --get-selections '*' | while read line; do i=$(($i+1)); apt-cache policy $(echo "$line" | cut -f1 ) | grep -q 'http://' && echo "$i/$total $line"; echo $line>>/var/tmp/dpkg-selection.list; done
rubo77
-4

Utilisez la commande suivante

dpkg --get-selections > installed-software

il créera un fichier appelé logiciel installé dans votre répertoire personnel

sur le nouveau système

dpkg --set-selections < installed-software

cela va lire la sélection et installer

sarveshlad
la source
3
Je ne pense pas que vous ayez lu la question.
Ryan C. Thompson