来自/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
Run Code Online (Sandbox Code Playgroud)
在网上搜索,我发现libgles1 已被弃用。
VLC 团队已经从 2.2.2-5ubuntu0.16.04.2 更新了他们的依赖项,但我的系统显然没有赶上那个(我通过运行检查apt-cache depends vlc,它显示了对 libgles1-mesa 的依赖)。
现在碰巧几个月前我添加了启动板 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
Run Code Online (Sandbox Code Playgroud)
(apt-cache policy说 2.2.2+git20170721+r59033+56~ubuntu16.04.1 已安装似乎很奇怪;我将其读作 vlc 版本 2.2.2,这与vlc --version给出的 2.2.7 冲突。)
显然我安装了 Ubuntu 版本 16.04.2 LTS 64 位(来自 GUI 控制面板中的系统详细信息)。
我想我可以禁用启动板 PPA,但在这种情况下,我大概会恢复到使我的系统崩溃的旧版 vlc 二进制文件。
所以我的问题是(至少我认为这是正确的问题):
我如何说服 apt 认为 libgles1-mesa 已旧或丢失是可以的?
解决方案是使用 dpkg-deb 伪造一个较新版本的 libgles1。这是安全的,因为该软件包在我的系统上是多余的。
sudo ppa-purge -o videolan -p stable-daily -d xenial
Run Code Online (Sandbox Code Playgroud)
现在较新的 vlc (2.2.7) 不见了,标准(崩溃)vlc 又回来了:
$ vlc --version
VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80)
Run Code Online (Sandbox Code Playgroud)
运行sudo apt remove libgles1-mesa,以便软件更新程序不再被阻塞。
软件更新程序现在安装 libgles2 v17.0.7 以及各种其他相关库。
sudo add-apt-repository ppa:videolan/stable-daily
sudo apt update
Run Code Online (Sandbox Code Playgroud)
现在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]
Run Code Online (Sandbox Code Playgroud)
运行软件更新程序。它安装了 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
Run Code Online (Sandbox Code Playgroud)
现在运行
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 .
Run Code Online (Sandbox Code Playgroud)
将 DEBIAN/control Depends 行修改为:
Depends: libglapi-mesa (= 17.0.7-0ubuntu0.16.04.1), libc6 (>= 2.2.5)
Run Code Online (Sandbox Code Playgroud)
(因为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
Run Code Online (Sandbox Code Playgroud)
现在vlc --version输出
VLC media player 2.2.7 Umbrella (revision 2.2.2+git20170721+r59033+56~ubuntu16.04.1)
Run Code Online (Sandbox Code Playgroud)
软件更新程序运行愉快。嗯,我从来没有!
| 归档时间: |
|
| 查看次数: |
2096 次 |
| 最近记录: |