50

I don't want to install any i386 package. Is there any way to disable functionality?

Jorge Castro
  • 71,754

6 Answers6

64

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
Pablo Bianchi
  • 15,657
tjaalton
  • 669
17

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
fossfreedom
  • 172,746
14

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.

13

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.

1

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
Pablo Bianchi
  • 15,657
0

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}'`