9

I have an Nvidia 1070 system with Ubuntu 18.04, Nvidia driver 396.37, CUDA 9.0, and then TensorFlow and Keras running on it.

Having run sudo apt update, when I run sudo apt upgrade, I get the following:

$ sudo apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies.
 libglx-mesa0 : Depends: libglapi-mesa (= 18.0.5-0ubuntu0~18.04.1) but 18.2.8-0ubuntu0~18.04.2 is installed
                Breaks: libglx-mesa0:i386 (!= 18.0.5-0ubuntu0~18.04.1) but 18.2.8-0ubuntu0~18.04.2 is installed
 libglx-mesa0:i386 : Breaks: libglx-mesa0 (!= 18.2.8-0ubuntu0~18.04.2) but 18.0.5-0ubuntu0~18.04.1 is installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

When I attempt the suggested sudo apt --fix-broken install I see the following:

$ sudo apt --fix-broken installReading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  libllvm6.0 libllvm6.0:i386 x11proto-dri2-dev x11proto-gl-dev
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libglx-mesa0
The following packages will be upgraded:
  libglx-mesa0
1 to upgrade, 0 to newly install, 0 to remove and 256 not to upgrade.
155 not fully installed or removed.
Need to get 0 B/135 kB of archives.
After this operation, 9216 B of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 591832 files and directories currently installed.)
Preparing to unpack .../libglx-mesa0_18.2.8-0ubuntu0~18.04.2_amd64.deb ...
Unpacking libglx-mesa0:amd64 (18.2.8-0ubuntu0~18.04.2) over (18.0.5-0ubuntu0~18.04.1) ...
dpkg: error processing archive /var/cache/apt/archives/libglx-mesa0_18.2.8-0ubuntu0~18.04.2_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0', which is also in package nvidia-396 396.37-0ubuntu1
Errors were encountered while processing:
 /var/cache/apt/archives/libglx-mesa0_18.2.8-0ubuntu0~18.04.2_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Based on my investigating this, I am prompted by this and this, to run the following command:

sudo apt-get -o Dpkg::Options::="--force-overwrite" install --fix-broken

However, I really would rather not screw up my setup (as it was a challenge getting compatible versions of CUDA, TensorFlow, Keras etc. working at all) so would value thoughts on whether this is a safe approach.


EDIT: Following this suggestion by @Jos, I made a backup of /usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0 and the proceeded with the --force-overwrite approach. Following this, the infrastructure of TensorFlow, Keras and so on all seems to be working fine.

$ sudo apt-get -o Dpkg::Options::="--force-overwrite" install --fix-broken
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  libllvm6.0 libllvm6.0:i386 x11proto-dri2-dev x11proto-gl-dev
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libglx-mesa0
The following packages will be upgraded:
  libglx-mesa0
1 to upgrade, 0 to newly install, 0 to remove and 256 not to upgrade.
155 not fully installed or removed.
Need to get 0 B/135 kB of archives.
After this operation, 9216 B of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 591832 files and directories currently installed.)
Preparing to unpack .../libglx-mesa0_18.2.8-0ubuntu0~18.04.2_amd64.deb ...
Unpacking libglx-mesa0:amd64 (18.2.8-0ubuntu0~18.04.2) over (18.0.5-0ubuntu0~18.04.1) ...
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0', which is also in package nvidia-396 396.37-0ubuntu1
  • 2
    You could make a backup of /usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0 first. The message is saying that the same file is provided by two packages, and you have the first one already installed. The apt process cannot know which of the two files you want installed. They may very well have the same contents. So backup the file, install with --force-overwrite and see if the error goes away. – Jos Apr 4 '19 at 13:33
  • @Jos Great, thanks for the suggestion, the --force-overwrite approach has apparently worked and the cautious backup of /usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0 was a good suggestion. – BlandCorporation Apr 4 '19 at 15:05
  • Had the same problem upgrading a system from 16.04 to 18.04, and the answer below worked. I had nvidia-450 installed and the mesa stuff during the upgrade for some reason conflicted over that file. – BjornW Jun 22 '20 at 0:51
8

TL;DR

Beware, the solution below uses --force-overwrite, it'll come with caveats.

From @Jos comment:

sudo apt-get -o Dpkg::Options::="--force-overwrite" install --fix-broken

Nvidia drivers, CUDA and libglx packaging conflict on Ubuntu is always sooo messy -_-|||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.