A reasonable first thing to try is to ask apt why it is doing what it is doing. This can be done with the -o Debug::pkgProblemResolver=yes option. E.g.
apt-get -o Debug::pkgProblemResolver=yes install libgl1-mesa-dri:i386 libdrm-intel1:i386
If apt is not forthcoming, the standard approach to debugging such issues is to check the priority numbers of the available versions of each package mentioned in the error message. This is commonly done using apt-cache policy.
For example, to use just the first part of the error message, you should run
apt-cache policy libgl1-mesa-dri:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libglapi-mesa:i386
How one proceeds then depends on what this shows. It is often also useful to run just
apt-cache policy
which will show all the package sources available, along with their priority numbers. This information is usually specified in one or both of /etc/apt/sources.list or /etc/apt/sources.list.d.
People trying to get help here should first post the results of these commands in their question. That will likely be enough information to determine the problem.
Real-life examples of problems:
Unmet dependencies after using a backports repository: The user included sources for
www.deb-multimedia.org, without pinning it to a lower priority. Never include third-party sources without pinning it to a lower priority. Note that this should not be necessary for well-behaved repositories which provide packages for the default release, butwww.deb-multimedia.orgis well known for not playing nice with Debian, and in general, you should not trust unknown sources. More generally, if you know a repository is not designed to be used with your system, pin it at a lower priority. E.g. testing/unstable sources on Debian
stable.Unmet dependencies: The user somehow managed to install a version of python that wasn't the default version on his system. Naturally, all hell broke loose. Moral of the story, make sure you are only installing versions of packages that are correct for your system. As above
apt-cache policy pkgnamewill tell you.dpkg / apt-get wants to install and overwrite different package: The user tried to install packages even though his underlying
dpkgdatabase was broken. Moral, if you see messages coming fromdpkgthat something or the other is wrong with your packages, in this case0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 2 not fully installed or removed.your package database has problems. First fix them, before you try to install anything else. If
apt-get -f installdoesn't work, you may need to operate at thedpkglevel to fix things.