A cautionary tale about installing debian-unstable packages under Ubuntu Dapper.
I needed version 6.6 of the Glasgow Haskell Compiler and Dapper/Edgy only supply version 6.4.2. I found a mailing list post explaining that 6.6 was available under debian-unstable, which is what Ubuntu is based on. So I downloaded the .deb and tried to install it.
No dice. Requires a partcular version of libc6. So go grab that (BIG mistake – this is possibly the most central library in the whole system and switching versions of it was never going to be a good idea). Try to install, find a dependency (tzinfo), try to install the dependency and kapow – failed in mid-install! Tried to overwrite a file that dpkg thought belonged to the locales package.
Now, whatever I did I got something like this:
sudo apt-get -f install Reading package lists... Done Building dependency tree... Done Correcting dependencies... failed. The following packages have unmet dependencies. libc6: Depends: tzdata but it is not installable libc6-dev: Depends: libc6 (= 2.3.6-0ubuntu20) but 2.3.6.ds1-10 is installed libc6-i686: PreDepends: libc6 (= 2.3.6-0ubuntu20) but 2.3.6.ds1-10 is installed E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages. E: Unable to correct dependencies
I tried every combination of: apt-get remove, apt-get install, dpkg -r and dpkg -i with each package name and variations on the package names as well as bare apt-get install -f and using –force and –purge and goodness knows what else (many thanks to the denizens of #ubuntu on freenode for their many suggestions). Whatever I did the system would just tell me it was queueing up to install the debian versions of ghc and libc6 and that it couldn’t work it’s way out of the dependency pickle.
Finally a knight in shining armour by the unexpected name of “crot” came up with this baby:
sudo apt-get install -f libc6/dapper
The /dapper forces the system to install the correct version even though the debian package is also called libc6. Thanks crot!
I leave this blog post for those who try something equally foolish. If you use a package from the wrong distribution or wrong version, this may help you out.
Thank you very much for this post!!! I was fighting with a very similar problem with libc6 since about 3 days, and had gotten no help from the ubuntu forums. I had committed the mistake of installing a libc6 package from the debian page (packages.debian.org), which was not within the ubuntu repositories. But I did this AFTER installing a libgpod package from the same place, so I had to run
sudo apt-get install -f libc6/dapper libgpod0/dapper
to get the problem fixed.
Once again thank you.
Thank you for this post. That’ll show me for blindly adding depositories and expecting everything to work like magic….
has anyone been able to install ghc 6.6 on edgy? I guess wait for next ubuntu release in a couple of months?
Hi Brian, I have ghc6.6 working on Dapper just fine. I just installed the “generic linux” download from the ghc site instead of the debian stuff.
Hi thank you very much, i also got stuck into this problem, got madwifi package under debian-unstable.
However the apt-get did not work, i had to do, aptitude install libc6/dapper, this solved my problem.
thanks again
I generally just install from source if package dependancies aren’t being met, and the software is bleeding edge. It’s almost always easier that way. Of course if the system isn’t yours you may not have access to the compiler.
You can control where it’s installed and simply remove it and install the package when the packagers catch up. With a well written configure script (or reasonably easy to understand make file), the source and your compiler can be more flexible with dealing with your installed libc stuff, unless there are dependancies on functions within libc with a signature which is different from the installed version and the one the code was written against. If there are, you can often fix the issue in the source code and not need to upgrade glibc (or whatever).
I sort of got into this when OpenSSL had a serious vulnerability and it took forever for the new package to be built by the distro maintainers. I had a mandate to get it patched in 48 hours or the servers get the plug pulled. I got it done and ever since, I compile all web server and related software from source. (php, openssl, apache, and many other packages).
If there is a serious vulnerability I can patch it the moment the developers release the patch. I don’t need to wait weeks (or even months) for the packagers to get to it while exposed systems are vulnerable. After scripting the build process, it’s a snap to deal with when you need to recompile something.
I follow this philosophy for any service which is exposed to that combat zone we call the internet.
It’s not a bad philosophy, but GHC6.6 takes about 8 hours to compile on my machine IF I have GHC6.4 installed already. God knows how long it takes when it has to bootstrap with a C compiler only. A long time!
Thank’s for this post!! It was very very helpfull!!
I had a similar problem trying to install latest version of QPxTool from Debian unstable. It had dependencies on libqt3-mt then libfontconfig1 then fontconfig-config
It got stuck when installing fontconfig-config. This blog helped me.
sudo apt-get install -f fontconfig-config/edgy
Maybe a better (or simply different) way to overcome the problem :
sudo aptitude keep libc6 libc6-dev
Cheers !