Correção “Os pacotes a seguir foram mantidos de volta” - sem instalar?

1

Acabei com a Gtk-Message: Falha ao load module "overlay-scrollbar" devido à necessidade de 32-bit overlay-scrollbar-gtk2 em um de 64-bit amd64 Ubuntu - que é melhor descrito em Como instalo bibliotecas de 32 bits quando elas continuam tendo dependências desinstaláveis? . .

Basicamente, se eu sudo apt-get install overlay-scrollbar-gtk2:i386 , ele irá falhar em 14.04, porque é entendido que depende de overlay-scrollbar:i386 , no entanto, em 14.04 somente overlay-scrollbar:all está sendo instalado.

Então, eu poderia tentar apt-get download com dpkg --ignore-depends ... como em Como eu instalo bibliotecas de 32 bits quando elas continuam tendo dependências desinstaláveis? - mas isso não funcionou bem ...

Então, o que tentei foi seguir as instruções Como alterar as dependências , e fiz algo assim:

sudo apt-get remove --purge overlay-scrollbar-gtk2:i386
apt-get download overlay-scrollbar-gtk2:i386
dpkg-deb -x overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_i386.deb tmpdir-1404
dpkg-deb --control overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_i386.deb tmpdir-1404/DEBIAN
nano tmpdir-1404/DEBIAN/control ## edit, see below
dpkg -b tmpdir-1404 overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_hacked_i386.deb
# dpkg-deb: warning: 'tmpdir-1404/DEBIAN/control' contains user-defined field 'XB-Ignore'
# dpkg-deb: warning: ignoring 1 warning about the control file(s)

No nano edit, eu faço o mesmo que em Ignorando específicos dependências não satisfeitas com o aptitude? - Eu comento a dependência usando uma tag XB *:

...
Depends: libc6 (>= 2.4), libcairo2 (>= 1.10.0), libglib2.0-0 (>= 2.37.3), libgt$
XB-Ignore: overlay-scrollbar, # hack: ignore this dependency for i386
...

E agora, instalar o .deb hackeado passa sem problemas:

$ sudo dpkg -i overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_hacked_i386.deb
Selecting previously unselected package overlay-scrollbar-gtk2:i386.
(Reading database ... 227214 files and directories currently installed.)
Preparing to unpack overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_hacked_i386.deb ...
Unpacking overlay-scrollbar-gtk2:i386 (0.2.16+r359+14.04.20131129-0ubuntu1) ...
Setting up overlay-scrollbar-gtk2:i386 (0.2.16+r359+14.04.20131129-0ubuntu1) ...
Processing triggers for libc-bin (2.19-0ubuntu6.7) ...

Parece bom (e, na verdade, parece ser bom - porque quando executo programas de 32 bits que costumavam reclamar com Gtk-Message: Failed to load module "overlay-scrollbar" depois disso, eles não reclamam mais) - mas agora quando eu faço um apt-get upgrade , Eu recebo a mensagem "pacotes foram mantidos":

$ sudo apt-get update
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  overlay-scrollbar-gtk2:i386
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

... mas o que é ainda mais estranho, quando eu faço apt-get dist-upgrade , existem não avisos?!:

$ sudo apt-get dist-upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Esta página apt -get dist-upgrade não corrige 'Os seguintes pacotes foram mantidos de volta' também observa:

That means they've been kept back for a more difficult reason than new dependencies or needing the removal of other packages.

Então, alguém sabe - qual seria a razão para "manter de volta" o pacote neste caso - e como se livrar desse aviso ao fazer um update ? Claramente, eu não quero fazer apt-get install do pacote aqui, pois ele é hackeado e eu gostaria de instalá-lo diretamente do .deb - e apt-get não pode instalar um arquivo .deb diretamente, somente dpkg pode fazer isso ...

EDIT: como @ByteCommander sugeriu nos comentários, eu tentei aptitude :

$ sudo aptitude upgrade 
Resolving dependencies...                
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.

Isso não diz muito - isso é mais revelador:

$ sudo aptitude full-upgrade 
The following packages will be upgraded: 
  overlay-scrollbar-gtk2:i386{b} 
1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 29.3 kB of archives. After unpacking 0 B will be used.
The following packages have unmet dependencies:
 overlay-scrollbar-gtk2:i386 : Depends: overlay-scrollbar:i386 which is a virtual package.
The following actions will resolve these dependencies:

     Remove the following packages:
1)     overlay-scrollbar-gtk2:i386 

Accept this solution? [Y/n/q/?] q
Abandoning all efforts to resolve these dependencies.
Abort.

Hmm ... achei que já havia removido a dependência para overlay-scrollbar:i386 ??!

Além disso, aqui está apt-cache policy conforme o comentário do @ByteCommander:

$ apt-cache policy overlay-scrollbar:i386 overlay-scrollbar
overlay-scrollbar:i386:
  Installed: (none)
  Candidate: (none)
  Version table:
overlay-scrollbar:
  Installed: 0.2.16+r359+14.04.20131129-0ubuntu1
  Candidate: 0.2.16+r359+14.04.20131129-0ubuntu1
  Version table:
 *** 0.2.16+r359+14.04.20131129-0ubuntu1 0
        500 http://dk.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
        100 /var/lib/dpkg/status

$ apt-cache policy overlay-scrollbar-gtk2:i386 overlay-scrollbar-gtk2
overlay-scrollbar-gtk2:i386:
  Installed: 0.2.16+r359+14.04.20131129-0ubuntu1
  Candidate: 0.2.16+r359+14.04.20131129-0ubuntu1
  Version table:
     0.2.16+r359+14.04.20131129-0ubuntu1 0
        500 http://dk.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
 *** 0.2.16+r359+14.04.20131129-0ubuntu1 0
        100 /var/lib/dpkg/status
overlay-scrollbar-gtk2:
  Installed: 0.2.16+r359+14.04.20131129-0ubuntu1
  Candidate: 0.2.16+r359+14.04.20131129-0ubuntu1
  Version table:
 *** 0.2.16+r359+14.04.20131129-0ubuntu1 0
        500 http://dk.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
        100 /var/lib/dpkg/status

Hmmm ... poderia ser algo com /var/lib/dpkg/status , mas ainda não tem certeza do que é ...

    
por sdaau 23.03.2016 / 10:45

1 resposta

0

Ok, acho que resolvi - mas não tenho certeza de quão persistente será ...

Basicamente, até agora eu assumi que a definição somente das dependências para um pacote é o que está anotado no arquivo .deb , que como OP observa já foi invadido usando uma tag XB-Ignore: "commenting".

No entanto, esse NÃO é o caso - na verdade, existe um arquivo adicional onde as dependências são definidas, o que é sugerido na saída de apt-cache policy overlay-scrollbar-gtk2:i386 :

  Version table:
     0.2.16+r359+14.04.20131129-0ubuntu1 0
        500 http://dk.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
 *** 0.2.16+r359+14.04.20131129-0ubuntu1 0
        100 /var/lib/dpkg/status

Portanto, uma definição está em /var/lib/dpkg/status - que basicamente herda a tag XB-Ignore: do hackeado .deb quando o pacote é instalado.

Mas, nos dizem que parece haver outra especificação em http://dk.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages - no entanto, claramente, isso não é um nome de arquivo, mas uma deb de especificação usada em /etc/apt/sources.list . Então, onde está o arquivo relacionado a isso? Acontece que está no (no meu caso):

/var/lib/apt/lists/dk.archive.ubuntu.com_ubuntu_dists_trusty_main_binary-i386_Packages

Então, percebi que dentro desse arquivo, eu tenho uma especificação original "sem interrupção":

Package: overlay-scrollbar-gtk2
Priority: optional
Section: libs
Installed-Size: 118
Maintainer: Ubuntu Desktop Team <[email protected]>
Architecture: i386
Source: overlay-scrollbar
Version: 0.2.16+r359+14.04.20131129-0ubuntu1
Replaces: liboverlay-scrollbar-0.2-0 (<< 0.2.16+r348), liboverlay-scrollbar-0.2-dev (<< 0.2.16+r348)
Depends: overlay-scrollbar, libc6 (>= 2.4), libcairo2 (>= 1.10.0), libglib2.0-0 (>= 2.37.3), libgtk2.0-0 (>= 2.24.6-0ubuntu4)
Conflicts: liboverlay-scrollbar-0.2-0 (<< 0.2.16+r348), liboverlay-scrollbar-0.2-dev (<< 0.2.16+r348)
Filename: pool/main/o/overlay-scrollbar/overlay-scrollbar-gtk2_0.2.16+r359+14.04.20131129-0ubuntu1_i386.deb
Size: 29286
MD5sum: 261bcaed3e0a73ebab73c25514dfdab5
SHA1: eec7a0e958ce41a441883ce305de2fc8ff4e8aac
SHA256: 4f18ad70e6ce0fbb59e79d2ca8fc43ffafd13011dc3db0dcd65bffeddf23379b
Description: GTK 2 module for overlay scrollbars
Multi-Arch: same
Homepage: http://launchpad.net/ayatana-scrollbar
Description-md5: 1d3f21e2d8af7452b22c5b3bf608dfba
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 5y
Task: ubuntu-desktop, ubuntu-usb, edubuntu-desktop, edubuntu-usb

Ah, há o mesmo Depends: de novo - então eu tento substituir a linha Depends nisso:

Depends: libc6 (>= 2.4), libcairo2 (>= 1.10.0), libglib2.0-0 (>= 2.37.3), libgtk2.0-0 (>= 2.24.6-0ubuntu4)
XB-Ignore: overlay-scrollbar, # hack: ignore this dependency for i386

... e agora, este arquivo e /var/lib/dpkg/status mostram a mesma dependência - e agora, quando eu faço upgrade :

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

... Eu não tenho mais problemas ... Espero que tenha sido isso.

    
por sdaau 23.03.2016 / 11:55