Before diving too far down this rathole... aren't the package scripts 
run in the context of the zone?

James Carlson wrote:
> Ralf Weber writes:
>> or your zone path when the package gets created inside a zone. So I
>> would rewrite your scripts as:
> [...]
>>      ${BASEDIR}/usr/sbin/chroot ${BASEDIR} /usr/sbin/groupadd -g 27 mysql
>>      ${BASEDIR}/usr/sbin/chroot ${BASEDIR} /usr/sbin/useradd -u 27 -d /var/ 
>> lib/mysql -s /bin/false -G mysql mysql
> 
> I wouldn't.  There's no guarantee at all that $BASEDIR refers to an
> instance of the OS that can run at all with the current running
> kernel.
> 
> In more detail: when you use chroot, the system reads *everything*
> from the given base directory, including the system libraries.  That
> means you'll load up $BASEDIR/usr/sbin/groupadd and try to link in
> $BASEDIR/lib/libc.so.1 (among many other things).  That library makes
> undocumented system calls that in turn depend on the exact rev of the
> kernel.
> 
> What happens when you do that is arbitrary.  It may work, as the
> system call interface usually changes slowly, but it may not.  It all
> depends on the calls made by the application and the nature of the
> user/kernel flag days that have passed between these two images.
> 
> (Note that Sun's ABI guarantee applies at the ABI level -- meaning the
> documented system library interfaces -- and not at the system call
> level.)
> 
> What you're suggesting isn't supported and can't be supported.
> Instead of that, I'd suggest using nawk for now, and adding a call
> record to CR 6387333.  useradd/groupadd should know how to deal with
> alternate roots.
> 


Reply via email to