NAME
libtricks - libc-wrapper library that implements a generalised VPATH, and allows a user to fake a different UID (for dpkg-buildpackage etc).
DESCRIPTION
libtricks library that wraps libc functions like open(), readdir(), stat(), getuid(), etc. The libtricks versions of these functions check the existance of environment variables like VPATH, FAKEROOTUID, etc. Depending on the values of these variables, the open() function can be instructed to find files in different directories, and getuid() will return different values than the real UID.
For people who want to just fake root (useful for creating debian packages), the fakeroot (1) script is provided that also starts faked , the daemon that is records actions like `chmod sys somefile' (these actions are not allowed for non-root users, so faked remembers them, and the stat() function in libtricks communicate with faked).
For more information about VPATH, please see /usr/doc/libtricks/README.
ENVIRONENT
- VPATH
-
The `view-path'. With this variable, you can cause files to be searched (also) in additional directories, messages to be issued upon opening of certain files in certain modes, and loads more. See /usr/doc/libtricks/README for more details. To debug, use detrick, like in:
$ VPATH='needexec&chop("/bin/")=:/usr/lib/libtricks/bin/:/bin' detrick
- VPATHLIBDELIM
-
The string that delimits the various directories within a vpath. If
unset, ":" is used.
- VPATHLIBEXTDELIM
-
The string that is used to seperate two vpath's in the VPATH variable. If
unset, "::" is used.
- VPATHSYMLINK
-
If set, all files affected by
the VPATH will appear to be symlinks to the files they replace. For example:$ fakeroot# VPATHSYMLINK=yes# VPATH="chop(\"/usr/bin\")=:/bin"# ls -ild /usr/bin /bin42337 drwxr-xr-x 2 root root 2048 Sep 13 17:31 /bin42337 lrwxr-xr-x 2 root root 2048 Sep 13 17:31 /usr/bin -> /bin
-
Note that the inodes of both direcotories are the same, as libtricksdidn't really create the symlink, and thus doesn't know what inodenumber will be free to use.
- VPATHLIBEXTSEPERATOR
-
The string used to seperate the functions in a vpath element
(functions like chop, iswrite, stdout, etd.) from the directory. Ifunset, "=" is used.
- FAKEROOTUID
- FAKEROOTGID
- FAKEROOTEUID
- FAKEROOTEGID
-
If set, fakeroot will set the uid, gid, euid and egid to the numeric
values of these environment variables (note that the variables cannotcontain names, only numbers).
- FAKEROOTDONTTRYCHOWN
-
If set (to whatever value, may be set to ""), the wrapper function provided by
chown will not try to do the chown on disk any more. This may be useful ifyou have nfs volumes mounted from an irix server.
- FAKEROOTKEY
-
The key used to communicate with the faked daemon. Any program
started with the rightLD_PRELOADand aFAKEROOTKEYof a running daemon will automatically connect to that daemon, andhave the same "fake" view of the filesystem's permissions/ownerships.(assuming the daemon and connecting program were started by the sameuser). Note that faked outputs a string of the form"$FAKEROOTKEY:$PID" when it is started. The shell script fakeroottakes the output of faked, and sets FAKEROOTKEY correctly).
BUGS
- symlinks
-
symlinks aren't `vpath-ed'. that is, if VPATH="chop(\"/bin\")=:/tmp/bin",
then opening a symlink ~/home/ls -> /bin/ls will open /bin/lsdirectly, and not first try to open /tmp/bin/ls.
- dpkg-shlibdeps
-
dpkg-shlibdeps ran inside fakeroot gets a sig 11 (avoided with neat
VPATH trick in fakeroot, but nevertheless, there's a bug in libtricksthere somewhere).
- readlink
-
readlink on a ordinary file/dir without VPATHSYMLINK set will still
not return an error, if the file is affected by the VPATH. Should,according to readlink(2), return EINVAL.
- chroot
-
in trick-chroot, the output of `pwd' initially isn't correct. After the
first cd this is corrected, but anyway. Should use vpath_findpath() ingetcwd().
COPYING
libtricks is distributed under the GNU General Public License. (GPL 2.0 or greater).
AUTHOR
joost witteveen <[email protected]>
MANUAL PAGE
mostly by joost witteveen, some pieces probably still from J.H.M. Dassen <[email protected]> , who wrote the original version of this manual page
SEE ALSO
detrick(1), trick-chktmp(1), trick-chroot(1), trick-openlog(1), dpkg-buildpackage(1), build(1L) fakeroot(1) /usr/doc/libtricks/README /usr/doc/libtricks/DEBUG