apt 想要卸载 VLC,因为 libgles1 太旧了,尽管 VLC 团队删除了 libgles1 依赖项

apt 想要卸载 VLC,因为 libgles1 太旧了,尽管 VLC 团队删除了 libgles1 依赖项

/var/log/dist-upgrade/apt.log

Starting pkgProblemResolver with broken count: 1
Starting 2 pkgProblemResolver with broken count: 1
Investigating (0) libgles1-mesa [ amd64 ] < 12.0.6-0ubuntu0.16.04.1 > ( libs )
Broken libgles1-mesa:amd64 Depends on libglapi-mesa [ amd64 ] < 12.0.6-0ubuntu0.16.04.1 -> 17.0.7-0ubuntu0.16.04.1 > ( libs ) (= 12.0.6-0ubuntu0.16   .04.1)
    Considering libglapi-mesa:amd64 64 as a solution to libgles1-mesa:amd64 2
    Removing libgles1-mesa:amd64 rather than change libglapi-mesa:amd64
Investigating (0) vlc [ amd64 ] < 2.2.2+git20170721+r59033+56~ubuntu16.04.1 > ( video )
Broken vlc:amd64 Depends on libgles1-mesa [ amd64 ] < 12.0.6-0ubuntu0.16.04.1 > ( libs ) (>= 7.8.1)
    Considering libgles1-mesa:amd64 2 as a solution to vlc:amd64 1
Broken vlc:amd64 Depends on libgles1 [ amd64 ] < none ->  > ( none )
    Considering libgles1-mesa:amd64 2 as a solution to vlc:amd64 1
    Or group remove for vlc:amd64
Done

在网上搜索后我发现libgles1 已被弃用

VLC 团队已经从 2.2.2-5ubuntu0.16.04.2 更新了他们的依赖项,但我的系统显然还没有赶上(我通过运行进行了检查apt-cache depends vlc,它显示了对 libgles1-mesa 的依赖)。

几个月前我添加了launchpad videolan PPA(获取最新的、错误最少的 VLC)。

这给了我 VLC 版本 2.2.7,并修复了 VLC 错误,这就是我今天在系统中使用的内容。我知道,因为它vlc --version告诉我是这样的。

apt-cache policy vlc说:

Installed: 2.2.2+git20170721+r59033+56~ubuntu16.04.1
Candidate: 2.2.2+git20170721+r59033+56~ubuntu16.04.1
Version table:
*** 2.2.2+git20170721+r59033+56~ubuntu16.04.1 500
    500 http://ppa.launchpad.net/videolan/stable-daily/ubuntu xenial/main amd64 Packages
    100 /var/lib/dpkg/status
 2.2.2-5ubuntu0.16.04.3 500
    500 http://gb.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages
    500 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages
 2.2.2-5 500
    500 http://gb.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages

(似乎很奇怪,apt-cache policy说安装了 2.2.2+git20170721+r59033+56~ubuntu16.04.1;我读到的是 vlc 版本 2.2.2,这与给出的 2.2.7 冲突vlc --version。)

显然我已经安装了 Ubuntu 版本 16.04.2 LTS 64 位(来自 GUI 控制面板中的系统详细信息)。

我想我可以禁用启动板 PPA,但在这种情况下,我可能会恢复到导致系统崩溃的旧 vlc 二进制文件。

所以我的问题是(至少我认为这是正确的问题):
我如何说服 apt,libgles1-mesa 已经过时或者丢失了?

答案1

解决方案是使用 dpkg-deb 伪造 libgles1 的较新版本。这是安全的,因为该软件包在我的系统上是多余的。

sudo ppa-purge -o  videolan -p stable-daily -d xenial

现在较新的 vlc (2.2.7) 已经消失,标准 (崩溃的) vlc 又回来了:

$ vlc --version
VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80)

运行sudo apt remove libgles1-mesa,这样软件更新程序就不会再堵塞。

软件更新程序现在安装 libgles2 v17.0.7 以及其他各种相关库。

sudo add-apt-repository ppa:videolan/stable-daily
sudo apt update

现在apt list --upgradeable显示

libvlc5/xenial 2.2.2+git20170721+r59033+56~ubuntu16.04.1 amd64 [upgradable from: 2.2.2-5ubuntu0.16.04.3]
libvlccore8/xenial 2.2.2+git20170721+r59033+56~ubuntu16.04.1 amd64 [upgradable from: 2.2.2-5ubuntu0.16.04.3]
vlc/xenial 2.2.2+git20170721+r59033+56~ubuntu16.04.1 amd64 [upgradable from: 2.2.2-5ubuntu0.16.04.3]
vlc-data/xenial,xenial 2.2.2+git20170721+r59033+56~ubuntu16.04.1 all [upgradable from: 2.2.2-5ubuntu0.16.04.3]
vlc-nox/xenial 2.2.2+git20170721+r59033+56~ubuntu16.04.1 amd64 [upgradable from: 2.2.2-5ubuntu0.16.04.3]
vlc-plugin-notify/xenial 2.2.2+git20170721+r59033+56~ubuntu16.04.1 amd64 [upgradable from: 2.2.2-5ubuntu0.16.04.3]
vlc-plugin-samba/xenial 2.2.2+git20170721+r59033+56~ubuntu16.04.1 amd64 [upgradable from: 2.2.2-5ubuntu0.16.04.3]

运行软件更新程序。它会安装 7 个 deb 中的 5 个:

Start-Date: 2017-07-28  12:22:38
Commandline: aptdaemon role='role-commit-packages' sender=':1.208'
Upgrade: vlc-plugin-samba:amd64 (2.2.2-5ubuntu0.16.04.3, 2.2.2+git20170721+r59033+56~ubuntu16.04.1), vlc-plugin-notify:amd64    (2.2.2-5ubuntu0.16.04.3, 2.2.2+git20170721+r59033+56~ubuntu16.04.1), libvlc5:amd64 (2.2.2-5ubuntu0.16.04.3, 2.2.2+git201707   21+r59033+56~ubuntu16.04.1), libvlccore8:amd64 (2.2.2-5ubuntu0.16.04.3, 2.2.2+git20170721+r59033+56~ubuntu16.04.1), vlc-data   :amd64 (2.2.2-5ubuntu0.16.04.3, 2.2.2+git20170721+r59033+56~ubuntu16.04.1)
End-Date: 2017-07-28  12:22:42

现在运行

sudo apt download libgles1-mesa
sudo dpkg-deb -x ~/libgles1-mesa_12.0.6-0ubuntu0.16.04.1_amd64.deb .
sudo dpkg-deb --control ~/libgles1-mesa_12.0.6-0ubuntu0.16.04.1_amd64.deb .

修改 DEBIAN/control Depends 行如下:

Depends: libglapi-mesa (= 17.0.7-0ubuntu0.16.04.1), libc6 (>= 2.2.5)

(因为 libglapi 升级到了 17.0.7)

sudo dpkg-deb -b . ~/libgles1-mesa_17.0.7-0ubuntu0.16.04.1_amd64.deb
sudo dpkg -i libgles1-mesa_17.0.7-0ubuntu0.16.04.1_amd64.deb
sudo apt install vlc-nox
sudo apt install vlc

现在vlc --version输出

VLC media player 2.2.7 Umbrella (revision 2.2.2+git20170721+r59033+56~ubuntu16.04.1)

软件更新程序运行顺利。我从来没运行过!

答案2

当我升级到 16.04.2 时,我遇到了这个问题。夜间构建似乎不同意这一点。所以,我不得不恢复到 Universe 存储库中可用的版本。

sudo ppa-purge ppa:videolan/master-daily
sudo apt-get update
sudo apt-get autoremove
sudo apt-get install vlc

问题解决了。如果我重新添加 ppa:videolan/master-daily,Synaptic 会报告 nightly-build 已损坏。

相关内容