[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[libc6, apache, db1, apache2] Aptitude screenshot - It can downgrade!



Had a little problem on drizzle today...  There is a security update
for `mailman', the list manager we use for these mailing lists.  I
went to upgrade it, and...

A recent packaging of `apache2-mpm-prefork' (from unstable Sid) was
partially installed and broken, requiring a reinstall before it could
be used or purged.  (When I had originally installed it, the build I
tried to install had a bug in the postinst or something.)  The next
build fixes the problem, but the next build requires a newer build of
`libc6'.  The build of `libc6' that it requires is now built without
`libdb1' compatibility support, which is required by the `apache'
(1.3) that runs the pdxlinux.org websites.

I heard about the "libc6" problem on irc.us.openprojects.net #debian
from "/msg apt news" and the topic line.  Had I not seen that, I may
have wound up with an unrestartable apache!  I do have
"apt-listchanges" installed, but the `libc6' changelog indicates that
no packages should be broken by it whos maintainer's had not been
notified.  Apparently, Ben Collins missed Apache's dependancy on the
libdb1 compatibility.  Is there a tool that could have gotten that
list automaticly???

This set of dependancy problems was blocking me from upgrading
`mailman' or anything else on the machine.  Note that on
drizzle.pdxlinux.org, the "/etc/apt/sources.list" contains entries for
stable Woody, testing Sarge, and unstable Sid.  An
"/etc/apt/preferences" control file is used to have the "apt" tools
choose stable Woody packages unless explicitly asked to install newer
builds.  (I really love the "preferences" mechanism!  Great design!)

"Simply" removing the testing Sarge and unstable Sid entries from
"sources.list" was NOT the solution.  Doing so made it impossible to
perform the upgrade of `apache2-mpm-prefork', since it was no longer
found in the package lists.  It could not "simply" be "dpkg
--purge"'d, because it was in broken and inconsistent state.  "dpkg"
refused and said that it needed to be reinstalled before I could purge
it.

The solution was to go ahead and let the Apt system upgrade `libc6'
and `apache2-mpm-prefork', and then to immediatly downgrade the libc
and purge apach2, so that the `libc6' installed will work with
`apache' (1.3).  This is important since our LUG web sites are running
on Apache 1.3 still, and probably will be for a few more whiles.

 <URL:http://people.pdxlinux.org/~karlheg/aptitude-can-downgrade.png>

Aptitude is a true UPGRADE to the venerable `dselect'.  It is
everything that dselect was, with most if not all of dselect's faults
fixed.  The upgrade was straightforward, and the new build of
`apache2-mpm-prefork' installed cleanly and all is A-Ok.  I then went
back and used "/" to search for "libc6", pressed "Enter" over it,
cursored down, and marked the older build for install.  I pushed "q"
to go back out to the top level, and then used "l" to limit the
display to only broken ("~b") packages.

I then selected the older build of the other libc related packages,
marked apache2 for purge, and located all other packages that depended
on the new libc6, marking them for either purge, downgrade, or hold.
I initially did this by hand, but as I write this, it occurs to me
that `aptitude' probably provides a better way to do it...  I think
that I could have used "l" to limit the display to "~Bdepends" and
thus obtained the list of packages that had unmep "depends".

The operation completed successfully, with no problems at all.  "ldd
$(which apache)" shows me that everything it needs will be there the
next time it restarts, also.  Excellent.  Time for lunch.  Time
elapsed: ~ 20 Minutes.

-- 
As any limb well and duly exercised, grows stronger,
the nerves of the body are corroborated thereby. --I. Watts.  .''`.
 Debian -- The blue collar Linux distribution.               : :' :
 <URL:http://www.debian.org/social_contract>		     `. `'



Reply to: