2/15/18 compiz update broke unity
This compiz update forced removal of unity
and ubuntu-desktop
on my 16.04 Ubuntu system.
The offending package that is missing, but unity
needs, seems to be compiz-core-abiversion-20151010
. It seems to be a virtual package, and I can't find it to download.
As it happens, I mostly use LXDE on this system, but I'd be very unhappy if I used Unity...
Since I do occasionally use the Unity desktop, is there a fix for this?
Edit: related questions are rolling in. Looks like a major quality escape
"Kept back" packages for update , want to uninstall unity?
compiz upgrade uninstalled unity
Ubuntu TaskBar is gone. Launcher is missing
What did you guys just DO! Updates to both my 16.04 environs killed the desktops!
Edit 2: Bug 1749839 submitted to launchpad
I have found a solution. apt-get fails to be able to handle the situation, but aptitude can handle it.
sudo aptitude install ubuntu-desktop
Note that the first solution offered by aptitude doesn't correct the problem, because that chooses not to install the package. I had to select no the first time, and then aptitude offered a second solution of downgrading the compiz packages that caused all the problems. The downgrade fixes the dependency problem, and then ubuntu-desktop and unity are reinstalled.
Very strange situation.
Yes compiz-core-abiversion-20151010
is virtual on xenial and zesty, but it is provided by 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
So APT and dpkg knows about both of them.
Full list of compiz-core-abiversion
family is as follows:
$ 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 -
Here as we know compiz-core-abiversion-20151010
is not installable:
$ 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
But we can install newer (actual) version:
$ 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
So on normal consistent system all we need is to have all upgrades installed.
But if unity
package was removed, we can install it with:
sudo aptitude update
sudo aptitude safe-upgrade
sudo aptitude install unity ubuntu-desktop
Note 1: My Ubuntu 16.04 LTS installations with Unity and MATE DE (1 clean xenial and and 3 old precise->trusty->xenial) work normally after regular upgrades without my intervention. All these systems did not tried to remove neither Unity nor ubuntu-desktop
during upgrades. And of course xenial-proposed
is disabled on my system, since I do not want to transform my Ubuntu LTS to bleeding-edge self-breakable ArchLinux.
Note 2: I edited my answer 2018-03-12 because of the fact that compiz-core-abiversion-20170630
was removed from repositories.
Assuming you're logged in and your UI is stuck without unity, you can do the following:
- Go to tty4 using Ctrl+Alt+F4.
- Login.
-
Install
aptitude
:sudo apt install aptitude
-
Install
unity
usingaptitude
:sudo aptitude install unity
It will then tell you that there is a conflicting package. You answer 'n'
and it will propose that you downgrade compiz. Go ahead and accept that.
This is the second times in less than 6 months that the Ubuntu teams made a proposed update without any testing and breaking working Ubuntu systems.
These guys recently are set loose to break the current LTS version with phony and untested proposed updates ... That is new, till last year it never happened.
The solution is to NEVER install
a proposed and so called Partial Upgrade
... You can still update your system through Synaptic
package by package (although to make good sense of it Synaptic
is now removed from the official release) ... Until you block all updates of the buggy release. Here is an example:
#!/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
Then run the script by its name in the current directory, like:
$ ./block-upd-nemo
To unblock
#!/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
Then
$ ./unblock-upd-nemo
Here in Synaptic you can see a long list of compiz
related packages which are breaking Xenial LTS
by removing these packages:
ubuntu-desktop unity unity-tweak-tool unsettings ...
The packages to block are:
[List Updated as I missed the unity affected packages]
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
Quite a long list. Manageable through Shell scripting.
A recovery solution would be to boot from a Xenial install USB stick and to perform a chroot
. Go to the Launchpad website for compiz
to download the Release (main)
packages and force install them with dpkg -i *.deb
then block all updates, or remove the proposed
releases from your update configuration.
[Update]: You need as well to go to the Launchpad website for unity
and download the Release (main)
affected packages (see below in the script).
Google search if you are not familiar with it.
Here is my blocking script for compiz
I just finished:
[Updated as I missed the unity affected packages]
#!/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
Don't forget to set the scripts executable ...
$ chmod a+x block-upd-compiz
[Folllow Up]: After running a Shell script to unblock the 19 packages from compiz
and unity
. I tried out the N0rbet
solution and it seems to work:
$ 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