Ubuntu 18.04 libosmesa6 依赖 libglapi-mesa (= 18.0.0~rc5-1ubuntu1) 但需要安装 18.0.5-0ubuntu0~18.04.1

Ubuntu 18.04 libosmesa6 依赖 libglapi-mesa (= 18.0.0~rc5-1ubuntu1) 但需要安装 18.0.5-0ubuntu0~18.04.1

很多人都遇到过这个问题,尤其是那些想使用 Gym 和 Mujoco 进行强化学习的人。安装过程很令人沮丧,但幸运的是有些人发现问题的一部分

我想发布这个问题,希望 Ubuntu 开发人员能够看到,因为操作说明 没有引导我进入任何对话框来写任何内容。

问题发生如下:

  1. 我想使用 Mujoco,所以我按照安装操作说明,但是我在python3.5/3.6中实现时import mujoco_py,出现了以下错误:

    >>> import mujoco_py
    Import error. Trying to rebuild mujoco_py.
    running build_ext
    building 'mujoco_py.cymj' extension```
    
    `...`
    
    `/home/username/.local/lib/python3.6/site-packages/mujoco_py/gl/osmesashim.c:1:10: fatal error: GL/osmesa.h: No such file or directory
     #include <GL/osmesa.h>
    
    
      ^~~~~~~~~~~~~`
    
  2. 相当多的人建议通过运行来安装 libosmesa-dev sudo apt-get install libosmesa6-dev,所以我试了一下。但是错误是:

    The following packages have unmet dependencies:
     libosmesa6-dev : Depends: libosmesa6 (= 18.0.0~rc5-1ubuntu1) but it is not going to be installed
    E: Unable to correct problems, you have held broken packages.`
    
  3. 然后我认为这sudo apt-get install libosmesa6可以解决这个问题,但不幸的是:

    The following packages have unmet dependencies:
     libosmesa6 : Depends: libglapi-mesa (= 18.0.0~rc5-1ubuntu1) but 18.0.5-0ubuntu0~18.04.1 is to be installed
    E: Unable to correct problems, you have held broken packages.`
    
  4. 看起来当前 libglapi-mesa 的版本(18.0.5-0ubuntu0~18.04.1)与 mesa 真正需要的版本(18.0.0~rc5-1ubuntu1)不兼容。

  5. 我对如何降级它感到困惑,因为似乎有大量软件包依赖于 libglapi-mesa 的当前版本。例如,当我尝试使用 更正版本时sudo apt-get install libglapi-mesa=18.0.0~rc5-1ubuntu1,警告变得疯狂:

    The following additional packages will be installed:
      policykit-1-gnome
    The following packages will be REMOVED:
      apturl cheese deja-dup gdm3 gir1.2-gst-plugins-base-1.0 gir1.2-mutter-2
      gir1.2-rb-3.0 gir1.2-totem-1.0 gir1.2-webkit2-4.0 gnome-calendar
      gnome-control-center gnome-getting-started-docs gnome-initial-setup
      gnome-online-accounts gnome-session-bin gnome-shell
      gnome-startup-applications gnome-todo gnome-user-docs gnome-user-guide
      gstreamer1.0-clutter-3.0 gstreamer1.0-gl gstreamer1.0-vaapi gvfs
      gvfs-backends gvfs-daemons gvfs-fuse libcheese-gtk25 libcheese8
      libclutter-1.0-0 libclutter-gst-3.0-0 libclutter-gtk-1.0-0
      libcogl-pango20 libcogl-path20 libcogl20 libedataserverui-1.2-2 libgl1
      libgl1-mesa-glx libglu1-mesa libglx-mesa0 libglx0 libgoa-backend-1.0-1
      libgstreamer-gl1.0-0 libmutter-2-0 libtotem0 libwebkit2gtk-4.0-37
      libyelp0 mutter nautilus nautilus-share rhythmbox-plugins shotwell totem
      totem-plugins ubuntu-desktop ubuntu-docs ubuntu-release-upgrader-gtk
      ubuntu-session update-manager update-notifier x11-utils xorg
      xserver-xephyr xserver-xorg xserver-xorg-core xserver-xorg-input-all
      xserver-xorg-input-libinput xserver-xorg-input-wacom
      xserver-xorg-video-all xserver-xorg-video-amdgpu xserver-xorg-video-ati
      xserver-xorg-video-fbdev xserver-xorg-video-intel
      xserver-xorg-video-nouveau xserver-xorg-video-qxl
      xserver-xorg-video-radeon xserver-xorg-video-vesa
      xserver-xorg-video-vmware xwayland yelp zenity
    
  6. 现在,当我回头查看 Ubuntu 18.04 USB 安装驱动程序时,我注意到版本电流库格拉皮-mesa(18.0.5-0ubuntu0~18.04.1) 已在此 Ubuntu 18.04 版本中(预装)。我是 Ubuntu 新手,由于关注了不同的人的帖子,我已经重新安装了几次系统。我希望 Ubuntu 团队或 MESA 团队能尽快修复此问题。

答案1

我对 Ubuntu 非常陌生,对它一无所知,所以我的问题看起来有点乱。但是当我由于软件包依赖性而无法正确安装 libosmesa6-dev 时,以下是我解决问题的方法:

1 尝试谷歌搜索 libosmesa6=18.0.5-rc5-0ubuntu0,下载适用于您的 Ubuntu 版本和 cpu 架构的 deb 文件(例如我的案例 0ubuntu0~18.04.1 (amd64 二进制文件)),然后手动安装。这是因为在当前软件包存储库中,没有 libsomesa6=18.0.5-rc5-0ubuntu0 来匹配 libglapi-mesa=18.0.5。

2 现在,我将新版本的 libosmesa6-dev 添加到我的存储库,并使用 apt-get 命令安装它:

sudo add-apt-repository ppa:ubuntu-x-swat/updates

sudo apt-get update

sudo apt-get install libosmesa6-dev

此后,libosmesa6-dev、libosmesa6、libglapi-mesa 将自动升级到较新的版本。

3 安装完成后,我可以在我的环境中毫无问题地导入 mujoco_py

答案2

我在尝试安装 Octave 时遇到了类似的问题。

   $ sudo apt install octave

这产生了以下错误:

以下软件包具有未满足的依赖性:octave:依赖:libosmesa6(>= 10.2~)但是它将不会被安装 E:无法纠正问题,您持有损坏的软件包。

然后我尝试安装 libosmesa6

(这可能不是解决办法)

  $ sudo apt install libosmesa6

这产生了以下错误:

以下软件包有未满足的依赖项:libosmesa6:依赖:libglapi-mesa(= 18.0.0~rc5-1ubuntu1)但需要安装 18.2.8-0ubuntu0~18.04.2 E:无法纠正问题,您持有损坏的软件包。

然后似乎我拥有的 mesa 库版本比它预期的要新,很可能是因为 ubuntu 尝试安装的 octave 版本比可用的版本要旧。

截至今天,Octave 的最新版本是 5.1.0。因此,我从以下网址获取了 tar 文件:这里-- 然后继续从源代码构建 octave。我不得不忽略 readline 库,因为它有问题。在解压后的 octave 目录中,运行

$ ./configure --disable-readline
$ make 
$ ./run-octave
$ make check
$ sudo make install

它现在安装在/usr/local

希望对你有帮助 :)

相关内容