1

I've ended up with the Gtk-Message: Failed to load module "overlay-scrollbar" due to needing 32-bit overlay-scrollbar-gtk2 on a 64-bit amd64 Ubuntu - which is better described in How do I install 32-bit libraries when they keep having uninstallable dependencies? ...

Basically, if I sudo apt-get install overlay-scrollbar-gtk2:i386, it will fail on 14.04, because it is understood to depend on overlay-scrollbar:i386, however on 14.04 only overlay-scrollbar:all is being installed.

So, I could try apt-get download with dpkg --ignore-depends ... as in How do I install 32-bit libraries when they keep having uninstallable dependencies? - but that didn't quite work...

So what I tried, was to follow the directions Howto change dependencies, and did something like this:

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)

In the nano edit, I do the same as in Ignoring specific unmet dependencies with aptitude? - I comment the dependency using a XB* tag:

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

And now, installing the hacked .deb passes without a problem:

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

Looks good (and actually, seems to be good - because when I run 32-bit programs that used to complain with Gtk-Message: Failed to load module "overlay-scrollbar" after this, they do not complain anymore) - but now when I do an apt-get upgrade, I get the "packages have been kept back" message:

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

... but what is even stranger, when I do apt-get dist-upgrade, there are no warnings whatsoever?!:

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

This page apt-get dist-upgrade doesn't fix 'The following packages have been kept back' also notes:

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

So, does anyone know - what would be the reason for "keeping back" the package in this case - and how to get rid of that warning when doing an update? Clearly, I don't want to do apt-get install of the package here, as it is hacked and I'd want to install it directly from the .deb - and apt-get cannot install a .deb file directly, only dpkg can do that...


EDIT: as @ByteCommander suggested in comments, I tried 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.

That doesn't tell much - this is more revealing:

$ 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... I thought I had already removed the dependency to overlay-scrollbar:i386 ??!

Also, here is apt-cache policy as per @ByteCommander comment:

$ 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... could be something with /var/lib/dpkg/status, but not yet sure what it is...

5
  • 1
    You could install aptitude and try whether that one gives you more information about the conflict - and even attempts to resolve them.
    – Byte Commander
    Mar 23, 2016 at 9:51
  • Many thanks @ByteCommander - have just updated the OP with aptitude upgrade results
    – sdaau
    Mar 23, 2016 at 10:01
  • 1
    Hmm... I don't know. I never manually modified a package's dependencies... what does apt-cache policy overlay-scrollbar:i386 overlay-scrollbar say? Probably it just complains that it's only a virtual package.
    – Byte Commander
    Mar 23, 2016 at 10:15
  • 1
    But on my 15.10 system, strangely overlay-scrollbar depends on overlay-scrollbar-gtk2 and not the other way round as they seem to do on your system.
    – Byte Commander
    Mar 23, 2016 at 10:19
  • 1
    Posted apt-cache policy, @ByteCommander - by the way, also on my system there is both overlay-scrollbar depends on overlay-scrollbar-gtk2, and the other way round, which should be a circular dependency, but somehow doesn't get seen as such by the package managers...
    – sdaau
    Mar 23, 2016 at 10:32

1 Answer 1

0

Ok, I think I got it solved - but I'm not sure how persistent it will be...

Basically, so far I've assumed that the only definition of the dependencies for a package is what is noted in the .deb file, which as OP notes, has already been hacked using a XB-Ignore: "commenting" tag.

However, that turns out NOT to be the case - there is in fact an additional file where dependencies are defined, which is hinted in the output of 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

So, one definition is in /var/lib/dpkg/status - which basically inherits the XB-Ignore: tag from the hacked .deb when the package is installed.

But then, we're told that there seems to be another specification in http://dk.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages - however, clearly, this is not a filename, but a deb specification as used in /etc/apt/sources.list. So, where is the file related to this? Turns out, it is in (in my case):

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

So, I realized that inside this file, I have an "unhacked", original specification:

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, there is the same old Depends: again - so I just try to replace the Depends line into this:

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

... and so now, both this file, and /var/lib/dpkg/status show the same dependency - and now when I do 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.

... I've got no more problems... Hope that was it.

3
  • 1
    The /var/lib/apt/lists/* and maybe also /var/lib/dpkg/status files are not persistent. The first ones will get overwritten the next time you run apt-get update manually or automatically by the Software Updater in background. Not 100% sure when the dpkg status file changes, but I doubt your changes there will last...
    – Byte Commander
    Mar 23, 2016 at 11:00
  • Thanks for the comment, @ByteCommander - that confirms the hunch I've had, that the changes would not be persistent - but at least, now it is clear to me why the message "... packages have been kept back" showed up. Cheers!
    – sdaau
    Mar 23, 2016 at 11:08
  • Actually, turns out this procedure causes W: Failed to fetch http://dk.archive.ubuntu.com/ubuntu/dists/trusty/main/binary-i386/Packages Hash Sum mismatch, E: Some index files failed to download. They have been ignored, or old ones used instead.; guess somehow the change would have to be removed before one does a real update, then... although I'm not sure, this error could be due to something else I was doing...
    – sdaau
    Mar 23, 2016 at 12:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .