从/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 已损坏。