web-dev-qa-db-fra.com

Comment puis-je supprimer tous les packages d'un certain référentiel?

Pour une mise à niveau en douceur de la version 10.04 à la version 10.10, je souhaite supprimer tous les packages qui ne se trouvent pas dans les référentiels par défaut (par exemple, PPA au chrome et référentiels tiers). Quel est le moyen le plus simple (de préférence CLI) de rechercher et de supprimer ces packages?

Edit: cette question ne se limite pas aux PPA, je possède également un référentiel x2go. Je recherche donc une commande générique pour supprimer les packages appartenant à un certain référentiel. Pour les PPA, la question Comment supprimer les PPA a d'excellentes réponses.

30
Lekensteyn

Ce script peut lister tous les packages d'un serveur/branche particulier (en modifiant les deux variables déclarées):

#!/bin/bash

server="http://it.archive.ubuntu.com/ubuntu/"
branch="maverick-updates/main"

apt-cache policy $(dpkg -l | awk 'NR >= 6 { print $2 }') |
  awk -v server="$server" -v branch="$branch" \
    '/^[^ ]/      { split($1, a, ":"); pkg = a[1] }
    nextline == 1 { nextline = 0; if ($2 == server && $3 == branch) print pkg }
    /\*\*\*/      { nextline = 1 }'

si vous devez répertorier tous les packages ne provenant pas d'un serveur particulier, indépendamment de la branche, remplacez l'avant-dernière ligne par:

nextline == 1 { nextline = 0; if ($2 != server) print pkg }
11
enzotib

Départ ppa-purge Install ppa-purge .

Usage:

ppa-purge -purge <nameofppa> [-s hostserver]

La valeur par défaut du serveur hôte est ppa.launchpad.net.

Voici le lien vers la page de manuel pour la commande ppa-purge Manpage icon pour référence.

22
Vadim Rutkovsky

Surmonter le bogue multiarch de aptitude pour ppa-purge

Normalement, comme Vadim Rutkovsky et Takkat ont expliqué , exécuter ppa-purge avec la syntaxe par défaut est un moyen efficace de supprimer tout paquets fournis par un PPA, en les déclassant correctement vers des versions fournies dans d’autres sources logicielles configurées, lorsque cela est possible.

Cependant, comme Takkat l’a fait remarquer, bug 831768 empêche le ppa-purge de fonctionner correctement pour supprimer multiarch packages (comme les packages 32 bits installés sur des systèmes 64 bits). Ceci est dû au fait que aptitude ne peut pas gérer les dépendances conflictuelles dans les packages multiarch (c'est le problème du bogue), et le comportement par défaut de ppa-purge consiste à utiliser aptitude pour rétrograder les packages.

Heureusement, ppa-purge accepte l'indicateur -i qui le fait préférer apt-get à aptitude comme système principal Comme indiqué dans le rapport de bogue, utiliser apt-get est une alternative efficace. Pour appeler manuellement aptitude, le fait d'exécuter ppa-purge avec l'indicateur -i devrait constituer une solution efficace pour supprimer/rétrograder tous les packages fournis par un PPA, notamment: multiarch packages .

Comment faire

Voici la syntaxe:

Sudo ppa-purge -i ppa:ppaowner/ppaname

Comme d'habitude (idem quand l'indicateur -i n'est pas utilisé):

  • ppaowner est remplacé par le propriétaire du PPA.
  • /ppaname est facultatif. Si présent, ppaname est remplacé par le nom du PPA. Sinon, la valeur par défaut est ppa.

Par exemple , supposons que j'ai le PPA pour les versions instables de qBittorrent installé et que je souhaite le supprimer complètement, en rétrogradant automatiquement qBittorrent en la version disponible via mes autres sources logicielles en utilisant apt-get dans les coulisses au lieu de aptitude. Ensuite, je courrais:

Sudo ppa-purge -i ppa:hydr0g3n/qbittorrent-unstable

Où c'est documenté

Pour une raison quelconque, quelques options utiles pour ppa-purge ne sont pas documentées dans sa page de manuel , y compris -i. Mais vous pouvez obtenir des informations à leur sujet en exécutant ppa-purge -h (ou simplement ppa-purge sans argument):

ek@Del:~$ ppa-purge -h
Usage: Sudo ppa-purge [options] <ppa:ppaowner>[/ppaname]

ppa-purge will reset all packages from a PPA to the standard
versions released for your distribution.

Options:
    -p [ppaname]        PPA name to be disabled (default: ppa)
    -s [Host]       Repository server (default: ppa.launchpad.net)
    -d [distribution]   Override the default distribution choice.
    -y          Pass -y --force-yes to apt-get or -y to aptitude
    -i          Reverse preference of apt-get upon aptitude.
    -h          Display this help text

Example usage commands:
    Sudo ppa-purge xorg-edgers
    will remove https://launchpad.net/~xorg-edgers/+archive/ppa

    Sudo ppa-purge -p xorg-testing sarvatt
    will remove https://launchpad.net/~sarvatt/+archive/xorg-testing

    Sudo ppa-purge ppa:ubuntu-x-swat/x-updates
    will remove https://launchpad.net/~ubuntu-x-swat/+archive/x-updates

Notice: If ppa-purge fails for some reason and you wish to try again,
(For example: you left synaptic open while attempting to run it) simply
uncomment the PPA from your sources, run apt-get update and try again.

"Préférence inverse d'apt-get sur aptitude" est un peu cryptique. En regardant l'élément pertinent du code source (ppa-purge n'est qu'un script Shell, après tout), nous pouvons constater que cela signifie que le comportement par défaut consiste à préférer aptitude à apt-get et l'indicateur -i. inverse cette préférence.

18
Eliah Kagan

Voici les moyens de l’interface graphique pour le faire. J'espère que cela aidera pour ceux qui ne préfèrent pas CLI. Les étapes sont simples et faciles à suivre.

  1. Ouvrez gestionnaire de paquets synaptic . S'il n'est pas installé, installez-le en:

    Sudo apt-get install synaptic
    
  2. Une fois ouvert, cliquez sur le bouton Origin en bas à gauche. Il listera tous les référentiels en haut à gauche. Sélectionnez le référentiel particulier pour lequel les packages doivent être supprimés. Il listera tous les paquets sous ce référentiel. Cliquez sur le premier champ i, e S ou Champ Version installée pour montrer les paquets installés en premier.

  3. Maintenant, sélectionnez tous les paquets à supprimer.

    Conseils pour marquer le retrait:

    1. Sélectionnez le premier paquet puis maintenez Shift et sélectionnez à nouveau le dernier paquet pour tout sélectionner. Puis faites un clic droit sur la case et sélectionnez la marque pour la suppression ou marque pour suppression complète .

    2. ou Sélectionnez un paquet et appuyez sur Ctrl+A tout sélectionner. Puis faites un clic droit sur la case et choisissez la marque de suppression ou marque pour suppression complète.

C'est tout. Il va supprimer sans aucun problème. J'ai également joint l'image pour la rendre plus claire. J'espère que ça aiderait. :)

image

6
Saurav Kumar

Pour au moins les trouver, commencez par désactiver les PPA et exécutez apt-get update. Puis installez apt-show-versions. Lancer apt-show-versions | grep 'No available' vous donnera alors une liste de tous vos paquets installés qui ne peuvent pas être trouvés dans vos référentiels configurés. Avec une magie de ligne de commande, vous pouvez probablement supprimer les noms de packages uniquement et les transmettre à apt-get remove:

 for i in `apt-show-versions | grep 'No available' | cut -d' ' -f 1` ; do  Sudo apt-get remove -y $i ; done

Notez que cela va parcourir la liste retournée par apt-show-versions et les supprimer un par un. Selon ce qu'il trouve, cela pourrait désinstaller quelque chose d'inattendu en raison de dépendances, donc vérifiez-le d'abord.

5
Egil

J'ai trouvé difficile d'utiliser ppa-purge.

Ouvrez le Gestionnaire de paquets Synaptic sous Système, puis sélectionnez Paramètres, Référentiels.

Supprimez ceux que vous ne voulez pas.

Terminé!

0
Joe