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

Re: Requirements for 1.1



>  * We need to decide on our scheme for shared library upgrades.  David
>    Engel, are you still thinking about this ?  Then we need to
>    implement it in all our shlib packages.  Depending on what the
>    solution is I may need to change dpkg.

Yes.  Sorry for the long delay.  I've been meaning to look at some of
the dpkg internals to see what, if anything, needed to be done.  I
finally made some time to do that this morning.

I apologize for this being terse.  I had hoped to give a much more
thorough description of things, but writing is not one of my strongest
skills and it would take me more time than I can currently afford to
get it just right.  So if you have any questions, don't hesitate to
ask.

This idea hinges on the assumption that the only "configuration"
needed by a shared library is to have ldconfig run.  I think this is
the case for all current packages and shouldn't be a problem for
future packages either.

All along, I've been trying to figure out how to get ldconfig run at
the proper time.  Running it in the postinst of the new package was
too late in some cases.  Well, it finally occurred to me that if the
.deb file contained the symlink that ld.so needs (*see below) and dpkg
did the right thing, everything just might work.  As long as the
symlink is correct, ld.so will still be able to find the library even
if ldconfig hasn't been run.

I finally got around to checking if dpkg would do the right thing and
it almost does.  In some cases, there would be a very small window
when a library could not be found by ld.so.  Two changes in dpkg need
to be made to totally eliminate this window.

First, when dpkg backups an existing symlink before moving a new one
into place, it renames the old symlink instead of copying it.  The old
symlink must be left as is until the new one can be renamed into
place.

Second, dpkg must rename the new shared library into place before the
new symlink.  If the symlink is done first, it could be left dangling
until the shared library is done.  I'll leave it up to Ian to decide
how the proper ordering can be ensured.

(*) Yes, this contradicts what I've been saying all along about not
including this symlink in the .deb file because ldconfig would create
and delete it as necessary.

David
-- 
David Engel                        Optical Data Systems, Inc.
david@ods.com                      1101 E. Arapaho Road
(214) 234-6400                     Richardson, TX  75081


Reply to: