|
|
53.
|
|
|
touch foo 
fakeroot 
ls -al foo
|
|
|
type: Plain text
|
|
|
represents a line break.
Start a new line in the equivalent position in the translation.
|
|
|
|
|
(no translation yet)
|
|
|
|
Located in
../doc/fakeroot.1:222
|
|
|
54.
|
|
|
or the other way around,
|
|
|
type: Plain text
|
|
|
|
|
(no translation yet)
|
|
|
|
Located in
../doc/fakeroot.1:224
|
|
|
55.
|
|
|
fakeroot 
touch foo 
ls -al foo
|
|
|
type: Plain text
|
|
|
represents a line break.
Start a new line in the equivalent position in the translation.
|
|
|
|
|
(no translation yet)
|
|
|
|
Located in
../doc/fakeroot.1:228
|
|
|
56.
|
|
|
fakeroot has no way of knowing that in the first case, the owner of foo really should be B<joost> while the second case it should have been B<root>. For the Debian packaging, defaulting to giving all "unknown" files uid=gid=0, is always OK. The real way around this is to wrap B<open()> and B<create()>, but that creates other problems, as demonstrated by the libtricks package. This package wrapped many more functions, and tried to do a lot more than B<fakeroot .> It turned out that a minor upgrade of libc (from one where the B<stat>() function didn't use B<open>() to one with a B<stat>() function that did (in some cases) use B<open>() ), would cause unexplainable segfaults (that is, the libc6 B<stat>() called the wrapped B<open>() , which would then call the libc6 B<stat>() , etc). Fixing them wasn't all that easy, but once fixed, it was just a matter of time before another function started to use open(), never mind trying to port it to a different operating system. Thus I decided to keep the number of functions wrapped by fakeroot as small as possible, to limit the likelihood of \(oqcollisions\(cq.
|
|
|
type: Plain text
|
|
|
|
|
(no translation yet)
|
|
|
|
Located in
../doc/fakeroot.1:264
|
|
|
57.
|
|
|
GNU configure (and other such programs)
|
|
|
type: IP
|
|
|
|
|
(no translation yet)
|
|
|
|
Located in
../doc/fakeroot.1:264
|
|
|
58.
|
|
|
fakeroot, in effect, is changing the way the system behaves. Programs that probe the system like GNU configure may get confused by this (or if they don't, they may stress fakeroot so much that fakeroot itself becomes confused). So, it's advisable not to run "configure" from within fakeroot. As configure should be called in the "debian/rules build" target, running "dpkg-buildpackage -rfakeroot" correctly takes care of this.
|
|
|
type: Plain text
|
|
|
|
|
(no translation yet)
|
|
|
|
Located in
../doc/fakeroot.1:272
|
|
|
59.
|
|
|
BUGS
|
|
|
type: SH
|
|
|
|
|
(no translation yet)
|
|
|
|
Located in
../doc/fakeroot.1:272 ../doc/faked.1:68
|
|
|
60.
|
|
|
It doesn't wrap open(). This isn't bad by itself, but if a program does open("file", O_WRONLY, 000), writes to file "file", closes it, and then again tries to open to read the file, then that open fails, as the mode of the file will be 000. The bug is that if root does the same, open() will succeed, as the file permissions aren't checked at all for root. I choose not to wrap open(), as open() is used by many other functions in libc (also those that are already wrapped), thus creating loops (or possible future loops, when the implementation of various libc functions slightly change).
|
|
|
type: Plain text
|
|
|
|
|
(no translation yet)
|
|
|
|
Located in
../doc/fakeroot.1:282
|
|
|
61.
|
|
|
COPYING
|
|
|
type: SH
|
|
|
|
|
(no translation yet)
|
|
|
|
Located in
../doc/fakeroot.1:282 ../doc/faked.1:82
|
|
|
62.
|
|
|
B<fakeroot> is distributed under the GNU General Public License. (GPL 2.0 or greater).
|
|
|
type: Plain text
|
|
|
|
|
(no translation yet)
|
|
|
|
Located in
../doc/fakeroot.1:286 ../doc/faked.1:86
|