wiki:Linux/Ubuntu/Packages/MerryGoRound

Package Build Merry-Go-Round

Sometimes the myriad dependencies of packages can become surreal. I had to share this story - it had me half-way between disbelief and resignation.

I had just built and installed Blueman 0.6. One of the features requires Network Manager 0.7 which is only available for the Intrepid development track currently. On Hardy the version is 0.6.6. So I fetched the Intrepid source and tried building it. It needs libdbus-glib 0.76 but Hardy only has 0.74. So I fetch and build the Intrepid source for that too. Then network-manager-gnome (the panel applet) needs updating too so again, fetch the Intrepid source and build for Hardy. To install network-manager it needs wpasupplicant 0.6.3 (Hardy has 0.6.0). To build wpasupplicant requires the po4a package, and debhelper 7.0 (Hardy has 6.x).

For each of these packages I had to update debian/changelog and debian/control with a new version (add one + ~ppa1h), distribution (hardy), and maintainer (me).

I built each one using my automated build_test pdebuild script so the binary .deb packages were in the /var/cache/pbuilder/${DISTRO}-${ARCH}/results/ directory without having to install all the Build-Depends into the host and I could use dpkg --force-yes -i ... to force-install them since there were so many seemingly circular conflicts.

Now, when nm-applet runs it complains of a missing dbus method. This requires dbus 1.2.3 and its associated libraries. To install this requires lsb-base 3.2-14.

Once all these packages are installed and the system restarted (the complexities of the dbus backends needs it to be sure the new libraries are being used by all applications) Network Manager cannot complete a DHCP lease acquisition - it times out the attempt and disconnects the interface even thought dhclient has actually logged a successful lease acquisition.

The fix for this is to update dhcp3-client in Hardy from 3.0.6 by fetching the dhcp3 3.1.1 Intrepid source packages, building and installing dhcp3-common and dhcp3-client and restarting the NetworkManager service (dhcp3-server also needs updating too if it is installed).

Finally - it works :)

What started out as a simple check of Blueman functionality developed into what felt like an endless series of chasing package versions.

After all that effort I've added all these Hardy packages to my Ubuntu PPA for others to enjoy.