diff --git a/README b/README new file mode 100644 index 00000000..cdd911eb --- /dev/null +++ b/README @@ -0,0 +1,181 @@ +YACS - Yet Another CD Script :-) +================================ + +Copyright 1999 Raphaël Hertzog +This set of tools is licensed under the General Public License +version 2 or any later version. You can find it in +/usr/share/common-licenses/GPL on a Debian GNU system. + +Thanks to Steve McIntyre for his +work on slink_cd/debian_cd. Some ideas come from his script. + +What is needed ? +================ +Software : +- the apt-get (>= 0.3.11.1) tool +- perl (>= 5.004) +- bash (or another POSIX shell) +- make +- mkisofs/mkhybrid +- dpkg-multicd package (for dpkg-scanpackages with -m option) +- the perl MD5 module +- dpkg-dev (>= 1.4.1.6) (for dpkg-scansources) +Other : +- lots of free space on your disks +- a Debian mirror (on a partition where you can write, if you can't write + on it then you may try to use a symlink farm but it's not the + recommended way to build Debian CDs) + + ------------------------------- + - GENERATING DEBIAN CD IMAGES - + ------------------------------- + +For people that do not have time, here's the quick explanation : +================================================================ + +Edit the CONF.sh and change the PATHs for the mirror and so on. +$ vim CONF.sh +$ . CONF.sh +$ make potato_status +$ make list COMPLETE=1 SIZELIMIT1=576716800 +$ make official_images +[ or if you want only binary images : + $ make bin-official_images ] + +But you really should consider reading further for more information. + +How to build a CD set - step by step +==================================== + +If not yet done, first decompact the archive and cd to the "yacs" directory. + +The process of building a CD is decomposed as follow : + +- first configure what is needed in CONF.sh and source it + in your shell + $ . CONF.sh + The exported environment variables will be used by all the + tools involved here (Makefiles, perl scripts, shell scripts). + + If you want to build CD images for more than one arch, you will + have to build them one after the other (you may use a shell + script for this). + +- now we'll check if your mirror is ok (with good Packages files) : + $ make mirrorcheck + +- then you will have to launch this for initializing the + temporary directory used for the build : + $ make status + If this has failed then you'll have to launch : + $ make correctstatus + However note that make status should never fail if it is + used for building a CD set for the stable release ... + + NOTE: Actually (11/7/99) potato is in a bad state, I advise you + to use the potato.status file in the data dir as your status file, + to do so you can launch : + $ make potato_status + +- now you can decide what you want on your CDs + $ make list TASK=tasks/debian-2.2 COMPLETE=1 + or + $ make list TASK=tasks/gnome COMPLETE=0 SIZELIMIT=576716800 + or + $ export NONFREE=1; make list TASK=tasks/kde COMPLETE=1 + or for something like an official image for the USA : + $ make COMPLETE=1 NONUS=0 NONFREE=0 SIZELIMIT1=576716800 + .... take a look at the file tasks/* to see the options you can have :) + + You can change the behaviour of this command with the following + variables : + - if NONUS is set, then packages from non-US will be allowed (remember + that the value of NONUS must be the path to the non-US mirror + if you have one) + - if NONFREE is set, then packages from non-free will be allowed + (NONFREE must be exported to all sub-shells) + - if COMPLETE is set, all packages that are not listed in the + selected task file will be included at the end + - if SIZELIMIT is set, it will be used as the maximum size that + we can put into each CD + - if SIZELIMIT (with beeing a integer) is set, it will be used + as the maximum size of the X'th binary CD. SIZELIMIT overrides + SIZELIMIT ... + - if SRCSIZELIMIT is set, it's used as the maximum size for source CD + - if SRCSIZELIMIT (with beeing an integer) is set, it will be + used as the maximum size of the X'th source CD + + This target calls the targets "bin-list" and "src-list" that can be used to + build only binary CDs or only source CDs. + +- it may be time to add the disks-arch stuff and to make the CDs bootable + $ make bootable + This does affect only the binary CDs. + +- now, we'll add the binary packages to the temporary tree : + $ make packages + +- and we'll add the sources to the temporary tree : + $ make sources + +- if you want to install additional files : + make bin-extras CD=1 ROOTSRC=/home/ftp/ DIR=goodies/wordperfect + make src-extras CD=3 ROOTSRC=/home/ftp/ DIR=goodies/kernel-2.3 + + The first will copy /home/ftp/goodies/wordperfect/ on the first binary + CD. It will be in /goodies/wordperfect ... you can call + make extras multiple times if you need more. Please note that + the files to be copied should be on the same partition than + your mirror (unless you use a symlink farm). + + If you want to do customize your CD even more, you can use the hook + system. Read below about them. + +- We can add an md5sum.txt file on each CD to enable users to check their + files : + $ make md5list + This does call the targets 'bin-md5list' and 'src-md5list'. You can + choose to call only bin-md5list if you're building only binary images. + +- now we can create the images + $ make images + If you don't have enough space for all images, you can generate + only one image (of the second binary CD for example) with : + $ make bin-image CD=2 + Of course if you want to build all binary images you'll use : + $ make bin-images + And "make src-images" will generate the sources images. + + +About the hook system +===================== + +A hook script can be executed at different times. You can specify the +script by setting the HOOK variable to the script filename. It will +get 2 arguments, the first is the CD number. The second depends on +where/when the hook script is called. It can be 'before-scanpackages' +or 'before-mkisofs' (their values are explicit ...). When the script +is called, the current directory will be the temporary directory used for +the build (aka $TDIR/$CODENAME-$ARCH). + +There are hooks only for binary CDs at the present time. If HOOK is not +set, it will look for a script $BASEDIR/tools/$CODENAME.hook. + + +About the symlink farm +====================== + +If you don't have write access on the disk where you have the mirror +or if for another reason hardlink cannot be used, you can try to +use a symlink farm. Instead of having real files, your temporary tree +will be filled with symlinks that mkhybrid will change into files when +it will build the image. You'll need to use a special options. You +have 2 lines of options in CONF.sh as examples. + +I've never tested the symlink farm ... it may well generate unusable +images. Don't use it for ISO images that will used by many users. + +Note that you will also need a patched mkhybrid that does support the +-F option. Have a look here about it : +http://www.chiark.greenend.org.uk/~stevem/DebianCD/ +