Teamviewer – package architecture (i386) does not match system (amd64)

The teamviewer installation error “package architecture (i386) does not match system (amd64)” is observed on when attempting an install on 64 bit versions of either Debian or Ubuntu. This article details how to solve this quickly and easily.

This comes from using a “multiarch” or “multiple-architecture” installer as opposed to one which has been expressly compiled for wither i386 or amd64 architectures; from the Debian site:

“Multiarch is the term being used to refer to the capability of a system to install and run applications of multiple different binary targets on the same system. For example running a i386-linux-gnu application on an amd64-linux-gnu system.”


The error is observed once an install is attempted with:

sudo dpkg -i teamviewer_linux.deb

install error



The latest teamviewer package for linux can always be downloaded using the following:


Download linux teamviewer installer
Download linux teamviewer installer

Add i386 Architecture to dpkg

The following command will add the i386 directives to dpkg:

sudo dpkg --add-architecture i386

Add i386 architecture to dpkg
Add i386 architecture to dpkg

Update Sources

We now need to update our sources so that the system knows about the new i386 packages:

sudo apt-get update

Update Package Sources
Update Package Sources

Install Teamviewer

We can now go ahead and try to install Teamviewer again. This will partially work but some of its dependencies will be unfulfilled, shown with the errors “dependency problems – leaving unconfigured” – we will address this in the next step.

sudo dpkg -i teamviewer_linux.deb

Run Teamviewer installer again
Run Teamviewer installer again

Fix Unfulfilled Dependencies

Running the apt-get with the “-f” or “–fix-broken” switch will resolve any missing dependencies for installed programs:

sudo apt-get install -f

Resolve Unfulfilled Dependencies
Resolve Unfulfilled Dependencies

Start Teamviewer!

Open Teamviewer From the Menu:

From the applications menu, navigate to Internet and Teamviewer should be available for selection:

Open Teamviewer
Accept the EULA ..
Accept EULA
And Away We Go!

9 away we go


Quick Reference: apt-get

apt-get is the command-line tool for handling packages for Debian Linux which is use to:

  • Install/manage individual packages
  • Upgrade packages
  • Apply security patch(s)
  • Keep Debian system up to date
  • Download source .deb files
  • Has many GUI and other utilities as front-ends

Here is quick cheat sheet you will find handy while using apt-get at shell prompt:

Syntax Description Example(s)
apt-get install {package} Install the new package. If package is installed then try to upgrade to latest version apt-get install zip
apt-get install lsof samba mysql-client
apt-get install {package} -f Install the new package and fix any broken dependencies. “-f” equates to “–fix-broken” apt-get install -f zip
apt-get install -f lsof samba mysql-client
apt-get remove {package} Remove/Delete an installed package except configuration files apt-get remove zip
apt-get –purge remove {package} Remove/Delete everything including configuration files apt-get –purge remove mysql-server
apt-get update
apt-get upgrade
Resynchronize the package index files and Upgrade the Debian Linux system including security update (Internet access required) apt-get update
apt-get upgrade
apt-get update
apt-get dist-upgrade
Usually use to upgrade to Debian distribution. For example Woody to Sarge upgrade. ‘dist-upgrade’ in addition to performing the function of upgrade, also intelligently handles changing dependencies with new versions of packages; apt-get has a “smart” conflict resolution system, and it will attempt to upgrade the most important packages at the expense of less important ones if necessary. apt-get update
apt-get dist-upgrade

{package} – Replace with actual package name

The full man page for apt-get can be found here:

Linux: PrivateInternetAccess Using OpenVPN and Squid Proxy – Part 4

This entry is part 4 of 4 in the series PrivateInternetAccess Using Squid Proxy and OpenVPN

PrivateInternetAccess Using OpenVPN and Squid Proxy – OpenVPN Configuration

This article in the series deals with getting the OpenVPN service up and running with PrivateInternetAccess and how to configure our routes to allow us to selectively channel our traffic through it.

As we already installed OpenVPN previously, we can jump straight in: we will need to download the PrivateInternetAccess-specific config files and then set up the software to use these; we’ll also set up a username / password file for the service to use so that we don’t have to enter them every time we want to connect.

1. Download the PrivateInternetAccess VPN config files from the website

The files can be found at the following link, all zipped up and ready to download:

Fetch these into the /etc/openvpn directory using wget:


Unzip the files using the “unzip” command:


Tip: if the unzip command is not found, you may need to install it using: “apt-get install unzip"

 2. Select the Config File You Wish to Use

The OpenVPN service looks for a file called “server.conf” in the /etc/openvpn directory; the config files above are completed config files so we can either:

a) Rename one of them to server.conf OR much preferably

b) Create a shortcut called server.conf and link it to whichever config file we want to use. This is much better as the name of the config file relates to where your VPN traffic is going to “break out”: i.e. if you link server.conf to “UK London.ovpn” then your traffic will appear with a London IP address. If, however, you want to use something like Hulu which is only available in the US then you would like server.conf to e.g. “US West.ovpn.”

This is very simply done by using the “ln” command as follows:

ln -s <file-to-link-to> <name-of-your-shortcut>

 If we wanted to break out in US West then we would use the following command:

ln -s “/etc/openvpn/US West.ovpn” /etc/openvpn/server.conf

which would create a shortcut called server.conf in the /etc/openvpn directory pointing to the “/etc/openvpn/US West.ovpn” configuration file.


3. Configure the Username / Password File

The configuration above as it is will work but you will be prompted every time you want to connect for a username and password. To get around this for convenience (and also if you want your VPN to connect automatically) then we need to do the following:

a) Create a simple file with two lines – the first line should contain the username, the second the password. In this example, we echo the username and password into a file called “.pia” in the /root directory:


Note the first command has one angle bracket “>” and the second one has two “>>” – the first one creates the empty file or blanks it if it already exists and copies the text into it. The second one appends the text to it. Use the “cat” command to view the contents of the file as shown above.

For security, set the permissions on the /root/.pia file to 400 – this means that only root can access it and it will be read-only :

chmod 400 /root/.pia

b) Change the configuration files to use the password file we just created: to do this we need to open each configuration file we want to use, locate the line reading:


and change it to:

auth-user-pass /root/.pia

and then save the file. We’re nearly ready to go but first:

4. Configure Static Routes Back to Your Internal Networks!!!

This is only applicable if your proxy is in a different subnet than the one your client is in. In our example, we are connecting from our LAN ( to the proxy in our DMZ ( Once the VPN comes up on our proxy machine, it will become the default gateway meaning that suddenly you won’t be able to access it over the network!

To bypass this, we need to add static routes back to our internal networks, so going with our example network diagram we would need to add a route to via

route add -net netmask gateway

Now that our communication channels are sorted, let’s get going!

5. Restart the OpenVPN Service

Using the “service openvpn restart” command, you should see the following – we’re sorted!


Check your routing table with “route -n”:


  • The first entry in red shows our default VPN gateway – going out of “tun0” – our virtual VPN network interface.
  • The second entry is our standard default gateway for our local subnet.
  • The third is the static route we entered to allow the proxy in the DMZ to talk back to our client’s network.

If you do a traceroute, you’ll see that the first hop is going through the VPN instead of your standard gateway:


6. Configure Your Browser / Torrent Application to Use the Proxy

You will need to configure your browser or other application to use the proxy – there are many tutorials out there already so a swift google for your particular browser will have you on your way quickly. You simply need to set the parameters to use the IP of the proxy and port 3128!

Please comment below if you run into any problems and we’ll do all we can to help!