Comment supprimer tous les paquets d'un certain référentiel?

29

Pour une mise à niveau en douceur de 10.04 à 10.10, j'aimerais supprimer tous les packages qui ne figurent pas dans les référentiels par défaut (par exemple, PPA en chrome et référentiels tiers). Quelle est la manière la plus simple (de préférence une interface de ligne de commande) de rechercher et de supprimer ces paquets?

Edit: cette question n'est pas limitée aux PPA, j'ai également un référentiel x2go, donc je recherche une commande générique pour supprimer les packages appartenant à un certain référentiel. Pour les PPA, la question Comment supprimer les PPA peut-elle vous aider?

    
posée Lekensteyn 28.04.2011 - 14:45
la source

6 réponses

11

Ce script peut lister tous les paquets d’un serveur / une 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  }') |
  awk -v server="$server" -v branch="$branch" \
    '/^[^ ]/      { split(, a, ":"); pkg = a[1] }
    nextline == 1 { nextline = 0; if ( == server &&  == branch) print pkg }
    /\*\*\*/      { nextline = 1 }'

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

nextline == 1 { nextline = 0; if ( != server) print pkg }
    
réponse donnée enzotib 28.04.2011 - 15:07
la source
22

Découvrez ppa-purge .

Utilisation:

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

Le serveur hôte est défini par défaut sur ppa.launchpad.net .

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

    
réponse donnée Vadim Rutkovsky 28.04.2011 - 15:21
la source
17

Surmonter le bogue Multiarch de aptitude pour ppa-purge

Normalement, comme Vadim Rutkovsky et Takkat ont expliqué , en exécutant ppa-purge avec la syntaxe par défaut est un moyen efficace de supprimer tous les packages fournis par un PPA, en les rétrogradant correctement vers les versions fournies dans d'autres sources logicielles configurées dans la mesure du possible.

Cependant, comme Takkat l’a souligné, le bogue 831768 empêche ppa-purge de travailler correctement pour supprimer les packages multiarch (tels que les packages 32 bits installés sur les systèmes 64 bits). Cela est dû au fait que aptitude ne peut pas gérer les dépendances conflictuelles dans les packages multiarchies (c'est ce qui concerne le bogue), et que le comportement par défaut de ppa-purge consiste à utiliser aptitude pour mettre à jour les paquets.

Heureusement, ppa-purge accepte l'indicateur -i , ce qui lui fait préférer apt-get à aptitude en tant que backend. Comme indiqué dans le rapport de bogue, l'utilisation de apt-get est un alternative efficace à l'invocation manuelle de aptitude , l'exécution de ppa-purge avec l'indicateur -i devrait être une solution efficace pour supprimer / rétrograder tous les packages fournis par un PPA, y compris les packages multiarques .

Comment faire

Voici la syntaxe:

sudo ppa-purge -i ppa:ppaowner/ppaname

Comme d'habitude (comme lorsque 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 je disposais du PPA pour les versions instables de qBittorrent installé, et je voulais le supprimer complètement, en rétrogradant automatiquement qBittorrent à la version disponible sur mes autres sources de logiciels en utilisant apt-get en arrière-plan au lieu de aptitude . Alors je courrais:

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

Où il 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 arguments):

[email protected]:~$ 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 inversée d'apt-get upon aptitude" est un peu cryptique. En regardant la partie pertinente du code source ( ppa-purge est juste un script shell, après tout), nous pouvons voir Cela signifie que le comportement par défaut consiste à préférer aptitude à apt-get et que l'indicateur -i inverse cette préférence.

    
réponse donnée Eliah Kagan 23.07.2012 - 08:55
la source
3

Pour au moins les trouver, commencez par désactiver les PPA et exécutez apt-get update . Ensuite, installez apt-show-versions . En exécutant apt-show-versions | grep 'No available' , vous obtiendrez alors une liste de tous vos packages installés introuvables dans vos référentiels configurés. Avec une certaine magie de ligne de commande, vous pouvez probablement supprimer uniquement les noms de package 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 parcourra la liste renvoyée par apt-show-versions et supprimez-les un par un. Selon ce qu'il trouve, cela pourrait désinstaller quelque chose d'inattendu en raison de dépendances, alors vérifiez-le d'abord.

    
réponse donnée Egil 28.04.2011 - 14:59
la source
3

Voici comment utiliser l'interface graphique. J'espère que cela aidera pour ceux qui ne préfèrent pas CLI. Les étapes sont simples et faciles à suivre.

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

    sudo apt-get install synaptic
    
  2. Une fois ouvert, cliquez sur le bouton Origine situé à gauche. Il listera tous les dépôts 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 dépôt. Cliquez sur le premier champ i, e S ou Version installée pour afficher d’abord les packages installés.

  3. Sélectionnez maintenant tous les paquets à supprimer.

    Conseils pour marquer le retrait:

    1. Sélectionnez le premier paquet puis maintenez la touche Shift et sélectionnez à nouveau le dernier paquet à sélectionner. Cliquez ensuite avec le bouton droit de la souris sur la case carré et sélectionnez marque pour suppression ou marque pour suppression complète .

    2. ou Sélectionnez n'importe quel paquet et appuyez sur Ctrl + A pour tout sélectionner. Cliquez ensuite avec le bouton droit de la souris sur la case carré et choisissez marque pour suppression ou pour suppression complète.

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

    
réponse donnée Saurav Kumar 08.03.2014 - 12:44
la source
0

J'ai trouvé l'utilisation de ppa-purge difficile.

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

Supprimez ceux que vous ne voulez pas.

Fait!

    
réponse donnée Joe 09.05.2013 - 18:58
la source

Lire d'autres questions sur les étiquettes