15/02/18 atualização do compiz quebrou a unidade

21

Esta atualização do compiz removeu forçosamente unity e ubuntu-desktop no meu 16.04 sistema Ubuntu.

O pacote ofensivo que está faltando, mas unity precisa, parece ser compiz-core-abiversion-20151010 . Parece ser um pacote virtual , e não consigo encontrá-lo para download.

Poracaso,euusoprincipalmenteoLXDEnestesistema,maseuficariamuitoinfelizseeuusasseoUnity...

ComoeuusoocasionalmenteaáreadetrabalhodoUnity,háumacorreçãoparaisso?

Editar:perguntasrelacionadasestãorolando.Pareceumagrandefugadequalidade

pacotes "Kept back" para atualização, deseja desinstalar unidade?

unidade desinstalada do upgrade do compiz

O Ubuntu TaskBar sumiu. Lançador está faltando

O que vocês acabaram de fazer! Atualizações nos meus 16.04 arredores mataram os desktops!

Editar 2: Bug 1749839 enviado para o launchpad

    
por Organic Marble 15.02.2018 / 23:53

4 respostas

11

Situação muito estranha.
Sim compiz-core-abiversion-20151010 é virtual em xenial e zesty , mas é fornecido por 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

Portanto, o APT e o dpkg conhecem os dois.

A lista completa de compiz-core-abiversion family é a seguinte:

$ 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                           -

Aqui, como sabemos, compiz-core-abiversion-20151010 não é instalável:

$ 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

Mas podemos instalar uma versão mais recente (atual):

$ 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

Portanto, em um sistema normal consistente, tudo que precisamos é ter todas as atualizações instaladas.
Mas se unity package foi removido, podemos instalá-lo com:

sudo aptitude update
sudo aptitude safe-upgrade
sudo aptitude install unity ubuntu-desktop

Nota 1: As minhas instalações Ubuntu 16.04 LTS com Unity e MATE DE (1 limpa xenial e e 3 antigas precisas - > < em> trusty -> xenial ) funciona normalmente após upgrades regulares sem a minha intervenção. Todos esses sistemas não tentaram remover nem Unity nem ubuntu-desktop durante as atualizações. E é claro que o xenial-proposed está desativado no meu sistema, já que eu não quero transformar meu Ubuntu LTS em um ArchLinux auto-quebrável de ponta.

Nota 2: editei a minha resposta 2018-03-12 porque o compiz-core-abiversion-20170630 foi removido dos repositórios.

    
por N0rbert 16.02.2018 / 11:08
13

Eu encontrei uma solução. O apt-get não consegue lidar com a situação, mas o aptitude pode lidar com isso.

sudo aptitude install ubuntu-desktop

Note que a primeira solução oferecida pelo aptitude não corrige o problema, porque ele escolhe não instalar o pacote. Eu tive que selecionar não a primeira vez, e então o aptitude ofereceu uma segunda solução de downgrade dos pacotes compiz que causaram todos os problemas. O downgrade corrige o problema de dependência e, em seguida, o ubuntu-desktop e o unity são reinstalados.

    
por Andrew Vian 16.02.2018 / 01:13
2

Supondo que você esteja conectado e sua interface do usuário esteja presa sem unidade, faça o seguinte:

  1. Vá para tty4 usando Ctrl + Alt + F4 .
  2. Login.
  3. Instale aptitude :

    sudo apt install aptitude
    
  4. Instale unity usando aptitude :

    sudo aptitude install unity
    

Em seguida, ele informará que existe um pacote conflitante. Você responde 'n' e ele propõe que você faça o downgrade do compiz. Vá em frente e aceite isso.

    
por Chadi 16.02.2018 / 01:23
2

Esta é a segunda vez em menos de 6 meses que as equipes do Ubuntu fizeram uma proposta de atualização sem testar e quebrar os sistemas Ubuntu.

Esses caras recentemente estão soltos para quebrar a versão atual do LTS com atualizações propostas falsas e não testadas ... Isso é novo, até o ano passado isso nunca aconteceu.

A solução é para NEVER install uma proposta e chamada Partial Upgrade ... Você ainda pode atualizar seu sistema por meio de Synaptic pacote por pacote (embora, para ter uma boa noção disso, Synaptic seja removido agora do pacote) lançamento oficial) ... Até que você bloqueie todas as atualizações do lançamento de bugs. Aqui está um exemplo:

#!/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

Em seguida, execute o script pelo nome no diretório atual, como:

$ ./block-upd-nemo

Para desbloquear

#!/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

Então

$ ./unblock-upd-nemo

Aqui no Synaptic você pode ver uma longa lista de pacotes relacionados com compiz que estão quebrando Xenial LTS removendo estes pacotes:

ubuntu-desktop unity unity-tweak-tool unsettings ...

Os pacotes a serem bloqueados são:

[Lista atualizada como perdi os pacotes afetados pela unidade]

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

Uma lista bastante longa. Gerenciável por meio do script do Shell.

Uma solução de recuperação seria inicializar a partir de um dispositivo USB de instalação do Xenial e executar um chroot . Vá para o site do Launchpad para compiz baixar os pacotes Release (main) e forçar a instalação deles com dpkg -i *.deb bloquear todas as atualizações ou remover as versões proposed da sua configuração de atualização.

[Atualização]: você também precisa acessar o site do Launchpad unity e fazer o download do Release (main) pacotes afetados (veja abaixo no script).

Pesquisa do Google se você não estiver familiarizado com ele.

Aqui está o meu script de bloqueio para compiz que acabei de terminar:

[Atualizado como perdi os pacotes afetados pela unidade]

#!/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

Não se esqueça de definir os scripts executáveis ...

$ chmod a+x block-upd-compiz

[Folllow Up]: Depois de executar um script Shell para desbloquear os 19 pacotes de compiz e unity . Eu experimentei a solução N0rbet e parece funcionar:

$ 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
    
por Antonio 16.02.2018 / 03:11