Comment supprimer tous les paquets i386 d'Ubuntu 64bit?

Réponses:

15

S'ils ne vous gênent pas, je les laisserais où ils sont.
Si vous insistez pour la suppression, utilisez dpkg -l | grep i386pour créer une liste de packages i386. Vous pouvez les supprimer après avoir soigneusement vérifié quelque chose comme sudo apt-get purge <package-name>.

Henk
la source
2
Sauf que l'aptitude est cassée sur multiarch , alors ça ne marchera pas si bien: P
tumbleweed
apt-get purge <package-name>devrait toujours fonctionner, cependant.
Eliah Kagan
2
"après vérification minutieuse" - c'est vague. S'il vous plaît être plus clair.
kevinarpe
1
j'ai un système i386 sur un port USB, parfois je l'utilise sur des machines amd64, maintenant je voulais juste faire l'inverse, donc après avoir lancé dpkg -l | grep amd64un pkg i386 dans ma liste, ce qui est amd64-microcode 3.20160316.3 i386, je pense que le ':' dans le modèle grep est important ! ( dpkg -l | grep ":amd64")
Jonas
24

Les solutions automatisées supérieures sont dangereuses et ne fonctionnent pas toujours (1), alors voici un autre moyen

sudo aptitude purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

ou

sudo apt-get purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

(Essayez de toujours utiliser un seul des outils. Comme aptitude est préférable en cas de problème de dépendance, je préfère cela.)

Bonne idée aussi

dpkg --remove-architecture i386

et peut-être

dpkg --print-foreign-architectures

(1) Les commandes précédentes répertorient également les packages n’ayant que le nom i386 (bien qu’ils soient conçus pour une architecture 64 bits), l’expression régulière ne fonctionne pas et dpkg affiche les packages déjà supprimés, mais il reste des fichiers de configuration ( dpkg -l affiche "rc" au lieu de "ii" en statut).

Pythonic
la source
Puisque vous utilisez awkquand même, vous pouvez également vous débarrasser de l' grepinvocation. Aussi, $()est préférable à des backticks. Je viens de me débarrasser de mes paquets i386 en utilisant cette commande basée sur celle que vous avez donnée:sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }')
scy
23

J'ai bombardé tous mes paquets 32bit comme ceci:

sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`
Mathnode
la source
1
comment faire ce genre de commandes, je connais apt-get et grep mais ce qui est awk '{print $ 1}', je veux juste savoir.
Sukupa91
génial, et j'ai pu supprimer l'architecture i386 maintenant, mais quand je dpkg -l | grep i386vérifie les paquets, y a-t-il encore des idées, également +1 pour le commentaire précédent et je suppose que cela est lié aux techniques de script shell
Ismail Marmoush
Pas de réponse probablement parce que les commentaires ne sont pas l'endroit idéal pour un tutoriel awk. Ce bit d'awk n'imprime que le premier champ de chaque ligne acheminée. Le séparateur de champs par défaut d'Awk est un espace, "".
rthbound le
Finissez avecsudo dpkg --remove-architecture i386
Serge Stroobandt
9

Au cas où quelqu'un se le demanderait, il existe un moyen beaucoup plus sain et élégant de le faire. La dernière réponse précédente espère faire la même chose, mais cette recherche échoue car les architectures ne font pas partie des noms de paquets, sauf dans des cas spéciaux.

en tant que root (ou avec sudo), lancez:

aptitude remove ~i~ri386

Si vous n'utilisez pas déjà aptitude sur apt-get, faites-le. C'est vraiment excellent. Vous pouvez trouver une liste des termes de recherche d'aptitude ici .

Patrick
la source
6

Voici un autre moyen encore moins risqué:

apt-get remove "^.*:i386$"

Cela correspond spécifiquement aux paquets se terminant par ":i386", qui est la convention de nommage standard pour tous les i386paquets Debian d'architecture.

kevinarpe
la source
pourquoi enlever plus de purge?
Lotus
1
@ Lotus: Je ne suis pas conscient de la différence. Pouvez-vous s'il vous plaît expliquer? Peut-être pourrions-nous mettre à jour cette réponse pour l’améliorer.
kevinarpe
purge prend aussi les fichiers de configuration et tous les répertoires remant iirc
Lotus
2
@ Lotus j'ai utilisé la purge et cela a fonctionné le 14.04. Cela ne fonctionnait que pour moi après avoir enlevé les guillemets et le carret. sudo apt-get purge .*:i386
Antonios Hadjigeorgalis
6

Le guide multiarch de debian mentionne cette commande :,apt-get purge ".*:<arch>" qui ressemblerait à ceci pour i386:

apt-get purge ".*:i386"

Vous pouvez ensuite supprimer l'architecture de dpkg:

dpkg --remove-architecture i386
Francisco Couzo
la source