[Rpm-maint] rpm --chroot and glibc/nscd
Michael Schroeder
mls at suse.de
Tue May 17 13:36:22 UTC 2011
On Tue, May 17, 2011 at 04:27:08PM +0300, Panu Matilainen wrote:
> Did you try talking to glibc developers about this? Just asking so I
> wont bother them again if they already told you to keep the pieces or
> something to that effect...
Not really. I was never successful when proposing something to
Ulrich Drepper, so I didn't dare this time ;-)
Also, I needed a fix for the old SUSE versions, so it didn't make
much sense to ask for some new functionality.
But I agree that support in glibc would be much better than this
hack. Note that you have to both delete the ncsd connection and
flush the nss setup.
> >The patch also
> >- fixes the cache usage. lastUnameLen/lastGnameLen were never
> > set, so the code *always* did a getpwuid/gid call!
> >- renames lastU/GnameLen to lastU/GnameAlloced in
> > rpmugU/Gname, so that it is consistent with the
> > rpmugU/Gid function.
> >
> >Even if you do not want the safe_lookup() part, having a
> >rpmugChroot() function that calls endpwent()/endgrent() and
> >drops the local caches if a chroot is done seems like a
> >good idea.
>
> Hmm, wouldn't it suffice to just store the rpmChrootDone() state in
> rpmug and flush the caches etc when the chroot_done state has changed
> between calls?
Yes, that was actually how I coded it earlier. I then simplified
it a bit -- how often is the chroot state changed?
> Other than that, will apply at least the other bits, I'll mull over the
> safe_lookup() a bit (perhaps a bit academic but it might break if the
> chrooted version is configured to use something else than files for user
> information, but then it probably doesn't work now either due to glibc
> remembering that stuff).
Yes, that's why it is better to tell glibc to re-read the nss
setup. OTOH it probably doesn't make much sense if glibc does
ldap lookups in the chroot or something like that.
Cheers,
Michael.
--
Michael Schroeder mls at suse.de
SUSE LINUX Products GmbH, GF Jeff Hawn, HRB 16746 AG Nuernberg
main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}
More information about the Rpm-maint
mailing list