I don't want to install any i386 package. Is there any way to disable functionality?
6 Answers
Since 12.10
dpkg --remove-architecture i386
to get rid of multiarch on an amd64 installation. In case you will have message, like:
dpkg: error: cannot remove architecture 'i386' currently in use by the database
you should remove all i386
packages before:
dpkg -l | grep i386
-
18
-
5
11.10 & 12.04
Multiarch support is enabled by the file /etc/dpkg/dpkg.cfg.d/multiarch
If you rename this file and run an update in a terminal you will notice that the i386 repo's are no longer visible.
Thus
sudo mv /etc/dpkg/dpkg.cfg.d/multiarch /etc/dpkg/dpkg.cfg.d/multiarch.backup
Based on both Ben's answer and user41220's answer I did the following:
sudo apt-get remove --purge `dpkg --get-selections | grep i386 | awk '{print $1}'`
Then
sudo dpkg --remove-architecture i386
and that worked just fine for me.
-
1
First of all, remove all i386-packages like so:
sudo apt-get remove --purge `dpkg --get-selections | grep i386 | awk '{print $1}'`
Please note: Skype, Steam, teamviewer etc. might be purged as well.
Then proceed with fossfreedoms advices.
-
This is true for more recent oses. If you put this in as an answer, I'd vote for it (for its simplicity). May 4, 2020 at 8:42
Simpler alternative to remove all packages of that architecture before removing it (source; apt
man page):
sudo apt purge .*:i386
If necessary (check with dpkg --print-foreign-architectures
) you can remove the architecture from dpkg:
sudo dpkg --remove-architecture i386
For those who want to disable multiarch support from the get-go, here's a one liner that can be used in (init) scripts...
[ ! $(dpkg --get-selections | grep -q i386) ] && dpkg --remove-architecture i386
This would remove i386 architechture as expected on the first run. On consecutive runs, it'd show the following warning...
dpkg: warning: cannot remove non-foreign architecture 'i386'
This one-liner could be useful in most cloud servers where there are no i386 packages are installed (by default). While this is a Ubuntu forum, here is some detailed info on multiarch from Debian... https://wiki.debian.org/Multiarch/HOWTO .
Other answers recommended dpkg -l
to get the list of packages and then grep
the result. In my experience, dpkg -l
has failed to show some packages (with i386 arch), but dpkg --get-selections
showed them clearly marking them as package_name:i386
. So, if we want to remove i386 packages previous installed, then to remove them, here's actual command that works...
apt-get remove --purge `dpkg --get-selections | awk '/i386/{print $1}'`