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?

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

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


3
Je ne pense pas que vous ayez lu la question.
Ryan C. Thompson
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.