Zypper: Comment lister les packages installés qui ne sont pas dans un référentiel

4

Dans un système utilisant Zypper pour la gestion des paquets (openSuse, dans mon cas), comment obtenir une liste de tous les paquets installés qui ne sont pas associés à un référentiel actuellement activé?

Problème réel: lors de la mise à niveau de distributions (p. Ex. D'OpenSuse 12.1 à 12.2), je désactive tous les référentiels non standard que j'ai activés. Souvent, je ne les ajoutais que pour obtenir une nouvelle version d'un outil particulier, mais cette version plus récente est incluse par défaut dans la distribution mise à jour. Parfois, cependant, des packages supplémentaires ont été installés à partir du référentiel, mais je ne sais pas comment les détecter. Le système fonctionne, mais ces packages ne seront jamais mis à jour puisque j'ai supprimé le référentiel fournisseur après la mise à niveau.

David B.
la source

Réponses:

3

Il s’agit un peu de déconner avec les demandes de renseignements de zypper.

1) Trouvez les paquets installés, qui proviennent de dépôts non-opensuse-distribution-distribution:

zypper search -s | grep "i |" | grep -vi "| patch" | grep -vi "| opensuse" > list1.txt

2) Recherchez les paquetages disponibles dans les référentiels opensuse (qu'ils soient installés ou non):

zypper search -s | grep "v |" | grep -vi "| patch" | grep -i "| opensuse" > list2.txt

3) Identifiez les paquets de list1, qui ne sont pas représentés dans list2:

cat list1.txt | cut -d " " -f3 | cut -d " " -f1 | while read line
do
    if [ "$(cat list2.txt | grep -i $line)" = "" ]; then
        echo "$line"
    fi
done

Cela devrait en quelque sorte résoudre le problème (testé sur openSUSE 11.3).

pme
la source
1

L'option paest probablement plus appropriée:

zypper pa -i

répertorie tous les packages installés ainsi que leurs versions et référentiels disponibles. Vous pouvez choisir de ne répertorier que les packages appartenant à un certain référentiel avec l' -rindicateur:

zypper pa -i -r openSUSE-12.1

à partir de là, vous pouvez utiliser les stratégies proposées par @ernestopheles pour trouver celles qui correspondent à vos besoins.

Chris Maes
la source
J'ai commencé à utiliser zypper pa -i | grep @System; J'avais l'habitude d'utiliserzypper search -i -s -t package | grep "| (System Packages)\s*$"
ShadSterling