sym links to absolute pathnames in /compat/linux
John E Hein
jhein at timing.com
Tue May 1 20:11:51 UTC 2007
Eric Anderson wrote at 14:52 -0500 on May 1, 2007:
> On 05/01/07 14:25, John E Hein wrote:
> > Are sym links to absolute pathnames supposed to try to look
> > in /compat/linux first?
> >
> > /compat/linux/usr/bin/foo -> /bin/foo
> >
> > I thought I recalled that Alexander said recently they _were_ supposed
> > to look in /compat/linux first. But I don't seem to have that
> > behavior on the 6-stable box I'm using at the moment.
> >
> > # ln -s /bin/foo /compat/linux/usr/bin/foo
> > # ls -l /compat/linux/usr/bin/foo
> > lrwxr-xr-x 1 root wheel 8 May 1 19:17 /compat/linux/usr/bin/foo -> /bin/foo
> > # cp -p /compat/linux/bin/ls /compat/linux/bin/foo
> > # cp -p /bin/ls /bin/foo
> > # /compat/linux/usr/bin/foo --version
> > foo: illegal option -- -
> > usage: ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwx1] [file ...]
> > # /compat/linux/bin/foo --version
> > ls (coreutils) 5.2.1
> > Written by Richard Stallman and David MacKenzie.
>
> Is all that taking place inside a linux shell?
No - sorry, bad example. But I still see the same behavior running
the linux shell as you suggest (below).
And I actually started investigating this because I was running an
emulated linux app which tried to follow an absolute sym link (and it
was not looking in /compat/linux first for the target of the link).
> If not, then the symlink resolution is happening *before* the linux
> emulator takes over.
Agreed.
> Try this instead:
>
> # /compat/linux/bin/sh
> # /compat/linux/usr/bin/foo --version
> # /compat/linux/bin/foo --version
> # /bin/foo --version
# /compat/linux/bin/sh
sh-3.00# /compat/linux/usr/bin/foo --version
foo: illegal option -- -
usage: ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwx1] [file ...]
sh-3.00# /compat/linux/bin/foo --version
ls (coreutils) 5.2.1
Written by Richard Stallman and David MacKenzie.
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sh-3.00# /bin/foo --version
ls (coreutils) 5.2.1
Written by Richard Stallman and David MacKenzie.
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
And, for good measure...
sh-3.00# /usr/bin/foo --version
foo: illegal option -- -
usage: ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwx1] [file ...]
So it doesn't seem to behave as I was expecting from the linux sh either.
And ls (freebsd & linux) reports...
sh-3.00# ls -alF /compat/linux/usr/bin/foo /usr/bin/foo /bin/foo /compat/linux/bin/foo
-rwxr-xr-x 1 root wheel 89456 Apr 25 18:10 /bin/foo*
-rwxr-xr-x 1 root wheel 89456 Apr 25 18:10 /compat/linux/bin/foo*
lrwxr-xr-x 1 root wheel 8 May 1 20:04 /compat/linux/usr/bin/foo -> /bin/foo*
lrwxr-xr-x 1 root wheel 8 May 1 20:04 /usr/bin/foo -> /bin/foo*
sh-3.00# ls -L -alF /compat/linux/usr/bin/foo /usr/bin/foo /bin/foo /compat/linux/bin/foo
-rwxr-xr-x 1 root wheel 89456 Apr 25 18:10 /bin/foo*
-rwxr-xr-x 1 root wheel 89456 Apr 25 18:10 /compat/linux/bin/foo*
-r-xr-xr-x 1 root wheel 23444 Nov 17 02:23 /compat/linux/usr/bin/foo*
-r-xr-xr-x 1 root wheel 23444 Nov 17 02:23 /usr/bin/foo*
sh-3.00# exit
# ls -alF /compat/linux/usr/bin/foo /usr/bin/foo /bin/foo /compat/linux/bin/foo
ls: /usr/bin/foo: No such file or directory
-r-xr-xr-x 1 root wheel 23444 Nov 17 02:23 /bin/foo*
-rwxr-xr-x 1 root wheel 89456 Apr 25 18:10 /compat/linux/bin/foo*
lrwxr-xr-x 1 root wheel 8 May 1 20:04 /compat/linux/usr/bin/foo@ -> /bin/foo
# ls -L -alF /compat/linux/usr/bin/foo /usr/bin/foo /bin/foo /compat/linux/bin/foo
ls: /usr/bin/foo: No such file or directory
-r-xr-xr-x 1 root wheel 23444 Nov 17 02:23 /bin/foo*
-rwxr-xr-x 1 root wheel 89456 Apr 25 18:10 /compat/linux/bin/foo*
-r-xr-xr-x 1 root wheel 23444 Nov 17 02:23 /compat/linux/usr/bin/foo*
More information about the freebsd-emulation
mailing list