=head1 NAME febootstrap - Bootstrap a basic Fedora system (like Debian debootstrap) =head1 SYNOPSIS febootstrap [--options] REPO TARGET [MIRROR] =head1 EXAMPLES febootstrap fedora-10 /tmp/f10 febootstrap rawhide /tmp/rawhide febootstrap rawhide /tmp/rawhide http://mymirror/rawhide/x86_64/os febootstrap --groupinstall="Mail Server" fedora-10 /tmp/mailserver =head1 DESCRIPTION febootstrap creates a Fedora root filesystem, based on the Fedora version specified by I under the directory specified by 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 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, C and I's C. The normal output is a root directory located at I and a fakeroot logfile at C/fakeroot.log>. =head1 OPTIONS =over 4 =item B<-i package> =item B<--install=package> =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 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. =back =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 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>. You can use the fakeroot logfile in a number of ways: =over 4 =item * Run fakeroot -i fakeroot.log command in order to run a command with the faked file permissions. If the command will make updates, then do: fakeroot -i fakeroot.log -s fakeroot.log command =item * 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 febootstrap cannot do cross-architecture installs (C). The reason is that C<%pre> and C<%post> scripts cannot run. It may be possible to defer running of scriptlets (which is basically how debootstrap works), and patches to do this are welcomed. febootstrap cannot do 32-on-64 bit installs. The reason is that fakeroot and fakechroot do not load the correct preload library. This is really a bug in fakeroot/fakechroot, which we think would be easy to fix. (debootstrap deals with this case the same as for 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: /sbin/ldconfig: Can't create temporary cache file /etc/ld.so.cache~: Permission denied This error is mostly harmless. Just run C the first time you boot into the newly created Fedora system. 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 L =head1 SEE ALSO L, L, L, L, L, L. =head1 ALTERNATIVES L, L, L, L, C. =head1 AUTHORS Richard W.M. Jones =head1 COPYRIGHT (C) Copyright 2009 Red Hat Inc., L. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.