How to remove all i386 packages from Ubuntu 64bit?
Solution 1
If they are not in your way, I would leave them where they are.
If you insist on deletion, use dpkg -l | grep i386
to create a list of i386-packages. You can delete these after careful checking with something like sudo apt-get purge <package-name>
.
Solution 2
The other automated solutions are dangerous and not always working (1), so here another way
sudo aptitude purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`
or
sudo apt-get purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`
(Try to use always and only one of the tools. Since aptitude is better when having dependency trouble, I prefer that.)
Good idea to also
dpkg --remove-architecture i386
and maybe
dpkg --print-foreign-architectures
(1) The other commands also lists packages having only i386 in their name (although they are for 64bit architecture), the regular expression didn't work and dpkg shows packages which are already removed, but still have configuration files left (dpkg -l shows "rc" instead of "ii" as status).
Solution 3
I blitzed all my 32bit packages like this:
sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`
Solution 4
The debian's multiarch guide mentions this command: apt-get purge ".*:<arch>"
, which would look like this for i386
:
sudo apt-get purge ".*:i386"
You can then remove the architecture from dpkg:
sudo dpkg --remove-architecture i386
Solution 5
In case anyone is wondering, there's a much more sane and graceful way to do this. The last previous answer hopes to do the same thing, but that search fails since architectures are not actually part of package names, except in special cases.
as root (or with sudo) run:
aptitude remove ~i~ri386
If you don't use aptitude over apt-get already, do. It's really excellent. You can find a list of aptitude's search terms here.
Comments
-
yossile over 1 year
Over the time I installed many i386 packages, which I no longer need. How can I clean up the system and stay only with the amd64 packages?
-
tumbleweed about 12 yearsExcept that aptitude is broken on multiarch, so that won't work so well :P
-
Eliah Kagan almost 12 years
apt-get purge <package-name>
should still work, though. -
Sukupa91 over 10 yearshow to make these kind of commands, i know apt-get and grep but whats awk'{print $1}', just want to know.
-
Alaa over 10 yearsawesome, and I was able to remove the i386 architecture now, but when I do
dpkg -l | grep i386
to check the packages are still there any ideas, also +1 for the previouse comment and my guess it's related to shell scripting techniques -
kevinarpe over 10 years"after careful checking" -- that is vague. Please be more clear.
-
Lotus over 8 yearswhy remove over purge?
-
kevinarpe over 8 years@Lotus: I am unaware of the difference. Can you please explain? Maybe we can update this answer to improve it.
-
Lotus over 8 yearspurge takes the configuration files also and any remant directories iirc
-
rthbound over 8 yearsNo responses probably because comments aren't the place for an awk tutorial. That bit of awk is printing only the first field of each line being piped in. Awk's default field separator is a space, " ".
-
Antonios Hadjigeorgalis about 8 years@Lotus I used purge and it worked on 14.04. This only worked for me after removing the quotation marks and carret.
sudo apt-get purge .*:i386
-
scy over 7 yearsSince you're using
awk
anyway, you may as well get rid of thegrep
invocation. Also,$()
is preferable instead of backticks. I just got rid of my i386 packages using this command based on the one you gave:sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }')
-
Yunus almost 7 yearsi have a i386 system on a usb sometimes i use it on amd64 machines , now i just wanted to do the inverse , so after running
dpkg -l | grep amd64
i got an i386 pkg in my list which isamd64-microcode 3.20160316.3 i386
, i think that the ':' in the grep pattern is important ! (dpkg -l | grep ":amd64"
) -
Serge Stroobandt about 5 yearsFinish it off with
sudo dpkg --remove-architecture i386