Tales from the Mancoosi frontline: installing akonadi-kde-resource-googledata

As we have seen in the first post on these issues, upgrading a GNU/Linux machine is not an easy task: this is why Mancoosi is working hard at improving the situation. Here comes another report from the frontline, detailing the epic battle on my machine resulting from the need to install a single new package, akonadi-kde-resource-googledata, to be able to sync my korganizer data with a Google agenda.

Let's start with some context: my machine is running a standard Debian distribution, as obtained by re-installing from scratch a Lenny distribution back in July last year, then adding as additional sources oldstable (yes, I still need some very old packages), testing and unstable (yes, I do need some pretty recent packages). It is well known that using more than one baseline as source pushes current tools to their limits, so I definitely live a bit dangerously, but it is also the case that very many people end up in this situation after a few months of use. Of course, I have crossed in my life some nice people explaining to me that the problems detailed below do not exist, because on a freshly installed distribution XXX they never encountered it; such cute remarks remind me of the old joke that mathematicians like to make about physicists, you know, the one where a physicists is asked whether all impair numbers are prime, and he answers yes after having checked 1, 3, 5, 7 and 11.

Trying with aptitude does not lead anyway

Let's try first using aptitude, using a very recent version

dpkg -l aptitude
||/ Name                           Version                   
+++-==============================-======================
ii  aptitude                       0.6.2.1-2

I run it with the option --without-recommends that should make life easier to it, as it tells aptitude not to treat recommends as hard dependencies:

aptitude -s --without-recommends install akonadi-kde-resource-googledata

The output of this command is quite long, so I just put here a reference to the corresponding entry in the Mancoosi Debian DUDF database, that you can examine in detail yourself, but in essence, the result is that aptitude proposes to remove 454 packages, including openoffice, the java runtime (this will make some of my FSF friends happy), ocaml (this will make me and many of my wonderful OCaml guru friends very unhappy), eclipse, and the full KDE environment.

Removing the KDE environment is a consequence of the default autoremove policy highlighted in the first post in this thread (as a consequence of breaking kde-full), but I honestly did not invest the necessary time to understand why OCaml or eclipse get bumped out.

And yet, it would still not install akonadi-kde-resource-googledata. So, of course, I aborted the operation here.

Trying with apt-get: your mileage may vary

As an alternative solution, I turned to the old apt-get tool, that managed to find a way to get akonadi-kde-resource-googledata on my machine, but requires me to make a lot of changes.

First try: run apt-get without any further ado

As a first try, I jsut run apt-get asking to install my package

apt-get -s install akonadi-kde-resource-googledata

the tool proposes an upgrade paths that is fully detailed in this DUDF entry, and the bottomline is that I am proposed a solution with 209 upgraded, 121 newly installed, and 24 removed packages.

Second try: restrict to testing

Since there are a bit too many changes, we can try to tell apt-get to only use testing as source of the new packages:

apt-get -s -t testing install akonadi-kde-resource-googledata

the tool proposes an upgrade paths that is fully detailed in this DUDF entry, and the result is a solution with 92 upgraded, 33 newly installed, and 7 removed packages.

Third try: restrict to stable

That was quite better, so one would be curious to see whether restricting to stable would give a solution with less changes, but it is not the case: as can be seen in this DUDF entry, restricting to stable prevents apt-get from finding a solution.

Using one of the solvers from the Mancoosi internal competition

As you can expect, I refrained from accepting any of the proposed solutions: aptitude will tear down my machine, and apt-get, with any of the options, still proposes too many changes to just hit on the Y key and try to see what happens.

So, I was curious to see what kind of solution I could get from using one of the solvers used in the first Mancoosi internal solver competition.

First try, just install the package

Here is the summary of the solution obtained when using the paranoind optimization criterion that boils down to telling the solver "hey, get me this nifty package, but please try to leave all the rest alone", and is fully described here.

Summary of proposed changes:
 new: 37
 removed: 2
 replaced: 4
 upgraded: 64
 downgraded: 2
 unsatisfied recommends: 41
 changed: 109
 uptodate: 751
 notuptodate: 2225

As you see, there are 109 packages changed overall, of which 37 are new installs, 2 are real removals, 4 are replacements (packages removed because a replacement package comes in), 64 are upgrades and 2 are downgrades).

Second try: refuse downgrade of korganizer

Unfortunately, as can be seen below, this first solution downgrades my korganizer tool, which was precisely the tool whose functionality I wanted to improve using akonadi-kde-resource-googledata, so I was still quite unhappy. I launched again the solver, but adding as an extra requirement the fact that I wanted a version of korganizer as recent as, or newer, than the one installed on my machine, and the solver came up with a solution with the following characteristics.

Summary of proposed changes:
 new: 33
 removed: 2
 replaced: 4
 upgraded: 92
 downgraded: 0
 unsatisfied recommends:: 41
 changed: 131
 uptodate: 753
 notuptodate: 2219

No package is downgraded, but the two removed packages are akonadi-kde (4:4.2.2-1) and libgnokii4 (0.6.27.dfsg-2), which are not meta-packages, so I do not entirely feel safe about going ahead, and I decided to postpone installation until after a careful examination of the implications of these removals (in particula, akonadi-kde attracted my attention).

Conclusions

In just a few months of life of my Lenny-based machines, I am already in a state where installing some seemingly minor extension requires a lot of thinking before going ahead with an installation, and the standard tools available, aptitude and apt-get provide solutions that are not entirely reassuring. A first try with solvers issued from the Mancoosi work leads to solutions which are comparable to what apt-get finds when forced to stick to the testing baseline in this case, but these are not necessarily the optimal solutions, as the solver was given a timeout of three minutes, and better solution may be found by the winner of the forthcoming Mancoosi International Solver Competition.

So, in the end, I decided to give up for the moment: the Akonadi interface to Google will have to wait still a bit before I give it a try.

Appendix I: the details of the solutions

For the curious mind, here are the details of the solutions found by the solver.

Solutions that downgrades korganizer
New packages:
 akonadi-kde-resource-googledata (1.0.1-2) libc-bin (2.10.2-6)
 libc-dev-bin (2.10.2-6) libexiv2-6 (0.19-1) libgcal0 (0.9.3-1)
 libgps19 (2.94-1) libiodbc2 (3.52.6-4) libkcal2b (4:3.5.5.dfsg.1-6)
 libkdepim1a (4:3.5.5.dfsg.1-6) libkephal4 (4:4.4.3-1)
 libkfontinst4 (4:4.3.4-5+b1) libkleopatra1 (4:3.5.5.dfsg.1-6)
 libkmime2 (4:3.5.9-5) libknotificationitem-1-1 (4:4.3.4-1)
 libkpimexchange1 (4:3.5.5.dfsg.1-6) libkpimidentities1 (4:3.5.5.dfsg.1-6)
 libkscreensaver5 (4:4.3.4-5+b1) libksgrd4 (4:4.3.4-5+b1)
 libktnef1 (4:3.5.9-5) libkworkspace4 (4:4.3.4-5+b1)
 liblzma2 (4.999.9beta+20100307-1) libnepomukquery4 (4:4.3.4-5+b1)
 libnepomukqueryclient4 (4:4.3.4-5+b1)
 libplasma-applet-system-monitor4 (4:4.3.4-5+b1)
 libplasma-geolocation-interface4 (4:4.3.4-5+b1)
 libplasmaclock4 (4:4.3.4-5+b1) libpolkit-qt0 (0.9.3-1)
 libprocesscore4 (4:4.3.4-5+b1) libprocessui4 (4:4.3.4-5+b1)
 libsolidcontrol4 (4:4.3.4-5+b1) libsolidcontrolifaces4 (4:4.4.3-1)
 libtaskmanager4 (4:4.3.4-5+b1) libutempter0 (1.1.5-3)
 libweather-ion4 (4:4.3.4-5+b1) libxklavier16 (5.0-2)
 oxygen-icon-theme (4:4.4.3-1) soprano-daemon (2.4.2+dfsg.1-1)
Removed packages:
 kde-full (5:50) kdepim (4:4.2.2-1)
Replaced packages:
 kdebase-runtime-bin-kde4 {kdebase-runtime=4:4.3.4-2}
 kdebase-runtime-data-common {kdebase-runtime-data=4:4.4.3-1} 
 kdebase-workspace-libs4+5 {libweather-ion4=4:4.3.4-5+b1, libtaskmanager4=4:4.3.4-5+b1,
       libsolidcontrolifaces4=4:4.4.3-1, libsolidcontrol4=4:4.3.4-5+b1, libprocessui4=4:4.3.4-5+b1,
       libprocesscore4=4:4.3.4-5+b1, libplasmaclock4=4:4.3.4-5+b1,
       libplasma-geolocation-interface4=4:4.3.4-5+b1,
       libplasma-applet-system-monitor4=4:4.3.4-5+b1, libnepomukqueryclient4=4:4.3.4-5+b1,
       libnepomukquery4=4:4.3.4-5+b1, libkworkspace4=4:4.3.4-5+b1, libksgrd4=4:4.3.4-5+b1,
       libkscreensaver5=4:4.3.4-5+b1, libkfontinst4=4:4.3.4-5+b1, libkephal4=4:4.4.3-1}
 libkholidays4 {kdepimlibs5=4:4.3.4-2}
Upgraded packages:
 kde-icons-oxygen [4:4.2.4-2] (4:4.3.4-1)
 kde-window-manager [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 kdebase-runtime [4:4.2.4-2] (4:4.3.4-2)
 kdebase-runtime-data [4:4.2.4-2] (4:4.4.3-1)
 kdebase-workspace-bin [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 kdebase-workspace-data [4:4.2.4-1] (4:4.3.4-5)
 kdebase-workspace-kgreet-plugins [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 kdelibs-bin [4:4.2.4-1] (4:4.3.4-3)
 kdelibs5 [4:4.2.4-1] (4:4.3.4-3)
 kdelibs5-data [4:4.2.4-1] (4:4.3.4-3)
 kdepimlibs-data [4:4.2.4-1] (4:4.3.4-2)
 kdepimlibs5 [4:4.2.4-1] (4:4.3.4-2)
 kdm [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 kscreensaver [4:4.2.4-1] (4:4.3.4-1)
 ksysguard [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 ktux [4:4.2.4-2] (4:4.3.4-1)
 libc6 [2.9-12] (2.10.2-6)
 libc6-amd64 [2.9-12] (2.10.2-6)
 libc6-dev [2.9-12] (2.10.2-6)
 libc6-i686 [2.9-12] (2.10.2-6)
 libclucene0ldbl [0.9.20-3] (0.9.21b-2+b1)
 libglib2.0-0 [2.22.4-1] (2.24.1-1)
 libglib2.0-dev [2.22.4-1] (2.24.1-1)
 libgpgme11 [1.1.8-2] (1.2.0-1.2)
 libkdecorations4 [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 libkexiv2-7 [4:4.2.4-1] (4:4.3.4-1+b1)
 libkwineffects1 [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 liblancelot0 [4:4.2.4-1] (4:4.3.4-1)
 libphonon4 [4:4.5.2-1] (4:4.6.0really4.4.1-2)
 libplasma3 [4:4.2.4-1] (4:4.3.4-3)
 libpulse-mainloop-glib0 [0.9.15-2] (0.9.21-1)
 libpulse0 [0.9.15-2] (0.9.21-1)
 libqt4-assistant [4:4.5.2-1] (4:4.6.2-4)
 libqt4-dbus [4:4.5.2-1] (4:4.6.2-4)
 libqt4-designer [4:4.5.2-1] (4:4.6.2-4)
 libqt4-help [4:4.5.2-1] (4:4.6.2-4)
 libqt4-network [4:4.5.2-1] (4:4.6.2-4)
 libqt4-opengl [4:4.5.2-1] (4:4.6.2-4)
 libqt4-qt3support [4:4.5.2-1] (4:4.6.2-4)
 libqt4-script [4:4.5.2-1] (4:4.6.2-4)
 libqt4-sql [4:4.5.2-1] (4:4.6.2-4)
 libqt4-sql-mysql [4:4.5.2-1] (4:4.6.2-4)
 libqt4-sql-sqlite [4:4.5.2-1] (4:4.6.2-4)
 libqt4-svg [4:4.5.2-1] (4:4.6.2-4)
 libqt4-test [4:4.5.2-1] (4:4.6.2-4)
 libqt4-webkit [4:4.5.2-1] (4:4.6.2-4)
 libqt4-xml [4:4.5.2-1] (4:4.6.2-4)
 libqt4-xmlpatterns [4:4.5.2-1] (4:4.6.2-4)
 libqtcore4 [4:4.5.2-1] (4:4.6.2-4)
 libqtgui4 [4:4.5.2-1] (4:4.6.2-4)
 libraptor1 [1.4.18-3] (1.4.21-2)
 libsoprano4 [2.2.2+dfsg.1-1] (2.4.2+dfsg.1-1)
 libstreamanalyzer0 [0.6.5-1+b1] (0.7.2-1)
 libstreams0 [0.6.5-1+b1] (0.7.2-1)
 libxslt1-dev [1.1.24-2] (1.1.26-3)
 libxslt1.1 [1.1.24-2] (1.1.26-3)
 locales [2.9-12] (2.10.2-6)
 phonon [4:4.3.1-1] (4:4.6.0really4.4.0-4)
 plasma-dataengines-addons [4:4.2.4-1] (4:4.3.4-1)
 plasma-dataengines-workspace [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 plasma-widget-lancelot [4:4.2.4-1] (4:4.3.4-1)
 plasma-widgets-addons [4:4.2.4-1] (4:4.3.4-1)
 plasma-widgets-workspace [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 qt4-qtconfig [4:4.5.2-1] (4:4.6.2-4)
Downgraded packages:
 kalarm [4:4.2.2-1] (4:3.5.5.dfsg.1-6)
 korganizer [4:4.2.2-1] (4:3.5.5.dfsg.1-6)
Solution that upgrades korganizer
New packages:
 akonadi-kde-resource-googledata (1.0.1-2)
 kdepim-runtime (4:4.3.4-1) libbluetooth3 (4.63-2) libc-bin (2.10.2-6)
 libc-dev-bin (2.10.2-6) libexiv2-6 (0.19-1) libgcal0 (0.9.3-1)
 libgnokii5 (0.6.28.dfsg-2) libgps19 (2.94-1) libiodbc2 (3.52.6-4)
 libkephal4 (4:4.4.3-1) libkfontinst4 (4:4.3.4-5+b1)
 libknotificationitem-1-1 (4:4.3.4-1) libkscreensaver5 (4:4.3.4-5+b1)
 libksgrd4 (4:4.3.4-5+b1) libkworkspace4 (4:4.3.4-5+b1)
 liblzma2 (4.999.9beta+20100307-1) libnepomukquery4 (4:4.3.4-5+b1)
 libnepomukqueryclient4 (4:4.3.4-5+b1)
 libplasma-applet-system-monitor4 (4:4.3.4-5+b1)
 libplasma-geolocation-interface4 (4:4.3.4-5+b1)
 libplasmaclock4 (4:4.3.4-5+b1) libpolkit-qt0 (0.9.3-1)
 libprocesscore4 (4:4.3.4-5+b1) libprocessui4 (4:4.3.4-5+b1)
 libsolidcontrol4 (4:4.3.4-5+b1) libsolidcontrolifaces4 (4:4.4.3-1)
 libtaskmanager4 (4:4.3.4-5+b1) libutempter0 (1.1.5-3)
 libweather-ion4 (4:4.3.4-5+b1) libxklavier16 (5.0-2)
 oxygen-icon-theme (4:4.4.3-1) soprano-daemon (2.4.2+dfsg.1-1)
Removed packages:
 akonadi-kde (4:4.2.2-1) libgnokii4 (0.6.27.dfsg-2)
Replaced packages:
 kdebase-runtime-bin-kde4 {kdebase-runtime=4:4.3.4-2}
 kdebase-runtime-data-common {kdebase-runtime-data=4:4.4.3-1}
 kdebase-workspace-libs4+5 {libweather-ion4=4:4.3.4-5+b1, libtaskmanager4=4:4.3.4-5+b1,
       libsolidcontrolifaces4=4:4.4.3-1, libsolidcontrol4=4:4.3.4-5+b1,
       libprocessui4=4:4.3.4-5+b1, libprocesscore4=4:4.3.4-5+b1,
       libplasmaclock4=4:4.3.4-5+b1, libplasma-geolocation-interface4=4:4.3.4-5+b1,
       libplasma-applet-system-monitor4=4:4.3.4-5+b1, libnepomukqueryclient4=4:4.3.4-5+b1,
       libnepomukquery4=4:4.3.4-5+b1, libkworkspace4=4:4.3.4-5+b1, libksgrd4=4:4.3.4-5+b1,
       libkscreensaver5=4:4.3.4-5+b1, libkfontinst4=4:4.3.4-5+b1, libkephal4=4:4.4.3-1}
 libkholidays4 {kdepimlibs5=4:4.3.4-2}
Upgraded packages: akregator [4:4.2.2-1] (4:4.3.4-1)
 gnokii-common [0.6.27.dfsg-2] (0.6.28.dfsg-2) kaddressbook [4:4.2.2-1]
 (4:4.3.4-1) kalarm [4:4.2.2-1] (4:4.3.4-1) kde-icons-oxygen [4:4.2.4-2]
 (4:4.3.4-1) kde-window-manager [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 kdebase-runtime [4:4.2.4-2] (4:4.3.4-2) kdebase-runtime-data [4:4.2.4-2]
 (4:4.4.3-1) kdebase-workspace-bin [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 kdebase-workspace-data [4:4.2.4-1] (4:4.3.4-5)
 kdebase-workspace-kgreet-plugins [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 kdelibs-bin [4:4.2.4-1] (4:4.3.4-3) kdelibs5 [4:4.2.4-1] (4:4.3.4-3)
 kdelibs5-data [4:4.2.4-1] (4:4.3.4-3) kdepim [4:4.2.2-1] (4:4.3.4-1)
 kdepim-groupware [4:4.2.2-1] (4:4.3.4-1) kdepim-kresources [4:4.2.2-1]
 (4:4.3.4-1) kdepim-strigi-plugins [4:4.2.2-1] (4:4.3.4-1)
 kdepim-wizards [4:4.2.2-1] (4:4.3.4-1) kdepimlibs-data [4:4.2.4-1]
 (4:4.3.4-2) kdepimlibs5 [4:4.2.4-1] (4:4.3.4-2) kdm [4:4.2.4-1+b1]
 (4:4.3.4-5+b1) kjots [4:4.2.2-1] (4:4.3.4-1) kleopatra [4:4.2.2-1]
 (4:4.3.4-1) kmail [4:4.2.2-1] (4:4.3.4-1) knode [4:4.2.2-1] (4:4.3.4-1)
 knotes [4:4.2.2-1] (4:4.3.4-1) konsolekalendar [4:4.2.2-1] (4:4.3.4-1)
 kontact [4:4.2.2-1] (4:4.3.4-1) korganizer [4:4.2.2-1] (4:4.3.4-1)
 kpilot [4:4.2.2-1] (4:4.3.4-1) kscreensaver [4:4.2.4-1] (4:4.3.4-1)
 ksysguard [4:4.2.4-1+b1] (4:4.3.4-5+b1) ktimetracker [4:4.2.2-1] (4:4.3.4-1)
 ktux [4:4.2.4-2] (4:4.3.4-1) libc6 [2.9-12] (2.10.2-6) libc6-amd64 [2.9-12]
 (2.10.2-6) libc6-dev [2.9-12] (2.10.2-6) libc6-i686 [2.9-12] (2.10.2-6)
 libclucene0ldbl [0.9.20-3] (0.9.21b-2+b1) libglib2.0-0 [2.22.4-1] (2.24.1-1)
 libglib2.0-dev [2.22.4-1] (2.24.1-1) libgpgme11 [1.1.8-2] (1.2.0-1.2)
 libkabcommon4 [4:4.2.2-1] (4:4.3.4-1) libkdecorations4 [4:4.2.4-1+b1]
 (4:4.3.4-5+b1) libkdepim4 [4:4.2.2-1] (4:4.3.4-1) libkexiv2-7 [4:4.2.4-1]
 (4:4.3.4-1+b1) libkleo4 [4:4.2.2-1] (4:4.3.4-1)
 libkontactinterfaces4 [4:4.2.2-1] (4:4.3.4-1) libkpgp4 [4:4.2.2-1]
 (4:4.3.4-1) libksieve4 [4:4.2.2-1] (4:4.3.4-1)
 libkwineffects1 [4:4.2.4-1+b1] (4:4.3.4-5+b1) liblancelot0 [4:4.2.4-1]
 (4:4.3.4-1) libmimelib4 [4:4.2.2-1] (4:4.3.4-1) libpcsclite1 [1.5.4-1]
 (1.5.5-3) libphonon4 [4:4.5.2-1] (4:4.6.0really4.4.1-2)
 libplasma3 [4:4.2.4-1] (4:4.3.4-3) libpulse-mainloop-glib0 [0.9.15-2]
 (0.9.21-1) libpulse0 [0.9.15-2] (0.9.21-1) libqt4-assistant [4:4.5.2-1]
 (4:4.6.2-4) libqt4-dbus [4:4.5.2-1] (4:4.6.2-4) libqt4-designer [4:4.5.2-1]
 (4:4.6.2-4) libqt4-help [4:4.5.2-1] (4:4.6.2-4) libqt4-network [4:4.5.2-1]
 (4:4.6.2-4) libqt4-opengl [4:4.5.2-1] (4:4.6.2-4)
 libqt4-qt3support [4:4.5.2-1] (4:4.6.2-4) libqt4-script [4:4.5.2-1]
 (4:4.6.2-4) libqt4-sql [4:4.5.2-1] (4:4.6.2-4) libqt4-sql-mysql [4:4.5.2-1]
 (4:4.6.2-4) libqt4-sql-sqlite [4:4.5.2-1] (4:4.6.2-4) libqt4-svg [4:4.5.2-1]
 (4:4.6.2-4) libqt4-test [4:4.5.2-1] (4:4.6.2-4) libqt4-webkit [4:4.5.2-1]
 (4:4.6.2-4) libqt4-xml [4:4.5.2-1] (4:4.6.2-4)
 libqt4-xmlpatterns [4:4.5.2-1] (4:4.6.2-4) libqtcore4 [4:4.5.2-1]
 (4:4.6.2-4) libqtgui4 [4:4.5.2-1] (4:4.6.2-4) libraptor1 [1.4.18-3]
 (1.4.21-2) libsoprano4 [2.2.2+dfsg.1-1] (2.4.2+dfsg.1-1)
 libstreamanalyzer0 [0.6.5-1+b1] (0.7.2-1) libstreams0 [0.6.5-1+b1] (0.7.2-1)
 libxslt1-dev [1.1.24-2] (1.1.26-3) libxslt1.1 [1.1.24-2] (1.1.26-3)
 locales [2.9-12] (2.10.2-6) phonon [4:4.3.1-1] (4:4.6.0really4.4.0-4)
 plasma-dataengines-addons [4:4.2.4-1] (4:4.3.4-1)
 plasma-dataengines-workspace [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 plasma-widget-lancelot [4:4.2.4-1] (4:4.3.4-1)
 plasma-widgets-addons [4:4.2.4-1] (4:4.3.4-1)
 plasma-widgets-workspace [4:4.2.4-1+b1] (4:4.3.4-5+b1)
 qt4-qtconfig [4:4.5.2-1] (4:4.6.2-4) xgnokii [0.6.27.dfsg-2] (0.6.28.dfsg-2)