2/15/18 compiz update broke unity

7,872

Solution 1

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.

Solution 2

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.

Solution 3

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

Solution 4

Assuming you're logged in and your UI is stuck without unity, you can do the following:

  1. Go to tty4 using Ctrl+Alt+F4.
  2. Login.
  3. Install aptitude:

    sudo apt install aptitude
    
  4. Install unity using aptitude:

    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.

Share:
7,872

Related videos on Youtube

Organic Marble
Author by

Organic Marble

Updated on September 18, 2022

Comments

  • Organic Marble
    Organic Marble over 1 year

    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.

    enter image description here

    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

    • WinEunuuchs2Unix
      WinEunuuchs2Unix over 6 years
    • Andrew Vian
      Andrew Vian over 6 years
      I have the same problem. No launcher/taskbar or much of anything else.
    • Organic Marble
      Organic Marble over 6 years
      @WinEunuuchs2Unix possible, but this seems like a dependency mistake in the upgrade rather than a problem with mesa. Unity just got removed, bye-bye!
    • WinEunuuchs2Unix
      WinEunuuchs2Unix over 6 years
      @OrganicMarble There are two other users burnt by 16.04 updates I read in the last hour. Something big is up again I think. I haven't updated since January 4, 2018 because of all the bugs being reported. Just manual kernel updates over that time brining me up to 4.14.18
    • Organic Marble
      Organic Marble over 6 years
      @WinEunuuchs2Unix yes, I have found three other questions on this so far, and linked to them in an update to my question. Looks like a major "whoops!"
    • WinEunuuchs2Unix
      WinEunuuchs2Unix over 6 years
      @OrganicMarble Yes I posted comments under two of those three links you just added. I bet there will be a dozen more in a day.
    • Organic Marble
      Organic Marble over 6 years
      It appears that they pushed out a new version of unity now (4 hours after the compiz update), but it didn't fix the problem on my system.
    • WinEunuuchs2Unix
      WinEunuuchs2Unix about 6 years
      Another user with same problem said they fixed the offer to delete the desktop. He never accepted offer to delete in the first place. I'm thinking undelete option would be too complicated during apt upgrade
  • Organic Marble
    Organic Marble over 6 years
    Thanks, but this doesn't really add anything to the prior answer.
  • muru
    muru over 6 years
    When you say "proposed" updated, do you mean in the xenial-proposed channel? If so, those are explicitly for testing. You shouldn't install them unless you're prepared for breakage.
  • Organic Marble
    Organic Marble over 6 years
    @Antonio It always happens. They broke 14.04 horribly in 2015. bugs.launchpad.net/hundredpapercuts/+bug/1469995
  • Organic Marble
    Organic Marble about 6 years
    Installing compiz-core-abiversion-20170630 fixed the dependency problem. Thanks very much! Not sure why this was missing on my system and apparently on others.
  • Organic Marble
    Organic Marble about 6 years
    Thanks for your very clever temp fix. A subsequent answer provided the complete resolution, so I've moved the acceptance to that one.
  • Antonio
    Antonio about 6 years
    @Organic Marble N0rbert just told you that until now it was a virtual package provided by compiz-core. The difference is that now it is a normal / separate package to install as such ... That was not guessed by the proposed release ...
  • Organic Marble
    Organic Marble about 6 years
    I suppose it should have been included in the release.
  • N0rbert
    N0rbert about 6 years
    compiz-core is real package, compiz-core-abiversion-20170630 remains virtual. May be dpkg/APT-internals should know that we have installed actual and available 20170630 version (not missed 20151010).