X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=febootstrap.pod;h=e208603bc9fd670857df1b7419fffd1d2986c024;hb=9a05df180a5a250c86d3ef351f6334179b807028;hp=eac957371e879e1249fa5016c59a35d82d79ad96;hpb=1ef78043a28df140e5302a4e00635e3d0792dbeb;p=febootstrap.git diff --git a/febootstrap.pod b/febootstrap.pod index eac9573..e208603 100644 --- a/febootstrap.pod +++ b/febootstrap.pod @@ -11,7 +11,7 @@ febootstrap - Bootstrap a basic Fedora system (like Debian debootstrap) febootstrap fedora-10 /tmp/f10 febootstrap rawhide /tmp/rawhide febootstrap rawhide /tmp/rawhide http://mymirror/rawhide/x86_64/os - febootstrap --groupinstall="Mail Server" rawhide /tmp/rawhide + febootstrap --groupinstall="Mail Server" fedora-10 /tmp/mailserver =head1 DESCRIPTION @@ -21,12 +21,12 @@ I. Optionally I can point to a local mirror (otherwise the public Fedora mirrors are used). I names are C> (eg. C) or C. -febootstrap does not need to be run as root. If for some reason you -do run it as root, then it works slightly differently and may have +febootstrap does I need to be run as root. If for some reason +you do run it as root, then it works slightly differently and may have side effects such as stopping or starting system daemons. -For more advanced needs, take a look at L and -C. +For more advanced needs, take a look at L, C +and I's C. The normal output is a root directory located at I and a fakeroot logfile at C/fakeroot.log>. @@ -35,50 +35,151 @@ a fakeroot logfile at C/fakeroot.log>. =over 4 -=item B<--install="list of packages separated by commas"> +=item B<-i package> -=item B<--groupinstall="list of groups separated by commas"> +=item B<--install=package> -Specify the list of packages or groups to install. These are passed -directly to C or C commands, and thus -any dependencies are also resolved by yum. You can also use shell -globs and filenames here, as with ordinary yum. +=item B<-g "group"> + +=item B<--groupinstall="group"> + +Specify the package or group to install. To list multiple packages or +groups, you must give multiple C<-i> or C<-g> options. Group names +can contain spaces, so use quotes where necessary. + +These are passed directly to C or C +commands, and thus any dependencies are also resolved by yum. You can +also use shell globs and filenames here, as with ordinary yum. If no packages or groups are given, then we install the C group -which is the smallest working Fedora installation. Use C to list the packages currently in the C group. +which is a small working Fedora installation (but by no means +minimal). Use C to list the packages currently in +the C group. + +=item B<--no-clean> + +Normally febootstrap will clean up the yum repository +(C inside the image). This contains the downloaded +RPMs and metadata. However if you give the C<--no-clean> option, then +the yum repository is left. This is useful if you want to run further +yum commands inside the filesystem by hand. + +=item B<-p "proxyurl"> + +=item B<--proxy="proxyurl"> + +URL to the proxy server that yum should use. + +=item B<-u source> + +=item B<--updates=source> + +Pull in updates from an additional updates repository. The possible +sources are: + +=over 4 + +=item -u C (a URL) + +Get updates from the specific URL. + +=item -u C (an updates repository name) + +Get updates from the public mirrors of the named repository +(eg. C). See REPOSITORIES below. + +=item -u C (default) + +Don't add an updates repository. This is the default. + +=back =back -=head1 FAKEROOT LOGFILE +=head1 REPOSITORIES + +You can list available repositories by visiting this URL: + +L + +(If necessary replace C with your architecture, but it seems +unlikely that this list will change based on architecture). + +=head1 RUNNING EXTRA COMMANDS IN THE ROOT FILESYSTEM + +If you want to run further commands inside the root filesystem, for +example additional C installs, then use C. See +the L manual page for more details. + +You have to be careful about modifying files in the root filesystem +directly (without using C). It's easy to confuse +fakeroot and end up with the wrong permissions on files (see FAKEROOT +LOGFILE below). + +C runs the command inside the root filesystem, which +means it won't normally have access to files outside the root. You +can use C environment variable (see +L) or copy files into the root first. + +=head2 FAKEROOT LOGFILE When febootstrap is run as non-root (the normal case) we use fakeroot so that yum thinks it is running as root. Fakeroot keeps track of "real" file permissions in a log file which is saved into the target directory as C/fakeroot.log>. +This logfile is indexed by inode number, which makes certain +operations safe and other operations unsafe. +Files should be replaced only by doing: + + echo updated-content > old-file + +(since that preserves the original inode). + +Deleting files and then creating new ones (even with a different name) +is usually unsafe, because the new files might reuse inodes claimed by +the old files, and so appear with peculiar permissions +(eg. unreadable, or as a symbolic link). + +Deleting files is also usually unsafe, although the reasons are more +subtle. If you just use C then the inode number is not deleted +from C which means it can be reused by another file +later on. + +In most cases it's usually safest to use C. + You can use the fakeroot logfile in a number of ways: =over 4 =item * -Run C> in order to run a -command with the faked file permissions. +Use L to run a command with the faked file +permissions. =item * -Generate an initrd (cpio) file containing the correct permissions -using the tool C. +Use L to install a file with permissions +in the root filesystem. =item * -Apply the permissions to the target directory using the tool -C (requires root). +Generate an initramfs (compressed cpio) file containing the correct +permissions using the tool C. + +=item * + +Apply the permissions to the target directory using the forthcoming +tool C (requires root). =back -=head1 COMPARISON TO debootstrap +=head1 RUNNING FEBOOTSTRAP AS ROOT + +There is some rudimentary support for running C as root. +However it is not well-tested and generally not recommended. + +=head1 COMPARISON TO DEBOOTSTRAP febootstrap cannot do cross-architecture installs (C). The reason is that C<%pre> and C<%post> scripts cannot @@ -93,22 +194,28 @@ C<--foreign> installs - see previous point). =head1 OTHER RESTRICTIONS AND BUGS -Some C<%post> scripts do not run correctly. The most common case is -C. Since this binary is statically linked, fakeroot -and fakechroot's LD_PRELOAD hack does not work, so effectively -ldconfig tries to update the system cache. You will see the following -error: +The following programs are not run during C<%post> scriptlets (because +they are all statically linked, and fakechroot cannot run statically +linked programs). + +=over 4 - /sbin/ldconfig: Can't create temporary cache file /etc/ld.so.cache~: Permission denied +=item C (from many packages) + +=item C (from C) + +=item C (from C) + +=item C (from C) + +=back -This error is mostly harmless. Just run C the first -time you boot into the newly created Fedora system. +If you wish, you can run them the first time you boot into the new +machine. -Another error you will see is with C -which is caused for the same reason - this binary is statically -linked. We have examined what this binary does, and it is not really -necessary for installs. If it makes you happier, you can run it the -first time you boot the new system. +febootstrap recreates the repository anew each time, and this causes +yum to download all the RPMs every time. This is very wasteful, and +we should provide a way to cache the repository. =head1 HOME PAGE @@ -116,8 +223,10 @@ L =head1 SEE ALSO -L, -L, +L, +L, +L, +L, L, L, L, @@ -127,7 +236,9 @@ L. L, L, -L. +L, +L, +C. =head1 AUTHORS