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 <ubuntu-desktop@lists.ubuntu.com>
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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.