这compiz 更新强制删除unity
我ubuntu-desktop
的 16.04 Ubuntu 系统。
缺少但需要的有问题的包unity
似乎是compiz-core-abiversion-20151010
。它似乎是虚拟包,我找不到可以下载的。
碰巧的是,我主要在这个系统上使用 LXDE,但如果我使用 Unity,我会非常不高兴……
由于我偶尔会使用 Unity 桌面,有没有什么办法可以解决这个问题?
编辑:相关问题层出不穷。看起来质量问题严重
你们刚才做了什么!对我的两个 16.04 环境的更新都导致桌面崩溃!
编辑2: Bug 1749839 已提交至启动板
答案1
我找到了一个解决办法。apt-get 无法处理这种情况,但是 aptitude 可以处理。
sudo aptitude install ubuntu-desktop
请注意,aptitude 提供的第一个解决方案无法解决问题,因为它选择不安装该软件包。我第一次不得不选择否,然后 aptitude 提供了第二个解决方案,即降级导致所有问题的 compiz 软件包。降级解决了依赖性问题,然后重新安装了 ubuntu-desktop 和 unity。
答案2
非常奇怪的情况。
是的compiz-core-abiversion-20151010
在 xenial 和 zesty 上是虚拟的,但它是由以下提供的compiz-core
:
$ apt-cache show compiz-core | grep "Version\|Provides\|Package"
Package: compiz-core
Version: 1:0.9.12.3+16.04.20180221-0ubuntu1
Provides: compiz-core-abiversion-20180221
Package: compiz-core
Version: 1:0.9.12.2+16.04.20160415-0ubuntu1
Provides: compiz-core-abiversion-20151010
因此 APT 和 dpkg 都知道它们两个。
完整家庭名单compiz-core-abiversion
如下:
$ aptitude search compiz-core-abiversion-
v compiz-core-abiversion-20151010 -
v compiz-core-abiversion-20151010:i386 -
v compiz-core-abiversion-20180221 -
v compiz-core-abiversion-20180221:i386 -
我们知道这里compiz-core-abiversion-20151010
是无法安装的:
$ sudo apt-get install compiz-core-abiversion-20151010
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package compiz-core-abiversion-20151010 is a virtual package provided by:
compiz-core 1:0.9.12.2+16.04.20160415-0ubuntu1 [Not candidate version]
E: Package 'compiz-core-abiversion-20151010' has no installation candidate
但我们可以安装更新的(实际)版本:
$ sudo apt-get install compiz-core-abiversion-20180221
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'compiz-core' instead of 'compiz-core-abiversion-20180221'
The following additional packages will be installed:
compiz-gnome compiz-plugins compiz-plugins-default libcompizconfig0 libdecoration0 libunity-core-6.0-9 unity unity-schemas unity-services
The following packages will be upgraded:
compiz-core compiz-gnome compiz-plugins compiz-plugins-default libcompizconfig0 libdecoration0 libunity-core-6.0-9 unity unity-schemas
unity-services
10 upgraded, 0 newly installed, 0 to remove and 32 not upgraded.
Need to get 5 302 kB of archives.
After this operation, 278 kB of additional disk space will be used.
Do you want to continue? [Y/n] n
因此,在正常一致的系统上,我们只需要安装所有升级。
但如果unity
软件包被删除,我们可以使用以下命令安装它:
sudo aptitude update
sudo aptitude safe-upgrade
sudo aptitude install unity ubuntu-desktop
注1: 我的 Ubuntu 16.04 LTS 安装有 Unity 和 MATE DE(1 个干净赛尼尔和 3 岁精确的->可靠->赛尼尔) 无需我的干预即可在定期升级后正常工作。所有这些系统都没有尝试删除 Unity 或ubuntu-desktop
升级期间。当然xenial-proposed
被禁用在我的系统上,因为我不想将我的 Ubuntu LTS 转变为尖端的可自破解的 ArchLinux。
笔记2:由于已从compiz-core-abiversion-20170630
存储库中删除,我于 2018-03-12 编辑了我的答案。
答案3
假设您已登录并且您的 UI 因没有 Unity 而卡住,您可以执行以下操作:
- Ctrl使用+ Alt+转到 tty4 F4。
- 登录。
安装
aptitude
:sudo apt install aptitude
unity
使用以下方式安装aptitude
:sudo aptitude install unity
然后它会告诉你有一个冲突的软件包。你回答'n'
后它会建议你降级 compiz。继续并接受它。
答案4
这是不到 6 个月内 Ubuntu 团队第二次在未进行任何测试且未破坏正在运行的 Ubuntu 系统的情况下提出更新建议。
这些家伙最近开始试图用虚假的、未经测试的更新提案来破坏当前的 LTS 版本......这是新鲜事,直到去年才发生过。
解决方案是NEVER install
提出所谓的Partial Upgrade
... 您仍然可以通过Synaptic
逐个软件包更新您的系统(尽管为了便于理解,它Synaptic
现在已从官方版本中删除)... 直到您阻止所有有缺陷的版本更新。以下是示例:
#!/bin/sh
#
# Add nemo package to update blacklist
# Run script as super user i.e. sudo ./block-upd-unity.sh
#
if [ $(id -u) != 0 ]; then
echo "This script requires root permissions"
sudo "$0"
exit
fi
echo "nemo hold" | dpkg --set-selections
echo "nemo-data hold" | dpkg --set-selections
echo "nemo-fileroller hold" | dpkg --set-selections
然后在当前目录中按名称运行该脚本,例如:
$ ./block-upd-nemo
解除封锁
#!/bin/sh
#
# Remove nemo package from update blacklist
# Run script as super user i.e. sudo ./block-upd-unity.sh
#
if [ $(id -u) != 0 ]; then
echo "This script requires root permissions"
sudo "$0"
exit
fi
echo "nemo install" | dpkg --set-selections
echo "nemo-data install" | dpkg --set-selections
echo "nemo-fileroller install" | dpkg --set-selections
然后
$ ./unblock-upd-nemo
compiz
在 Synaptic 中你可以看到一个很长的相关软件包列表,Xenial LTS
删除这些软件包会导致软件包损坏:
ubuntu-desktop unity unity-tweak-tool unsettings ...
要阻止的软件包包括:
[由于我错过了受影响的 Unity 软件包,因此列表已更新]
compiz compiz-core compiz-dev compiz-gnome compiz-plugins compiz-plugins-default compiz-plugins-extra compiz-plugins-main compiz-plugins-main-default compizconfig-settings-manager libcompizconfig0 libdecoration0 libdecoration0-dev python-compizconfig libunity-core-6.0-9 libunity-core-6.0-dev unity unity-schemas unity-services
相当长的列表。可通过 Shell 脚本进行管理。
恢复解决方案是从 Xenial 安装 USB 启动并执行chroot
。转到Launchpad 网站 compiz
下载Release (main)
软件包并强制安装,dpkg -i *.deb
然后阻止所有更新,或者proposed
从更新配置中删除版本。
[更新]:你还需要去Launchpad 网站 unity
并下载Release (main)
受影响的软件包(参见下面的脚本)。
如果您不熟悉,请通过 Google 搜索。
compiz
这是我刚刚完成的阻止脚本:
[由于我错过了受 Unity 影响的软件包,因此进行了更新]
#!/bin/sh
#
# Add compiz package to update blacklist
# Run script as super user i.e. sudo ./block-upd-compiz.sh
#
if [ $(id -u) != 0 ]; then
echo "This script requires root permissions"
sudo "$0"
exit
fi
echo "compiz hold" | dpkg --set-selections
echo "compiz-core hold" | dpkg --set-selections
echo "compiz-dev hold" | dpkg --set-selections
echo "compiz-gnome hold" | dpkg --set-selections
echo "compiz-plugins hold" | dpkg --set-selections
echo "compiz-plugins-default hold" | dpkg --set-selections
echo "compiz-plugins-extra hold" | dpkg --set-selections
echo "compiz-plugins-main hold" | dpkg --set-selections
echo "compiz-plugins-main-default hold" | dpkg --set-selections
echo "compizconfig-settings-manager hold" | dpkg --set-selections
echo "libcompizconfig0 hold" | dpkg --set-selections
echo "libdecoration0 hold" | dpkg --set-selections
echo "libdecoration0-dev hold" | dpkg --set-selections
echo "python-compizconfig hold" | dpkg --set-selections
echo "libunity-core-6.0-9 hold" | dpkg --set-selections
echo "libunity-core-6.0-dev hold" | dpkg --set-selections
echo "unity hold" | dpkg --set-selections
echo "unity-schemas hold" | dpkg --set-selections
echo "unity-services hold" | dpkg --set-selections
不要忘记将脚本设置为可执行文件...
$ chmod a+x block-upd-compiz
[后续]:在运行 Shell 脚本解除对compiz
和 的19 个软件包的阻止后unity
,我尝试了该N0rbet
解决方案,似乎有效:
$ sudo apt-get install compiz-core-abiversion-20170630
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'compiz-core' instead of 'compiz-core-abiversion-20170630'
The following additional packages will be installed:
compiz-dev compiz-gnome compiz-plugins compiz-plugins-default libcompizconfig0 libdecoration0
libdecoration0-dev libunity-core-6.0-9 libunity-core-6.0-dev unity unity-schemas unity-services
The following packages will be upgraded:
compiz-core compiz-dev compiz-gnome compiz-plugins compiz-plugins-default libcompizconfig0 libdecoration0
libdecoration0-dev libunity-core-6.0-9 libunity-core-6.0-dev unity unity-schemas unity-services
13 upgraded, 0 newly installed, 0 to remove and 13 not upgraded.
Need to get 5,410 kB of archives.
After this operation, 283 kB of additional disk space will be used.
Do you want to continue? [Y/n] y