5465 lines
124 KiB
HTML
5465 lines
124 KiB
HTML
|
<HTML
|
|||
|
><HEAD
|
|||
|
><TITLE
|
|||
|
> Burning a RedHat CD HOWTO
|
|||
|
</TITLE
|
|||
|
><META
|
|||
|
NAME="GENERATOR"
|
|||
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
|
|||
|
><BODY
|
|||
|
CLASS="ARTICLE"
|
|||
|
BGCOLOR="#FFFFFF"
|
|||
|
TEXT="#000000"
|
|||
|
LINK="#0000FF"
|
|||
|
VLINK="#840084"
|
|||
|
ALINK="#0000FF"
|
|||
|
><DIV
|
|||
|
CLASS="ARTICLE"
|
|||
|
><DIV
|
|||
|
CLASS="TITLEPAGE"
|
|||
|
><H1
|
|||
|
CLASS="TITLE"
|
|||
|
><A
|
|||
|
NAME="AEN2"
|
|||
|
></A
|
|||
|
>Burning a RedHat CD HOWTO</H1
|
|||
|
><DIV
|
|||
|
CLASS="AUTHORGROUP"
|
|||
|
><A
|
|||
|
NAME="AEN4"
|
|||
|
></A
|
|||
|
><H3
|
|||
|
CLASS="AUTHOR"
|
|||
|
><A
|
|||
|
NAME="AEN5"
|
|||
|
>Luigi Bitonti</A
|
|||
|
></H3
|
|||
|
><DIV
|
|||
|
CLASS="AFFILIATION"
|
|||
|
><DIV
|
|||
|
CLASS="ADDRESS"
|
|||
|
><P
|
|||
|
CLASS="ADDRESS"
|
|||
|
> <TT
|
|||
|
CLASS="EMAIL"
|
|||
|
><<A
|
|||
|
HREF="mailto:uknadors (at) yahoo (dot) com"
|
|||
|
>uknadors (at) yahoo (dot) com</A
|
|||
|
>></TT
|
|||
|
><br>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><H3
|
|||
|
CLASS="AUTHOR"
|
|||
|
><A
|
|||
|
NAME="AEN13"
|
|||
|
>Morten Kjeldgaard</A
|
|||
|
></H3
|
|||
|
><DIV
|
|||
|
CLASS="AFFILIATION"
|
|||
|
><DIV
|
|||
|
CLASS="ADDRESS"
|
|||
|
><P
|
|||
|
CLASS="ADDRESS"
|
|||
|
> <TT
|
|||
|
CLASS="EMAIL"
|
|||
|
><<A
|
|||
|
HREF="mailto:"
|
|||
|
></A
|
|||
|
>></TT
|
|||
|
><br>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><H3
|
|||
|
CLASS="AUTHOR"
|
|||
|
><A
|
|||
|
NAME="AEN21"
|
|||
|
>Peter von der Ah<41></A
|
|||
|
></H3
|
|||
|
><DIV
|
|||
|
CLASS="AFFILIATION"
|
|||
|
><DIV
|
|||
|
CLASS="ADDRESS"
|
|||
|
><P
|
|||
|
CLASS="ADDRESS"
|
|||
|
> <TT
|
|||
|
CLASS="EMAIL"
|
|||
|
><<A
|
|||
|
HREF="mailto:"
|
|||
|
></A
|
|||
|
>></TT
|
|||
|
><br>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><P
|
|||
|
CLASS="OTHERCREDIT"
|
|||
|
><B
|
|||
|
>Guillaume Lelarge - </B
|
|||
|
><SPAN
|
|||
|
CLASS="CONTRIB"
|
|||
|
>Review and French translation.
|
|||
|
</SPAN
|
|||
|
></P
|
|||
|
></DIV
|
|||
|
><P
|
|||
|
CLASS="COPYRIGHT"
|
|||
|
>Copyright © 2002, 2003 Luigi Bitonti</P
|
|||
|
><P
|
|||
|
CLASS="COPYRIGHT"
|
|||
|
>Copyright © 2000 Morten Kjeldgaard, and Peter von der Ah<41></P
|
|||
|
><DIV
|
|||
|
CLASS="REVHISTORY"
|
|||
|
><TABLE
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
><TR
|
|||
|
><TH
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
COLSPAN="3"
|
|||
|
><B
|
|||
|
>Revision History</B
|
|||
|
></TH
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>Revision v2.1</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>2003-10-17</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>Revised by: lb</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
COLSPAN="3"
|
|||
|
>Added RedHat 9. Fixed some minor bugs. Thanks to all the people who have sent
|
|||
|
in comments and patches.</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>Revision v2.03</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>2003-03-10</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>Revised by: lb</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
COLSPAN="3"
|
|||
|
>Added some comments and fixes to the howto. The anaconda updates are now
|
|||
|
included correctly even for versions >= 7.x.</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>Revision v2.02</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>2003-03-06</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>Revised by: lb</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
COLSPAN="3"
|
|||
|
>The signature checking now works for packages targeted to versions
|
|||
|
of RedHat different from the one used to run the scripts. Corrected
|
|||
|
a bug in the version comparison section of the scripts.</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>Revision v2.01</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>2002-12-04</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>Revised by: lb</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
COLSPAN="3"
|
|||
|
>Second release of the new version of the howto.
|
|||
|
All the scripts were reviewed and cleaned.
|
|||
|
The updateDist.sh script now checks that all the
|
|||
|
updates were downloaded before checking the signatures.</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>Revision v2.00</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>2002-10-28</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
>Revised by: lb</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
COLSPAN="3"
|
|||
|
>First release of the new version (2.00) of the HOWTO</TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
><DIV
|
|||
|
CLASS="ABSTRACT"
|
|||
|
><A
|
|||
|
NAME="AEN66"
|
|||
|
></A
|
|||
|
><P
|
|||
|
></P
|
|||
|
><P
|
|||
|
> This document describes how to make your own CDs from different releases of
|
|||
|
the Red Hat Linux distribution (up to and including release 9), equivalent
|
|||
|
to the ones commercially available from Red Hat.
|
|||
|
The structure of the distribution is described, as well as the procedure
|
|||
|
needed to include updated RPMS into the distribution. Some hints and
|
|||
|
examples on how to customize the default installation are also presented.
|
|||
|
Scripts to automate as much as possible the (re)generation of the CD images
|
|||
|
are included. Prerequisites are a good network connection, and a CD-writer
|
|||
|
(a working knowledge of shell scripting could be really useful, though).
|
|||
|
</P
|
|||
|
><P
|
|||
|
></P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><HR></DIV
|
|||
|
><DIV
|
|||
|
CLASS="TOC"
|
|||
|
><DL
|
|||
|
><DT
|
|||
|
><B
|
|||
|
>Table of Contents</B
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>1. <A
|
|||
|
HREF="#INTRODUCTION"
|
|||
|
>Introduction</A
|
|||
|
></DT
|
|||
|
><DD
|
|||
|
><DL
|
|||
|
><DT
|
|||
|
>1.1. <A
|
|||
|
HREF="#DISCLAIMER"
|
|||
|
>Disclaimer and License</A
|
|||
|
></DT
|
|||
|
></DL
|
|||
|
></DD
|
|||
|
><DT
|
|||
|
>2. <A
|
|||
|
HREF="#REDHAT-FTP-SITE"
|
|||
|
>Anatomy of the Red Hat FTP site</A
|
|||
|
></DT
|
|||
|
><DD
|
|||
|
><DL
|
|||
|
><DT
|
|||
|
>2.1. <A
|
|||
|
HREF="#REDHAT-MAIN-TREE"
|
|||
|
>Redhat 9 directories organization</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>2.2. <A
|
|||
|
HREF="#REDHAT-DIR"
|
|||
|
>The "RedHat" directory -- the core of the distribution</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>2.3. <A
|
|||
|
HREF="#UPDATES-DIR"
|
|||
|
>The "updates" directory</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>2.4. <A
|
|||
|
HREF="#AEN154"
|
|||
|
>Differences for the 8.0 tree</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>2.5. <A
|
|||
|
HREF="#AEN163"
|
|||
|
>Differences for the 7.x tree</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>2.6. <A
|
|||
|
HREF="#AEN174"
|
|||
|
>Differences for the 6.x tree</A
|
|||
|
></DT
|
|||
|
></DL
|
|||
|
></DD
|
|||
|
><DT
|
|||
|
>3. <A
|
|||
|
HREF="#RPM-PACKAGES"
|
|||
|
>RPM packages</A
|
|||
|
></DT
|
|||
|
><DD
|
|||
|
><DL
|
|||
|
><DT
|
|||
|
>3.1. <A
|
|||
|
HREF="#RPM-VERSION-COMPARE"
|
|||
|
>Comparing two versions of a RPM package</A
|
|||
|
></DT
|
|||
|
></DL
|
|||
|
></DD
|
|||
|
><DT
|
|||
|
>4. <A
|
|||
|
HREF="#DISTRIBUTION-MIRROR"
|
|||
|
>Obtaining your local copy of the distribution</A
|
|||
|
></DT
|
|||
|
><DD
|
|||
|
><DL
|
|||
|
><DT
|
|||
|
>4.1. <A
|
|||
|
HREF="#USING-WGET-BASH"
|
|||
|
>Using wget and bash</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>4.2. <A
|
|||
|
HREF="#USING-MIRROR"
|
|||
|
>Using mirror</A
|
|||
|
></DT
|
|||
|
></DL
|
|||
|
></DD
|
|||
|
><DT
|
|||
|
>5. <A
|
|||
|
HREF="#INCLUDE-UPDATES"
|
|||
|
>Including the updates</A
|
|||
|
></DT
|
|||
|
><DD
|
|||
|
><DL
|
|||
|
><DT
|
|||
|
>5.1. <A
|
|||
|
HREF="#UPDATE-PERMISSIONS"
|
|||
|
>Correcting the file protection modes</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>5.2. <A
|
|||
|
HREF="#REPLACING-PACKAGES"
|
|||
|
>Replacing the updated RPMS</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>5.3. <A
|
|||
|
HREF="#INSTALLER-REBUILD"
|
|||
|
>Rebuilding the installer</A
|
|||
|
></DT
|
|||
|
></DL
|
|||
|
></DD
|
|||
|
><DT
|
|||
|
>6. <A
|
|||
|
HREF="#BURN-CD"
|
|||
|
>Burning the CD(s)</A
|
|||
|
></DT
|
|||
|
><DD
|
|||
|
><DL
|
|||
|
><DT
|
|||
|
>6.1. <A
|
|||
|
HREF="#AEN658"
|
|||
|
>Test the image(s)</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>6.2. <A
|
|||
|
HREF="#AEN667"
|
|||
|
>Burn the disk(s)</A
|
|||
|
></DT
|
|||
|
></DL
|
|||
|
></DD
|
|||
|
><DT
|
|||
|
>7. <A
|
|||
|
HREF="#COMPS-FILE"
|
|||
|
>The comps file</A
|
|||
|
></DT
|
|||
|
><DD
|
|||
|
><DL
|
|||
|
><DT
|
|||
|
>7.1. <A
|
|||
|
HREF="#AEN697"
|
|||
|
>Format of <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file in RedHat versions < 6.1</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>7.2. <A
|
|||
|
HREF="#AEN718"
|
|||
|
>Format of comps file in RedHat version 6.1</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>7.3. <A
|
|||
|
HREF="#AEN746"
|
|||
|
>Format of comps file in RedHat version 6.2</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>7.4. <A
|
|||
|
HREF="#AEN763"
|
|||
|
>Format of comps file in RedHat version 7.3</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>7.5. <A
|
|||
|
HREF="#AEN798"
|
|||
|
>Format of comps file in RedHat version 8.0 and 9</A
|
|||
|
></DT
|
|||
|
></DL
|
|||
|
></DD
|
|||
|
><DT
|
|||
|
>8. <A
|
|||
|
HREF="#INSTALLATION"
|
|||
|
>Installing from the CD</A
|
|||
|
></DT
|
|||
|
><DD
|
|||
|
><DL
|
|||
|
><DT
|
|||
|
>8.1. <A
|
|||
|
HREF="#AEN894"
|
|||
|
>Booting from a bootable CD</A
|
|||
|
></DT
|
|||
|
></DL
|
|||
|
></DD
|
|||
|
><DT
|
|||
|
>9. <A
|
|||
|
HREF="#OTHER-DISTRIBUTIONS"
|
|||
|
>Other Linux distributions</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>10. <A
|
|||
|
HREF="#THIS-DOCUMENT"
|
|||
|
>This document...</A
|
|||
|
></DT
|
|||
|
><DD
|
|||
|
><DL
|
|||
|
><DT
|
|||
|
>10.1. <A
|
|||
|
HREF="#RELATED-DOC"
|
|||
|
>Related documentation</A
|
|||
|
></DT
|
|||
|
><DT
|
|||
|
>10.2. <A
|
|||
|
HREF="#AEN940"
|
|||
|
>Acknowledgements</A
|
|||
|
></DT
|
|||
|
></DL
|
|||
|
></DD
|
|||
|
></DL
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="INTRODUCTION"
|
|||
|
></A
|
|||
|
>1. Introduction</H1
|
|||
|
><P
|
|||
|
> There may be several reasons for making your own CDs. Perhaps you're a
|
|||
|
cheapskate and want to save the cost of the
|
|||
|
<A
|
|||
|
HREF="http://www.redhat.com/"
|
|||
|
TARGET="_top"
|
|||
|
>Red Hat distribution</A
|
|||
|
>. Or, perhaps
|
|||
|
you want to include in your CDs the latest distribution with all the current
|
|||
|
updates. This is highly relevant, because after each major release of the
|
|||
|
Red Hat distribution, there have been loads of updates, several of which
|
|||
|
are security related. Just take a look at the
|
|||
|
<A
|
|||
|
HREF="http://www.redhat.com/corp/support/errata"
|
|||
|
TARGET="_top"
|
|||
|
>errata page</A
|
|||
|
>.
|
|||
|
Or maybe you want to customize the default installation adding a few
|
|||
|
packages not present in the default tree and unselecting the installation
|
|||
|
of some packages which are otherwise included in the default setup.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> This is what you will be taught in the next sections (hopefully). I will use the
|
|||
|
i386 architecture and releases 7.3, 8.0 and 9 of the distribution in the examples. The
|
|||
|
notes related to the previous releases (<=6.1) were contained in a previous version of
|
|||
|
this document and were compiled by the original authors. The notes related to release
|
|||
|
6.2 are based on tests I've not completed (and I don't know if I ever will) and some
|
|||
|
documents you can find linked in the <A
|
|||
|
HREF="#RELATED-DOC"
|
|||
|
>Related documentation</A
|
|||
|
> section.
|
|||
|
The procedure given in the following sections for RedHat 7.3 and 8.0 is likely to work
|
|||
|
on all platforms supported by Red Hat (Alpha, ppc, etc.), for all the 7.x (and maybe 8.x/9
|
|||
|
in a not too far future) releases, but I have only tested it on the i386 platform with
|
|||
|
Redhat Linux 7.3, 8.0 and 9 (I would be interested in additional information).
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="NOTE"
|
|||
|
><P
|
|||
|
></P
|
|||
|
><TABLE
|
|||
|
CLASS="NOTE"
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="25"
|
|||
|
ALIGN="CENTER"
|
|||
|
VALIGN="TOP"
|
|||
|
><IMG
|
|||
|
SRC="../images/note.gif"
|
|||
|
HSPACE="5"
|
|||
|
ALT="Note"></TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
> The operations described have legal implications, meaning you cannot
|
|||
|
redistribute the CDs as RedHat Linux if you modify them in ways not compliant to
|
|||
|
Redhat trademark policy. To make them legally redistributable, you should always
|
|||
|
comply with the guidelines stated on the
|
|||
|
<A
|
|||
|
HREF="http://www.redhat.com/about/corporate/trademark/"
|
|||
|
TARGET="_top"
|
|||
|
>RedHat website
|
|||
|
</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="NOTE"
|
|||
|
><P
|
|||
|
></P
|
|||
|
><TABLE
|
|||
|
CLASS="NOTE"
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="25"
|
|||
|
ALIGN="CENTER"
|
|||
|
VALIGN="TOP"
|
|||
|
><IMG
|
|||
|
SRC="../images/note.gif"
|
|||
|
HSPACE="5"
|
|||
|
ALT="Note"></TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
> Always remember to set the variables in the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>rhcd.conf</TT
|
|||
|
> file
|
|||
|
and <EM
|
|||
|
>export</EM
|
|||
|
> the <EM
|
|||
|
>RHCDPATH</EM
|
|||
|
> environment
|
|||
|
variable before running the scripts you will find throughout the rest of this
|
|||
|
document and related to releases >=6.2 of RedHat Linux. An example
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/rhcd.conf"
|
|||
|
TARGET="_top"
|
|||
|
>rhcd.conf</A
|
|||
|
> file, which should
|
|||
|
be well commented, is provided with the scripts.
|
|||
|
</P
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="DISCLAIMER"
|
|||
|
></A
|
|||
|
>1.1. Disclaimer and License</H2
|
|||
|
><P
|
|||
|
> This document 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.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Neither the author nor the distributors, or any other contributor of this
|
|||
|
document are in any way responsible for physical, financial, moral or any
|
|||
|
other type of damage incurred by following the suggestions in this text.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><HR><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="REDHAT-FTP-SITE"
|
|||
|
></A
|
|||
|
>2. Anatomy of the Red Hat FTP site</H1
|
|||
|
><P
|
|||
|
> In the spirit of the Linux community, Red Hat Software has made available
|
|||
|
their Linux distributions for several platforms on their FTP site. These
|
|||
|
are all available from the top distribution directory
|
|||
|
(<A
|
|||
|
HREF="ftp://ftp.redhat.com/pub/redhat/linux/"
|
|||
|
TARGET="_top"
|
|||
|
>pub/redhat/linux/</A
|
|||
|
>).
|
|||
|
Let's have a look at the distribution tree.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="REDHAT-MAIN-TREE"
|
|||
|
></A
|
|||
|
>2.1. Redhat 9 directories organization</H2
|
|||
|
><P
|
|||
|
> The latest distribution is, as of this writing, available only for the
|
|||
|
i386 platform. The toplevel directory appears a bit shallow, given the
|
|||
|
presence of a single architecture. (<A
|
|||
|
HREF="ftp://ftp.redhat.com/pub/redhat/linux/9/en/os/"
|
|||
|
TARGET="_top"
|
|||
|
>pub/redhat/linux/9/en/os/
|
|||
|
</A
|
|||
|
>).
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
i386/
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Otherwise, the toplevel directory, for releases slightly older than 9, contains
|
|||
|
distributions for the different platforms. For example, the corresponding
|
|||
|
directory for release 7.1 of Redhat Linux, is structured this way:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
alpha/ i386/ ia64/ ppc/ s390x/
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The root of the i386 directory in a Redhat 9 distribution looks like this:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
-rwxr-xr-x 2 root root 248 Mar 14 2003 autorun
|
|||
|
drwxr-xr-x 7 root root 4096 Mar 14 2003 dosutils
|
|||
|
-rw-r--r-- 3 root root 6192 Mar 14 2003 EULA
|
|||
|
-rw-r--r-- 3 root root 18385 Mar 14 2003 GPL
|
|||
|
drwxr-xr-x 3 root root 2048 Mar 14 2003 images
|
|||
|
drwxr-xr-x 2 root root 2048 Mar 14 2003 isolinux
|
|||
|
-rw-r--r-- 3 root root 6127 Mar 14 2003 README
|
|||
|
-rw-r--r-- 2 root root 13052 Mar 14 2003 README-Accessibility
|
|||
|
-rw-r--r-- 2 root root 6686 Mar 14 2003 README.de
|
|||
|
-rw-r--r-- 2 root root 6990 Mar 14 2003 README.es
|
|||
|
-rw-r--r-- 2 root root 6492 Mar 14 2003 README.fr
|
|||
|
-rw-r--r-- 2 root root 6805 Mar 14 2003 README.it
|
|||
|
-rw-r--r-- 2 root root 7995 Mar 14 2003 README.ja
|
|||
|
-rw-r--r-- 2 root root 7312 Mar 14 2003 README.ko
|
|||
|
-rw-r--r-- 2 root root 5070 Mar 14 2003 README.pt
|
|||
|
-rw-r--r-- 2 root root 6613 Mar 14 2003 README.pt_BR
|
|||
|
-rw-r--r-- 2 root root 5879 Mar 14 2003 README.zh_CN
|
|||
|
-rw-r--r-- 2 root root 5892 Mar 14 2003 README.zh_TW
|
|||
|
drwxr-xr-x 4 root root 2048 Mar 14 2003 RedHat
|
|||
|
-rw-r--r-- 2 root root 25824 Mar 14 2003 RELEASE-NOTES
|
|||
|
-rw-r--r-- 2 root root 29902 Mar 14 2003 RELEASE-NOTES-de.html
|
|||
|
-rw-r--r-- 2 root root 30409 Mar 14 2003 RELEASE-NOTES-es.html
|
|||
|
-rw-r--r-- 2 root root 32354 Mar 14 2003 RELEASE-NOTES-fr.html
|
|||
|
-rw-r--r-- 2 root root 30064 Mar 14 2003 RELEASE-NOTES.html
|
|||
|
-rw-r--r-- 2 root root 29925 Mar 14 2003 RELEASE-NOTES-it.html
|
|||
|
-rw-r--r-- 2 root root 34666 Mar 14 2003 RELEASE-NOTES-ja.html
|
|||
|
-rw-r--r-- 2 root root 33520 Mar 14 2003 RELEASE-NOTES-ko.html
|
|||
|
-rw-r--r-- 2 root root 29496 Mar 14 2003 RELEASE-NOTES-pt_BR.html
|
|||
|
-rw-r--r-- 2 root root 22747 Mar 14 2003 RELEASE-NOTES-pt.html
|
|||
|
-rw-r--r-- 2 root root 25217 Mar 14 2003 RELEASE-NOTES-zh_CN.html
|
|||
|
-rw-r--r-- 2 root root 26645 Mar 14 2003 RELEASE-NOTES-zh_TW.html
|
|||
|
-rw-r--r-- 3 root root 1910 Mar 14 2003 RPM-GPG-KEY
|
|||
|
-r--r--r-- 1 root root 1823 Mar 14 2003 TRANS.TBL
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>SRPMS</TT
|
|||
|
> directory contains the RPMS
|
|||
|
packages in source form.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>images</TT
|
|||
|
> directory contains boot
|
|||
|
and drivers floppy images that can be copied to a diskette if needed. In the
|
|||
|
9 release, there is only one boot disk image available. This boot image is named
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>bootdisk.img</TT
|
|||
|
>. A secondary driver disk is required beside
|
|||
|
this one if the installation is not performed directly from a CD-ROM or HD. A
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>boot.iso</TT
|
|||
|
> file has now been added to boot a machine from
|
|||
|
the cdrom drive and start (network) installations more easily (i.e. without messing up
|
|||
|
with too many floppies). See section <A
|
|||
|
HREF="#INSTALLATION"
|
|||
|
>Installation</A
|
|||
|
> and references
|
|||
|
therein for details and consult the README file in the directory for a more detailed
|
|||
|
explanation of the various files.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>isolinux</TT
|
|||
|
> directory contains
|
|||
|
the files needed to boot from the CD (and to rebuild bootable CDs which work the
|
|||
|
same way). This process was moved from floppy emulation to no emulation. This
|
|||
|
helps avoiding space constraints and compatibility problems.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>dosutils</TT
|
|||
|
> directory contains various
|
|||
|
programs for some other operating systems which are sometimes useful to support the
|
|||
|
installation process. An explanatory README file is included also in this case.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The listing is completed by a lot of files and the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RedHat</TT
|
|||
|
> directory. The latter is the
|
|||
|
subject of the next sections while the formers have contents which will appear
|
|||
|
straightforward by simply reading their names (perhaps apart from the EULA,
|
|||
|
or End User License Agreement).
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="REDHAT-DIR"
|
|||
|
></A
|
|||
|
>2.2. The "RedHat" directory -- the core of the distribution</H2
|
|||
|
><P
|
|||
|
>
|
|||
|
The most important part of the directory tree is rooted in the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RedHat</TT
|
|||
|
> directory:
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
drwxr-xr-x 2 root root 53248 Jun 14 03:15 RPMS
|
|||
|
drwxr-xr-x 2 root root 4096 Jun 14 04:15 base
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RPMS</TT
|
|||
|
> directory contains the major
|
|||
|
part of the Red Hat distribution consisting of a set of RPM (Redhat Package
|
|||
|
Manager) files. An RPM package typically contains binary executables, along
|
|||
|
with relevant configuration files and documentation. See the section
|
|||
|
<A
|
|||
|
HREF="#RPM-PACKAGES"
|
|||
|
>RPM packages</A
|
|||
|
> for more information.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>base</TT
|
|||
|
> directory holds different
|
|||
|
files needed during the installation process, like the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps.xml</TT
|
|||
|
> file, which defines the <EM
|
|||
|
>components</EM
|
|||
|
>
|
|||
|
(groups of packages) used during the "Choose packages to install" phase.
|
|||
|
See section <A
|
|||
|
HREF="#COMPS-FILE"
|
|||
|
>The comps file</A
|
|||
|
> for more information on this file, and how
|
|||
|
to use it.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Two other important files in the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>base</TT
|
|||
|
>
|
|||
|
directory are <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist</TT
|
|||
|
> and <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist2</TT
|
|||
|
>
|
|||
|
containing most of the header fields from all the RPMs in the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RPMS</TT
|
|||
|
> directory. This means that all
|
|||
|
the interdependencies among RPM packages can be determined just by reading
|
|||
|
these files without having to read all the RPM packages which is quite
|
|||
|
convenient especially during FTP installs. Another use of these files is
|
|||
|
mapping package names to file names (eg. <EM
|
|||
|
>perl</EM
|
|||
|
> to
|
|||
|
<EM
|
|||
|
>perl-5.004-6.i386.rpm</EM
|
|||
|
>). This means that if you want
|
|||
|
to incorporate updates from RedHat (see section <A
|
|||
|
HREF="#INCLUDE-UPDATES"
|
|||
|
>Including the updates</A
|
|||
|
>)
|
|||
|
or add your own packages to the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RPMS</TT
|
|||
|
>
|
|||
|
directory, you need to update <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist</TT
|
|||
|
> and
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist2</TT
|
|||
|
>. This is described later in
|
|||
|
<A
|
|||
|
HREF="#INSTALLER-REBUILD"
|
|||
|
>Rebuilding the installer</A
|
|||
|
>. Besides these files, the images from which
|
|||
|
the installation environment (i.e. kernel, python interpreter, anaconda, etc.)
|
|||
|
is loaded are found.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="UPDATES-DIR"
|
|||
|
></A
|
|||
|
>2.3. The "updates" directory</H2
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>/pub/redhat/linux/updates</TT
|
|||
|
> directory has updates for all
|
|||
|
releases of RedHat's distribution since version 3.0.3. This is the place
|
|||
|
to find software packages that have been updated for some reason or other.
|
|||
|
You should especially be aware of security updates. These are publicised on
|
|||
|
RedHat's errata page whenever a fix is available. The most important files
|
|||
|
found in the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>updates</TT
|
|||
|
> directory are:
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
drwxrwsr-x 3 root root 4096 Jul 13 10:13 5.2
|
|||
|
drwxrwsr-x 3 root root 4096 Jul 13 10:13 6.0
|
|||
|
drwxrwsr-x 3 root root 4096 Jul 13 10:13 6.1
|
|||
|
drwxrwsr-x 4 root root 4096 Jul 13 10:14 6.2
|
|||
|
drwxrwsr-x 4 root root 4096 Jul 13 10:14 7.0
|
|||
|
drwxrwsr-x 4 root root 4096 Jul 13 10:14 7.1
|
|||
|
drwxrwsr-x 4 root root 4096 Jul 13 10:13 7.2
|
|||
|
drwxrwsr-x 3 root root 4096 Jul 13 10:14 7.3
|
|||
|
drwxrwsr-x 3 root root 4096 Jul 13 10:14 8.0
|
|||
|
drwxrwsr-x 3 root root 4096 Jul 13 10:14 9
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The structure of each of these directories is similar to that described in
|
|||
|
the section <A
|
|||
|
HREF="#REDHAT-MAIN-TREE"
|
|||
|
>The Redhat 9 tree</A
|
|||
|
>. So you will find for each version,
|
|||
|
in the subdirectory <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>en/os/</TT
|
|||
|
> a series of
|
|||
|
subdirectories representing the various architectures and a
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>noarch</TT
|
|||
|
> and <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
> SRPMS</TT
|
|||
|
> subdirectories, for packages which work on every architecture
|
|||
|
or are in source form respectively.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
drwxrwsr-x 2 root root 4096 Sep 23 05:28 SRPMS
|
|||
|
drwxrwsr-x 2 root root 4096 Aug 28 18:25 athlon
|
|||
|
drwxrwsr-x 2 root root 8192 Sep 23 05:28 i386
|
|||
|
drwxrwsr-x 2 root root 4096 Jul 13 10:14 i486
|
|||
|
drwxrwsr-x 2 root root 4096 Aug 28 18:26 i586
|
|||
|
drwxrwsr-x 2 root root 4096 Aug 28 18:26 i686
|
|||
|
drwxrwsr-x 2 root root 4096 Jul 13 10:14 noarch
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN154"
|
|||
|
></A
|
|||
|
>2.4. Differences for the 8.0 tree</H2
|
|||
|
><P
|
|||
|
> The 8.0 distribution layout is almost identical to the one just described. The only
|
|||
|
major differences, in this respect, can be found in the images directory.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>images</TT
|
|||
|
> directory contains boot
|
|||
|
and drivers floppy images that can be copied to a diskette if needed. In the
|
|||
|
8.0 release, there are three boot disk images available. The first boot
|
|||
|
image is called <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>boot.img</TT
|
|||
|
>, and is required when installation
|
|||
|
is performed directly from a CD-ROM. If installing from a NFS mounted disk or FTP
|
|||
|
is required, the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>bootnet.img</TT
|
|||
|
> disk image is needed.
|
|||
|
Installs through PCMCIA adapters need the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>pcmcia.img</TT
|
|||
|
>
|
|||
|
floppy. See section <A
|
|||
|
HREF="#INSTALLATION"
|
|||
|
>Installation</A
|
|||
|
> and references therein for
|
|||
|
details and consult the README file in the directory for a more detailed explanation
|
|||
|
of the various files.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN163"
|
|||
|
></A
|
|||
|
>2.5. Differences for the 7.x tree</H2
|
|||
|
><P
|
|||
|
> The two distributions are fairly similar in this respect. The only changes which
|
|||
|
are of some interest to us (and easy to notice with a simple inspection of the main
|
|||
|
distribution tree) are represented by a missing
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>isolinux</TT
|
|||
|
> directory and some changes in the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RedHat/base</TT
|
|||
|
> directory. The first one is due
|
|||
|
to the way the installation CDs are made bootable in releases prior to 8.0
|
|||
|
(<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"floppy emulation"</SPAN
|
|||
|
> has been superseded by <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"no emulation"</SPAN
|
|||
|
>
|
|||
|
in release 8.0), while the second is an effect of the migration of
|
|||
|
the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file format to <EM
|
|||
|
>XML</EM
|
|||
|
> in Redhat
|
|||
|
releases after 8.0 (that's why it was renamed <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps.xml</TT
|
|||
|
>).
|
|||
|
The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>Redhat/base/comps</TT
|
|||
|
> file is, in fact, a simple textual file
|
|||
|
with a quite inflexible syntax in releases prior to and including Redhat 7.3.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN174"
|
|||
|
></A
|
|||
|
>2.6. Differences for the 6.x tree</H2
|
|||
|
><P
|
|||
|
> For release 6.2 (<A
|
|||
|
HREF="ftp://ftp.redhat.com/pub/redhat/linux/6.2/en/os/"
|
|||
|
TARGET="_top"
|
|||
|
> pub/redhat/linux/6.2/en/os/</A
|
|||
|
>), the last of the 6 series, the organization
|
|||
|
is the following (the previous releases are mostly similar if not really equal, in
|
|||
|
this respect):
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> alpha/ i386/ sparc/
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> While the root of the i386 directory looks like this:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> -rw-r--r-- 1 root root 18385 Sep 7 1999 COPYING
|
|||
|
-rw-r--r-- 1 root root 3400 Mar 8 2000 README
|
|||
|
-rw-r--r-- 1 root root 16300 Mar 8 2000 RELEASE-NOTES
|
|||
|
-rw-r--r-- 1 root root 1908 Sep 25 1999 RPM-GPG-KEY
|
|||
|
drwxr-xr-x 1 root root 512 Sep 27 15:22 RedHat
|
|||
|
drwxr-xr-x 1 root root 17408 Sep 27 15:22 SRPMS
|
|||
|
-rwxr-xr-x 1 root root 538 Sep 26 1999 autorun
|
|||
|
-rwxr--r-- 1 root root 2048 Mar 9 2000 boot.cat
|
|||
|
drwxr-xr-x 1 root root 512 Sep 27 15:22 doc
|
|||
|
drwxr-xr-x 1 root root 512 Sep 27 15:22 dosutils
|
|||
|
drwxr-xr-x 1 root root 512 Sep 27 15:22 images
|
|||
|
drwxr-xr-x 1 root root 512 Sep 27 15:22 misc
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> In the following paragraphs I will only list differences from the newest
|
|||
|
releases, what is not explicitly mentioned is (or is believed to be) unchanged.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>doc</TT
|
|||
|
> directory contains an
|
|||
|
abundance of information. Most importantly, the RedHat installation manual
|
|||
|
can be found in HTML format in the directory or on the Redhat website
|
|||
|
(<A
|
|||
|
HREF="http://www.redhat.com/docs/manuals/linux/RHL-6.2-Manual/install-guide/"
|
|||
|
TARGET="_top"
|
|||
|
> Redhat 6.2 Installation guide</A
|
|||
|
>). Next, there are the reference guide
|
|||
|
and the getting started guide. The documentation for the 7.x/8.0/9 releases is on
|
|||
|
a separate CD (in a different tree, on the ftp site).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>images</TT
|
|||
|
> directory contains boot floppy
|
|||
|
images that can be copied to a diskette if needed, like for 8.0, 7.3 and 9. See
|
|||
|
section <A
|
|||
|
HREF="#INSTALLATION"
|
|||
|
>Installation</A
|
|||
|
> and references therein for details. The
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>misc</TT
|
|||
|
> directory contains source and
|
|||
|
executables of a number of programs needed for the installation.
|
|||
|
</P
|
|||
|
><P
|
|||
|
>
|
|||
|
The most important part of the directory tree is (again) rooted in
|
|||
|
the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RedHat</TT
|
|||
|
> directory:
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> drwxr-xr-x 2 root root 28672 Oct 26 09:01 RPMS
|
|||
|
drwxr-xr-x 2 root root 4096 Oct 26 09:01 base
|
|||
|
-rw-r--r-- 1 root root 0 Jan 19 1999 i386
|
|||
|
drwxr-xr-x 6 root root 4096 Oct 26 09:01 instimage
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RPMS</TT
|
|||
|
> directory should be
|
|||
|
already known to you. See the section <A
|
|||
|
HREF="#RPM-PACKAGES"
|
|||
|
>RPM packages</A
|
|||
|
> for more
|
|||
|
informations. The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>base</TT
|
|||
|
> directory
|
|||
|
holds different book-keeping files needed during the installation process,
|
|||
|
like for releases 7.3, 8.0 and 9. The only noticeable differences being represented
|
|||
|
by a single <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist</TT
|
|||
|
> file and a missing
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>stage2.img</TT
|
|||
|
> file whose functionalities should be provided
|
|||
|
by the files included in the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>instimage</TT
|
|||
|
>
|
|||
|
directory. This contains, in fact, a bare-bones live file system with a number
|
|||
|
of programs and shared libraries needed during the installation procedure.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>updates</TT
|
|||
|
> directory is really similar
|
|||
|
to the one described for release 9 with the only difference of having more
|
|||
|
architecture related directories.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><HR><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="RPM-PACKAGES"
|
|||
|
></A
|
|||
|
>3. RPM packages</H1
|
|||
|
><P
|
|||
|
> The major part of the Red Hat distribution consists of a set of RPM (Redhat
|
|||
|
Package Manager) files. An RPM package typically contains binary
|
|||
|
executables, along with relevant configuration files and documentation.
|
|||
|
The <A
|
|||
|
HREF="http://www.rpm.org"
|
|||
|
TARGET="_top"
|
|||
|
>rpm</A
|
|||
|
> program is a powerful
|
|||
|
package manager, which can be used to install, query, verify, update, erase
|
|||
|
and build software packages in the RPM format. <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>Rpm</TT
|
|||
|
>
|
|||
|
convieniently maintains a database of all the software packages it has
|
|||
|
installed, so information on the installed software is available at any time.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The binary RPM files in the distribution have been built on a system
|
|||
|
running the distribution itself. This is important, because most of the
|
|||
|
programs in the packages rely on shared libraries. From RedHat version 5.0,
|
|||
|
the new version 2 of the GNU standard C library (which is 64-bit clean) has
|
|||
|
been used. This version of the library is commonly referred to as
|
|||
|
<EM
|
|||
|
>glibc</EM
|
|||
|
> or in Linux: <EM
|
|||
|
>libc 6</EM
|
|||
|
>. All
|
|||
|
executables in the distribution have been linked against this library.
|
|||
|
If you attempt to install binary files from a different distribution,
|
|||
|
chances are that they will not work, unless you install the libc5 package
|
|||
|
for backwards compability. There are also incompatibilities between the
|
|||
|
various version of the Redhat Package Manager itself which will make the
|
|||
|
installation of some packages fail even on machines they are supposed to
|
|||
|
(and they would probably) run on.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The names of the RPM packages contain the suffix <EM
|
|||
|
>.arch.rpm</EM
|
|||
|
>,
|
|||
|
where <EM
|
|||
|
>arch</EM
|
|||
|
> is the architecture, usually having the value
|
|||
|
<EM
|
|||
|
>i386</EM
|
|||
|
> for Intel platform binaries. The packages you install
|
|||
|
must match the versions of the shared libraries available on the machine. The
|
|||
|
<A
|
|||
|
HREF="http://www.rpm.org"
|
|||
|
TARGET="_top"
|
|||
|
>rpm</A
|
|||
|
> program is usually quite good at
|
|||
|
ensuring that this is indeed the case, however, there are ways around this
|
|||
|
check, and you should be sure that you know what you are doing if you force
|
|||
|
installation of packages this way. However, using the RedHat installation
|
|||
|
boot disk, it is ensured that the correct set of RPM packages are installed
|
|||
|
on the machine.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> If you discover a RPM package that was not installed on your system during
|
|||
|
the installation process, don't despair. At any time, you may (as root)
|
|||
|
install RPM packages, for example:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> # rpm --install WindowMaker-0.18-1b.i386.rpm
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> You can even install directly from the Internet, if you know the URL of a
|
|||
|
RPM package:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> # rpm --install ftp://rufus.w3.org/redhat-contrib/noarch/mirror-2.9-2.noarch.rpm
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> If you want to update (or install if it's not present on the machine) a RPM
|
|||
|
package, use the command:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> # rpm --update WindowMaker-0.18-1b.i386.rpm
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> If you want to update a RPM package only if a previous version is already
|
|||
|
installed on the machine use the command:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> # rpm --freshen WindowMaker-0.18-1b.i386.rpm
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Another version of the RPM packages contains the original sources
|
|||
|
used to build the binaries. These packages have the suffix
|
|||
|
<EM
|
|||
|
>.src.rpm</EM
|
|||
|
> and are situated in the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>SRPMS</TT
|
|||
|
> directory. These packages compose
|
|||
|
the last two CDs and part of the third one out of the five which compose the 8.0 (or
|
|||
|
7.3) release. For release 9 they are on three separate CDs. For 6.2 (and previous,
|
|||
|
not too old, versions), things change a bit because there is only one installation CD
|
|||
|
not comprising the SRPMS packages, which you can burn on a different disc, if you want.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> To obtain more informations on the Redhat package manager, I suggest you to read
|
|||
|
the man pages and the fairly detailed book <A
|
|||
|
HREF="http://www.rpm.org/max-rpm/"
|
|||
|
TARGET="_top"
|
|||
|
> maximum rpm</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> In the next section, I will introduce a C program which will be used in various
|
|||
|
scripts throughout the rest of the howto. It just returns, given two versions of
|
|||
|
the same RPM package, which one is newer. This program is based on the code
|
|||
|
used in the Redhat Package Manager (release 4.1) and is used when the
|
|||
|
<EM
|
|||
|
>--freshen</EM
|
|||
|
> option is given.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="RPM-VERSION-COMPARE"
|
|||
|
></A
|
|||
|
>3.1. Comparing two versions of a RPM package</H2
|
|||
|
><P
|
|||
|
> The C code included in the three files
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/rpmvc/Makefile"
|
|||
|
TARGET="_top"
|
|||
|
> Makefile</A
|
|||
|
>,
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/rpmvc/rvc.h"
|
|||
|
TARGET="_top"
|
|||
|
> rvc.h</A
|
|||
|
>,
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/rpmvc/rvc.c"
|
|||
|
TARGET="_top"
|
|||
|
> rvc.c</A
|
|||
|
> was extracted from the Redhat Package
|
|||
|
Manager and (slightly) modified to fit our needs. They form a simple C
|
|||
|
program which given two versions A and B of a package returns 1, 0 or -1
|
|||
|
if A is respectively newer, equal or older than B and other
|
|||
|
values in case of error (you can read the code comments for more detailed
|
|||
|
informations). To compile the program (you need the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>make</TT
|
|||
|
>
|
|||
|
program and the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>gcc</TT
|
|||
|
> C compiler), put the files in the same
|
|||
|
directory and issue the command:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> $ make
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> This program is needed by almost every script used in the following sections and is
|
|||
|
found setting the <EM
|
|||
|
>RVC</EM
|
|||
|
> variable in the file
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/rhcd.conf"
|
|||
|
TARGET="_top"
|
|||
|
>rhcd.conf</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> You can find a copy of the source and a precompiled version in the archive
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts.tar.gz"
|
|||
|
TARGET="_top"
|
|||
|
>rhcd-sripts.tar.gz</A
|
|||
|
> in the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>rpmvc</TT
|
|||
|
> directory.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="NOTE"
|
|||
|
><P
|
|||
|
></P
|
|||
|
><TABLE
|
|||
|
CLASS="NOTE"
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="25"
|
|||
|
ALIGN="CENTER"
|
|||
|
VALIGN="TOP"
|
|||
|
><IMG
|
|||
|
SRC="../images/note.gif"
|
|||
|
HSPACE="5"
|
|||
|
ALT="Note"></TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
> There was an error in the way this program was used by the
|
|||
|
<EM
|
|||
|
>updateDist.sh (ver. < 1.17)</EM
|
|||
|
> and <EM
|
|||
|
>updateCD.sh
|
|||
|
(ver. < 1.12)</EM
|
|||
|
> scripts. I strongly suggest to avoid versions of
|
|||
|
the scripts which have lower release numbers than the reported ones, even if
|
|||
|
the problem doesn't show up really frequently (at least apparently).
|
|||
|
</P
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><HR><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="DISTRIBUTION-MIRROR"
|
|||
|
></A
|
|||
|
>4. Obtaining your local copy of the distribution</H1
|
|||
|
><P
|
|||
|
> You need a copy of the distribution on a writable disk which is accessible
|
|||
|
from the computer having the CD writer (duh!). If you want to incorporate
|
|||
|
the latest updates, this directory should (also) be accessible from a Linux
|
|||
|
machine, either from a local disk, an NFS mounted disk on a different
|
|||
|
computer, or a JAZ disk.
|
|||
|
You could copy the distribution from the RedHat CDs (recommended), or you
|
|||
|
could get it via FTP. If you choose to use FTP, there are two ways of doing
|
|||
|
it. You can use the <EM
|
|||
|
>wget</EM
|
|||
|
> based shell script
|
|||
|
presented in the following section or the <EM
|
|||
|
>mirror</EM
|
|||
|
>
|
|||
|
package as suggested in versions up to and including 1.34 of the howto
|
|||
|
(reported in section <A
|
|||
|
HREF="#USING-MIRROR"
|
|||
|
>Using mirror</A
|
|||
|
>).
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="USING-WGET-BASH"
|
|||
|
></A
|
|||
|
>4.1. Using wget and bash</H2
|
|||
|
><P
|
|||
|
>
|
|||
|
This is not the simplest, even if, probably, the most accurate way. I like it because
|
|||
|
it works comparing the RPM versions of the files and not the dates/times or names
|
|||
|
(like the standard mirroring packages) and it checks the signatures of the
|
|||
|
updates each time it downloads some of them if configured to do so by means of the
|
|||
|
<EM
|
|||
|
>CHECKSIG</EM
|
|||
|
> variable in the
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/rhcd.conf"
|
|||
|
TARGET="_top"
|
|||
|
>rhcd.conf</A
|
|||
|
> file.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Create a directory to hold the installation files and <EM
|
|||
|
>cd</EM
|
|||
|
>
|
|||
|
into it, then issue the command (which will download ~3Gb of data on your
|
|||
|
hard drive):
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
$ wget -r -c -t0 -l0 --retr-symlinks -nH --cut-dirs=9 \
|
|||
|
ftp://ftp.mirror.ac.uk/sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> You will probably want to change the ftp download mirror and, consequently, the
|
|||
|
parameter passed to the <EM
|
|||
|
>--cut-dirs</EM
|
|||
|
> option. That's used,
|
|||
|
in fact, together with <EM
|
|||
|
>-nH</EM
|
|||
|
> to avoid the recreation of the ftp
|
|||
|
site directory hierarchy. For more information on how to use the option correctly
|
|||
|
you can have a look at the <A
|
|||
|
HREF="http://www.gnu.org/manual/wget-1.8.1/wget.html"
|
|||
|
TARGET="_top"
|
|||
|
> wget documentation</A
|
|||
|
> and man page.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> If you want to exclude one or more directories from the download, you can use the
|
|||
|
<EM
|
|||
|
>-X list</EM
|
|||
|
> option, where <EM
|
|||
|
>list</EM
|
|||
|
> represents
|
|||
|
a comma-separated list of directories. For example to exclude the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>SRPMS</TT
|
|||
|
> directory from the previous download, you would use:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
$ wget -r -c -t0 -l0 --retr-symlinks -nH --cut-dirs=9 \
|
|||
|
-X /sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386/SRPMS \
|
|||
|
ftp://ftp.mirror.ac.uk/sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> This could be useful if you consider the size of the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>SRPMS</TT
|
|||
|
>
|
|||
|
directory (~1.2GB), or at least, I find it useful.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> If you want to check the GPG signatures to make sure of the authenticity of the
|
|||
|
packages (which is something I suggest) you should install the
|
|||
|
<EM
|
|||
|
>gnupg</EM
|
|||
|
> package (needed only on Redhat 7.3) and import the
|
|||
|
<EM
|
|||
|
>security@redhat.com</EM
|
|||
|
> public key you can find in the root
|
|||
|
directory of the CDs (<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RPM-GPG-KEY</TT
|
|||
|
>) or on the
|
|||
|
<A
|
|||
|
HREF="http://www.redhat.com/solutions/security/news/publickey.html#key"
|
|||
|
TARGET="_top"
|
|||
|
>RedHat
|
|||
|
website</A
|
|||
|
>. The key is imported by running the command:
|
|||
|
<EM
|
|||
|
>gpg --import <filename> </EM
|
|||
|
> in releases up to and including
|
|||
|
7.3, which is to be changed to read <EM
|
|||
|
>rpm --import <filename> </EM
|
|||
|
>
|
|||
|
for releases 8.0 and 9 (for more informations on this have a look at the
|
|||
|
<A
|
|||
|
HREF="http://www.gnupg.org/"
|
|||
|
TARGET="_top"
|
|||
|
>GNU Privacy Guard</A
|
|||
|
> and at the
|
|||
|
<A
|
|||
|
HREF="http://www.rpm.org/"
|
|||
|
TARGET="_top"
|
|||
|
>RPM</A
|
|||
|
> - Redhat Package Manager websites).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> If you want to check the rpm packages you can do it using the following command
|
|||
|
(I'm assuming you are issuing it from the directory you have completed the downloads
|
|||
|
in):
|
|||
|
</P
|
|||
|
><P
|
|||
|
> For releases up to and including 7.3:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
$ find . -name "*.rpm" -exec rpm -K --nopgp {} \; |grep "NOT *OK"
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> For release 8.0 and 9 (and for future releases as well I guess):
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
$ find . -name "*.rpm" -exec rpm -K {} \; |grep "NOT *OK"
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> If you don't want to <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"bother"</SPAN
|
|||
|
> yourself with all these steps, I hope you
|
|||
|
want to check (at least) for the integrity of the downloaded files (which doesn't mean
|
|||
|
nobody has tampered with them), verifying the md5 signatures. This is done with:
|
|||
|
</P
|
|||
|
><P
|
|||
|
> For releases up to and including 7.3:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
$ find . -name "*.rpm" -exec rpm -K --nopgp --nogpg {} \; |grep "NOT *OK"
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> For release 8.0 and 9 (and for future releases as well, I guess):
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
$ find . -name "*.rpm" -exec rpm -K --nosignature {} \; |grep "NOT *OK"
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The content of a Red Hat distribution does not change between releases, so
|
|||
|
you only need to download these packages <EM
|
|||
|
>ONCE</EM
|
|||
|
>. All changes
|
|||
|
to the distribution are in the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>updates</TT
|
|||
|
>
|
|||
|
directory. Thus, if you want to keep an up-to-date mirror of the Red Hat
|
|||
|
distribution, you only need to keep the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>updates</TT
|
|||
|
> directory current. This is
|
|||
|
done using the script
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/updateDist.sh"
|
|||
|
TARGET="_top"
|
|||
|
> updateDist.sh</A
|
|||
|
>. Before using this script you have to configure the
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/rhcd.conf"
|
|||
|
TARGET="_top"
|
|||
|
> rhcd.conf</A
|
|||
|
> configuration file and export a <EM
|
|||
|
>RHCDPATH</EM
|
|||
|
>
|
|||
|
variable pointing to the directory where this file is.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> $ export RHCDPATH=/home/luigi/tmp/rhcd-scripts
|
|||
|
$ sh updateDist.sh
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The script will download the new updates excluding the subdirectories contained in
|
|||
|
the <EM
|
|||
|
>EXCLUDELIST</EM
|
|||
|
> variable, moving the old ones (i.e. just
|
|||
|
superseded by new versions) to the directory represented by the
|
|||
|
<EM
|
|||
|
>OLDDIR</EM
|
|||
|
> variable after having completed two tests.
|
|||
|
The first test compares the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>.listing</TT
|
|||
|
> files generated by
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>wget</TT
|
|||
|
> to the content of the local directories to make sure
|
|||
|
all the files were downloaded.
|
|||
|
The second test verifies the packages signatures depending on the values of the
|
|||
|
two variables <EM
|
|||
|
>CHECKSIG</EM
|
|||
|
> and <EM
|
|||
|
>USEGPG</EM
|
|||
|
> (set both
|
|||
|
of them to <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"yes"</SPAN
|
|||
|
> if you want the operation to be completed). In case
|
|||
|
of a failure in the signature checking process the script will move the offending
|
|||
|
packages to <EM
|
|||
|
>OLDDIR</EM
|
|||
|
> assigning them the
|
|||
|
<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>".UPDcheckfail"</SPAN
|
|||
|
> extension and exit without moving the old updates to
|
|||
|
<EM
|
|||
|
>OLDDIR</EM
|
|||
|
>.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="USING-MIRROR"
|
|||
|
></A
|
|||
|
>4.2. Using mirror</H2
|
|||
|
><P
|
|||
|
> Mirror is a sophisticated perl script that compares the content of a
|
|||
|
directory on a remote site with a local directory. It will use FTP to fetch
|
|||
|
the files that are on the remote site but not the local site, and delete
|
|||
|
files on the local site that are not on the remote site. The mirror program
|
|||
|
is configured with a configuration file. The mirror package is available
|
|||
|
as an RPM from <A
|
|||
|
HREF="http://rufus.w3.org/linux/RPM/mirror.html"
|
|||
|
TARGET="_top"
|
|||
|
> rufus.w3.org</A
|
|||
|
>. Make your local copy <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>mirror.redhat</TT
|
|||
|
>
|
|||
|
of the mirror configuration file, and edit the relevant fields at the top of
|
|||
|
the file. After the default section, define these packages:
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
>
|
|||
|
package=updates
|
|||
|
site=ftp.mirror.ac.uk
|
|||
|
exclude_patt=(SRPMS/)
|
|||
|
remote_dir=/sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386
|
|||
|
local_dir=/home/luigi/tmp/redhat-cd/redhat-7.3-updates
|
|||
|
|
|||
|
package=dist
|
|||
|
site=ftp.mirror.ac.uk
|
|||
|
exclude_patt=(SRPMS/)
|
|||
|
remote_dir=/sites/ftp.redhat.com/pub/redhat/linux/7.3/en/os/i386
|
|||
|
local_dir=/home/luigi/tmp/redhat-cd/redhat-7.3
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The following command will download a copy of the entire RedHat tree on
|
|||
|
your local disk. <EM
|
|||
|
>**Think**</EM
|
|||
|
> before you do this, you
|
|||
|
are about to transfer approximately 1.5Gb of data (if you have excluded the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>SRPMS</TT
|
|||
|
> directory)!
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
$ mirror -pdist mirror.redhat
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> This will mirror the Red Hat FTP site on your local disk. The content of a
|
|||
|
Red Hat distribution does not change between releases, so you only need to
|
|||
|
download this package <EM
|
|||
|
>ONCE</EM
|
|||
|
>. All changes to the
|
|||
|
distribution are in the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>updates</TT
|
|||
|
>
|
|||
|
directory. Thus, if you want to keep an up-to-date mirror of the Red Hat
|
|||
|
distribution, you only need to keep the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>updates
|
|||
|
</TT
|
|||
|
> directory current. This is done using the command
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
>
|
|||
|
$ mirror -pupdates mirror.redhat
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> You can run this regularly, say, once a week, through a cron script. The
|
|||
|
RedHat distribution is available on a great number of FTP servers around
|
|||
|
the world, which are updated daily from the master site at
|
|||
|
<A
|
|||
|
HREF="ftp://ftp.redhat.com/pub"
|
|||
|
TARGET="_top"
|
|||
|
>ftp.redhat.com</A
|
|||
|
>. You should
|
|||
|
choose an FTP site close to you, see the
|
|||
|
<A
|
|||
|
HREF="http://www.redhat.com/download/mirror.html"
|
|||
|
TARGET="_top"
|
|||
|
> RedHat list of mirror sites</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="NOTE"
|
|||
|
><P
|
|||
|
></P
|
|||
|
><TABLE
|
|||
|
CLASS="NOTE"
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="25"
|
|||
|
ALIGN="CENTER"
|
|||
|
VALIGN="TOP"
|
|||
|
><IMG
|
|||
|
SRC="../images/note.gif"
|
|||
|
HSPACE="5"
|
|||
|
ALT="Note"></TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
> I haven't personally tested this procedure. It was the only proposed one
|
|||
|
for the older versions of the howto (up to version 1.34, regarding RedHat <=6.1).
|
|||
|
</P
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><HR><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="INCLUDE-UPDATES"
|
|||
|
></A
|
|||
|
>5. Including the updates</H1
|
|||
|
><P
|
|||
|
> There are three steps involved, the first two are (almost) equal in all the
|
|||
|
releases, while the last one changes quite a bit because of the changes in the
|
|||
|
anaconda installer:
|
|||
|
<P
|
|||
|
></P
|
|||
|
><OL
|
|||
|
TYPE="i"
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Correct the file protection modes</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Replace updated RPMs</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Rebuild the installer</P
|
|||
|
></LI
|
|||
|
></OL
|
|||
|
>
|
|||
|
To incorporate the updates, you need write access to the
|
|||
|
distribution directory from a Linux machine, with a working version of
|
|||
|
<A
|
|||
|
HREF="http://www.rpm.org"
|
|||
|
TARGET="_top"
|
|||
|
>rpm</A
|
|||
|
> installed, while <EM
|
|||
|
>to rebuild the
|
|||
|
anaconda installer you need to use a release of Redhat Linux equal to the one you
|
|||
|
are rebuilding the installer for (otherwise the procedure will fail)</EM
|
|||
|
>.
|
|||
|
If you maintain a mirror of the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>updates</TT
|
|||
|
>
|
|||
|
directory, you can at any time produce a CD including the current updates by
|
|||
|
repeating these steps.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="UPDATE-PERMISSIONS"
|
|||
|
></A
|
|||
|
>5.1. Correcting the file protection modes</H2
|
|||
|
><P
|
|||
|
> During the installation process of the releases up to and including 6.2,
|
|||
|
some programs are run directly off the CD. Unfortunately, the FTP program
|
|||
|
does not always preserve the protection modes of the files and directories
|
|||
|
that are copied. Therefore, it is necessary to make sure that execute
|
|||
|
permission is given to programs, shell scripts and shared libraries, before
|
|||
|
the directory is burned on the CD. This is done by running the
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/updatePerm.sh"
|
|||
|
TARGET="_top"
|
|||
|
> updatePerm.sh</A
|
|||
|
> script on your local copy of the distribution.
|
|||
|
It is really needed only for version 6.2 and older, the only part useful to
|
|||
|
the 7.3/8.0/9 releases procedure is the directories permissions update, even if the
|
|||
|
rest won't hurt and things are kept coherent. It is almost equal to the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>updatePerm</TT
|
|||
|
> script included in the previous version of
|
|||
|
the howto, just some slight changes were made. Before using this script you
|
|||
|
have to configure the
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/rhcd.conf"
|
|||
|
TARGET="_top"
|
|||
|
> rhcd.conf</A
|
|||
|
> configuration file and export a <EM
|
|||
|
>RHCDPATH</EM
|
|||
|
>
|
|||
|
variable pointing to the directory where this file is.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> $ export RHCDPATH=/home/luigi/tmp/rhcd-scripts
|
|||
|
$ sh updatePerm.sh
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="REPLACING-PACKAGES"
|
|||
|
></A
|
|||
|
>5.2. Replacing the updated RPMS</H2
|
|||
|
><P
|
|||
|
> The <A
|
|||
|
HREF="rhcd-scripts/updateCD.sh"
|
|||
|
TARGET="_top"
|
|||
|
> updateCD.sh</A
|
|||
|
> script copies all the new
|
|||
|
files from the update directory to the RPMS (and SRPMS) directory. The script
|
|||
|
uses the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>rvc</TT
|
|||
|
> program which was presented in section
|
|||
|
<A
|
|||
|
HREF="#RPM-VERSION-COMPARE"
|
|||
|
>Comparing RPM versions</A
|
|||
|
>
|
|||
|
to determine which packages in the updates directory are more recent. Older packages
|
|||
|
are moved to the <EM
|
|||
|
>${OLDDIR}</EM
|
|||
|
> directory. If the
|
|||
|
<EM
|
|||
|
>CHECKSIG</EM
|
|||
|
> variable is set to <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"yes"</SPAN
|
|||
|
>, all the packages in
|
|||
|
the main tree will have their signature checked for correctness. If a package fails
|
|||
|
the signature check (the kind of check is configured by means of the
|
|||
|
<EM
|
|||
|
>USEGPG</EM
|
|||
|
> variable whose value is assigned in the file
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/rhcd.conf"
|
|||
|
TARGET="_top"
|
|||
|
>rhcd.conf</A
|
|||
|
>), it is moved to the
|
|||
|
<EM
|
|||
|
>OLDDIR</EM
|
|||
|
> directory with an added extension of
|
|||
|
<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"CDcheckfail"</SPAN
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Before using this script, you have to configure the
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/rhcd.conf"
|
|||
|
TARGET="_top"
|
|||
|
>rhcd.conf</A
|
|||
|
> configuration
|
|||
|
file and export a <EM
|
|||
|
>RHCDPATH</EM
|
|||
|
> variable pointing to the
|
|||
|
directory where this file is.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> $ export RHCDPATH=/home/luigi/tmp/rhcd-scripts
|
|||
|
$ sh updateCD.sh
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="NOTE"
|
|||
|
><P
|
|||
|
></P
|
|||
|
><TABLE
|
|||
|
CLASS="NOTE"
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="25"
|
|||
|
ALIGN="CENTER"
|
|||
|
VALIGN="TOP"
|
|||
|
><IMG
|
|||
|
SRC="../images/note.gif"
|
|||
|
HSPACE="5"
|
|||
|
ALT="Note"></TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
> After having incorporated the updates in the main
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RedHat/RPMS</TT
|
|||
|
> directory, your copy of
|
|||
|
the distribution is no longer a mirror of the Red Hat distribution site.
|
|||
|
Actually, it is more up-to-date! Therefore, if you attempt to mirror the
|
|||
|
distribution using mirror, older versions of the RPM's that have been updated
|
|||
|
will be downloaded once more, and the updates deleted. The bash/wget based
|
|||
|
procedure doesn't suffer from the problem, but will leave the main tree in an
|
|||
|
incoherent state. Old and new packages will be in this case mixed together, but
|
|||
|
you can find and remove them wrapping the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>rvc</TT
|
|||
|
> binary in a
|
|||
|
simple shell script (which I will leave as an exercise for the reader...).
|
|||
|
</P
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="INSTALLER-REBUILD"
|
|||
|
></A
|
|||
|
>5.3. Rebuilding the installer</H2
|
|||
|
><P
|
|||
|
> Things have changed pretty much in this section with the introduction of the
|
|||
|
anaconda installer (as of release 6.1) and with the considerable increment
|
|||
|
in size (and ... number of CDs) the 7.x/8.0 distributions have seen. Until
|
|||
|
release 6.2, the only step composing this section was represented by
|
|||
|
generating a new <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist</TT
|
|||
|
> file. With release 6.2, this
|
|||
|
appears to be true only to a certain extent, because of the changes in the
|
|||
|
anaconda installer, in the <EM
|
|||
|
>rpm</EM
|
|||
|
> software itself
|
|||
|
(from version 3.x to 4.x) and the migration of the updated packages to
|
|||
|
this new version (updates for release 6.2 are in fact packaged with both
|
|||
|
major releases of the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>rpm</TT
|
|||
|
> software). We will consider
|
|||
|
three different procedures trying to cover all the releases.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><HR><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="RH61-REBUILD"
|
|||
|
></A
|
|||
|
>5.3.1. RedHat <= 6.1</H3
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN391"
|
|||
|
></A
|
|||
|
>5.3.1.1. Regenerating the hdlist file</H4
|
|||
|
><P
|
|||
|
> When installing from the CD, the installation program on the CD relies
|
|||
|
on the file <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RedHat/base/hdlist</TT
|
|||
|
> describing what RPM
|
|||
|
packages are available on the CD. The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist</TT
|
|||
|
> file
|
|||
|
can be generated by the program <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>misc/src/install/genhdlist</TT
|
|||
|
>.
|
|||
|
This program must be run with the absolute path to the root of the
|
|||
|
distribution as the only argument. Here is the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>updateHdlist</TT
|
|||
|
>
|
|||
|
script which calls that program (from version 1.34 of this howto):
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> #!/bin/bash
|
|||
|
|
|||
|
RHVERSION=6.1
|
|||
|
ARCH=i386
|
|||
|
|
|||
|
echo generating hdlist...
|
|||
|
RHROOT=/home/luigi/tmp/redhat-${RHVERSION}
|
|||
|
GENHDDIR=${RHROOT}/${ARCH}/misc/src/anaconda/utils
|
|||
|
|
|||
|
chmod u+x ${GENHDDIR}/genhdlist
|
|||
|
chmod 644 ${RHROOT}/${ARCH}/RedHat/base/hdlist
|
|||
|
${GENHDDIR}/genhdlist ${RHROOT}/${ARCH} || echo "*** GENHDLIST FAILED ***"
|
|||
|
|
|||
|
exit 0
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="NOTE"
|
|||
|
><P
|
|||
|
></P
|
|||
|
><TABLE
|
|||
|
CLASS="NOTE"
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="25"
|
|||
|
ALIGN="CENTER"
|
|||
|
VALIGN="TOP"
|
|||
|
><IMG
|
|||
|
SRC="../images/note.gif"
|
|||
|
HSPACE="5"
|
|||
|
ALT="Note"></TD
|
|||
|
><TH
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="CENTER"
|
|||
|
><B
|
|||
|
>Important note for RedHat < 6.1</B
|
|||
|
></TH
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
> The installation in RedHat 6.1 is completely changed from earlier versions,
|
|||
|
and RedHat has introduced <EM
|
|||
|
>anaconda</EM
|
|||
|
>. The
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>genhdlist</TT
|
|||
|
> program is now found in a different place,
|
|||
|
so in the script above, we used
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> GENHDDIR=${RHROOT}/${ARCH}/misc/src/anaconda/utils
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
while for releases up to (and including) 6.0 that line should read
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> GENHDDIR=${RHROOT}/${ARCH}/misc/src/install
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
><P
|
|||
|
> In some cases, <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>genhdlist</TT
|
|||
|
> fails to run, because the
|
|||
|
executable is not statically linked. In such a case, you can add a new line
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>${RHROOT}/${ARCH}/RedHat/instimage/usr/lib</TT
|
|||
|
>
|
|||
|
in <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>/etc/ld.so.conf</TT
|
|||
|
> and run <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>ldconfig -v</TT
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Another solution is to recompile <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>genhdlist</TT
|
|||
|
>. The
|
|||
|
following modification to the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>updateHdlist</TT
|
|||
|
> script worked
|
|||
|
under RedHat 5.2:
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> #!/bin/bash
|
|||
|
|
|||
|
RHVERSION=6.1
|
|||
|
ARCH=i386
|
|||
|
|
|||
|
RHROOT=/misc/redhat/redhat-${RHVERSION}
|
|||
|
GENHDDIR=${RHROOT}/${ARCH}/misc/src/anaconda/utils
|
|||
|
|
|||
|
echo Compiling genhdlist...
|
|||
|
sed -e 's/FD_t/int/' \
|
|||
|
-e 's/fdOpen/open/' \
|
|||
|
-e 's/fdClose/close/' \
|
|||
|
-e 's/fdFileno//' < ${GENHDDIR}/genhdlist.c > /tmp/genhdlist.c
|
|||
|
cc -o /tmp/genhdlist -I/usr/include/rpm /tmp/genhdlist.c -lrpm -lz
|
|||
|
|
|||
|
echo generating hdlist...
|
|||
|
chmod 644 ${RHROOT}/${ARCH}/RedHat/base/hdlist
|
|||
|
/tmp/genhdlist ${RHROOT}/${ARCH} || echo "*** GENHDLIST FAILED ***"
|
|||
|
|
|||
|
exit 0
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> In this version of the script, a copy of the C source of
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>genhdlist.c</TT
|
|||
|
> is piped through
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>sed</TT
|
|||
|
> to create a copy in
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>/tmp</TT
|
|||
|
> that will
|
|||
|
compile under RedHat 5.2. This version of
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>genhdlist</TT
|
|||
|
> is then used to create the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist</TT
|
|||
|
> file
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="NOTE"
|
|||
|
><P
|
|||
|
></P
|
|||
|
><TABLE
|
|||
|
CLASS="NOTE"
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="25"
|
|||
|
ALIGN="CENTER"
|
|||
|
VALIGN="TOP"
|
|||
|
><IMG
|
|||
|
SRC="../images/note.gif"
|
|||
|
HSPACE="5"
|
|||
|
ALT="Note"></TD
|
|||
|
><TH
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="CENTER"
|
|||
|
><B
|
|||
|
>Important note for RedHat 5.2</B
|
|||
|
></TH
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
>
|
|||
|
As distributed with RedHat version 5.2 and earlier,
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>genhdlist</TT
|
|||
|
> CRASHES if there are files in the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RedHat/RPMS</TT
|
|||
|
> directory which are <EM
|
|||
|
>not</EM
|
|||
|
>
|
|||
|
RPM files! This causes problems, because in the 5.2 distribution, there
|
|||
|
are a couple of non-RPM files named <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>ls-lR</TT
|
|||
|
> and
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>ls-lR.gz</TT
|
|||
|
> in
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RedHat/RPMS</TT
|
|||
|
>. Therefore, you must
|
|||
|
remove all non-RPM files from the directory. Alternatively, you can apply
|
|||
|
the patch
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/oldversion/genhdlist.c.diff"
|
|||
|
TARGET="_top"
|
|||
|
>genhdlist.c.diff</A
|
|||
|
>
|
|||
|
to <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>misc/src/install/genhdlist.c</TT
|
|||
|
> and
|
|||
|
do a <EM
|
|||
|
>make</EM
|
|||
|
>. The patch will cause
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>genhdlist</TT
|
|||
|
> to ignore any non-RPM files.
|
|||
|
</P
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="ISO-IMAGE-CREATE"
|
|||
|
></A
|
|||
|
>5.3.1.2. Creating the CD iso image</H4
|
|||
|
><P
|
|||
|
> You'll need to create an image file which will be written to the CD. This
|
|||
|
file will be 500Mb or more so find a partition with enough free space. You
|
|||
|
may need to be root to use mount and cdrecord. Here you will prepare the
|
|||
|
iso image of the bootable CD to be burned. It is actually, not strictly
|
|||
|
necessary, to create a bootable CD, because you could use a boot floppy instead
|
|||
|
of it, but it's definitely a nifty feature (and makes your disc more similar
|
|||
|
in behaviour to the original one). These are the commands I use to complete
|
|||
|
the task:
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ mkdir /images-destination-dir
|
|||
|
$ mkisofs -r -J -T -v -V "Red Hat 6.1 (Hedwig)" \
|
|||
|
-c boot.cat -b images/boot.img \
|
|||
|
-o /images-destination-dir/i386-disc.iso .
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
This is needed to burn the (bootable) disc and is executed from the top
|
|||
|
level directory of the distribution. The
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>/images-destination-dir</TT
|
|||
|
> directory is
|
|||
|
the container for the iso image you are generating, and it must exist
|
|||
|
(obviously) before starting the procedure. In the following table you can
|
|||
|
read a brief explanation of the various options and their meanings (most
|
|||
|
of it was extracted from the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>mkisofs</TT
|
|||
|
> man page).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <DIV
|
|||
|
CLASS="TABLE"
|
|||
|
><A
|
|||
|
NAME="AEN442"
|
|||
|
></A
|
|||
|
><P
|
|||
|
><B
|
|||
|
>Table 1. mkisofs options and parameters</B
|
|||
|
></P
|
|||
|
><TABLE
|
|||
|
BORDER="0"
|
|||
|
CLASS="CALSTABLE"
|
|||
|
><TBODY
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>-r</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>Rock Ridge extensions with useful values for the
|
|||
|
permission bits</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>-J</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>Joliet extensions to use the cd with some different
|
|||
|
operating systems</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>-T</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>Generate a TRANS.TBL file in each directory to map correctly
|
|||
|
the file names even on systems which do not support the Rock
|
|||
|
Ridge extensions.</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>-v</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>be verbose</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
CLASS="LITERALLAYOUT"
|
|||
|
>-V <volid></P
|
|||
|
></TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>Specifies the volume ID (volume name or label) to
|
|||
|
be written into the master block.</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
CLASS="LITERALLAYOUT"
|
|||
|
>-c <boot catalog></P
|
|||
|
></TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>Specifies the path and filename of the boot catalog
|
|||
|
to be used when making an "El Torito" bootable CD.
|
|||
|
The pathname must be relative to the source path
|
|||
|
specified to mkisofs.</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
CLASS="LITERALLAYOUT"
|
|||
|
>-b <eltorito boot image></P
|
|||
|
></TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>Specifies the path and filename of the boot image
|
|||
|
to be used when making an "El Torito" bootable CD.
|
|||
|
The pathname must be relative to the source path
|
|||
|
specified to mkisofs and specify a floppy image (which
|
|||
|
is why we use one of the floppy images found on the
|
|||
|
original CD. You may want to change this with the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>pcmcia.img</TT
|
|||
|
> image to install using pcmcia
|
|||
|
devices like network cards or CDROM readers.</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
CLASS="LITERALLAYOUT"
|
|||
|
>-o <filename></P
|
|||
|
></TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>Name of the file containing the generated iso image</TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>.</TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
>This is the root directory for our generated iso image (we are
|
|||
|
working from the root directory of every CD, so a dot is
|
|||
|
enough).</TD
|
|||
|
></TR
|
|||
|
></TBODY
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> You will find details of how to burn the image on a media in <A
|
|||
|
HREF="#BURN-CD"
|
|||
|
>Burning the CD</A
|
|||
|
>.
|
|||
|
The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>mkisofs</TT
|
|||
|
> and <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>cdrecord</TT
|
|||
|
> steps can be
|
|||
|
executed by means of a graphical frontend like
|
|||
|
<A
|
|||
|
HREF="http://www.xcdroast.org/"
|
|||
|
TARGET="_top"
|
|||
|
>X-CD-Roast</A
|
|||
|
> which should currently
|
|||
|
support the creation of bootable CDs (I've never used it, so don't expect me
|
|||
|
to give you any explanation).
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><HR><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="RH62-REBUILD"
|
|||
|
></A
|
|||
|
>5.3.2. RedHat 6.2</H3
|
|||
|
><P
|
|||
|
> Apparently, this is a problem child when it comes to burning an uptodate CD.
|
|||
|
The introduction of version 4 of the Redhat Package Manager (RPM), made the
|
|||
|
procedure to update the anaconda installer fail. So the procedures listed will
|
|||
|
work only if the updated packages were built using a version of the RPM
|
|||
|
software which is older than or equal to 3.0.4 (so, basically, 3.0.4 or 3.0.5).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> If you are using the original packages from Redhat, you have to avoid using
|
|||
|
updates released after 28 March 2001 (which is a bit useless, in my opinion)
|
|||
|
or you have to rebuild the packages using the old rpm format. Details on the
|
|||
|
downgrade procedure and tools which implement it can be found in the document
|
|||
|
<A
|
|||
|
HREF="http://www.tigress.co.uk/rmy/rh62/rpmhack.html"
|
|||
|
TARGET="_top"
|
|||
|
>rpmhack</A
|
|||
|
>.
|
|||
|
I have not personally tested this procedure, even if it appears to work if you
|
|||
|
read about it on the anaconda-devel and kickstart mailing lists (you can find
|
|||
|
them on the <A
|
|||
|
HREF="https://listman.redhat.com/mailman/listinfo"
|
|||
|
TARGET="_top"
|
|||
|
>mailing
|
|||
|
lists</A
|
|||
|
> section of the Redhat website.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> If you decide to stick to the old original packages and complete the update
|
|||
|
(using the rpm 4.0.2 packages after the installation is finished)
|
|||
|
there are two possible ways of doing it, depending on which kind of updates you
|
|||
|
want to complete the CD with. If some of the updates regard directly the
|
|||
|
installation process (e.g. kernel, python, kudzu), you will have to use the
|
|||
|
installer rebuilding procedure explained in the document
|
|||
|
<A
|
|||
|
HREF="http://www.scyld.com/~pzb/rhcd.html"
|
|||
|
TARGET="_top"
|
|||
|
>Building a Red Hat Linux 6.2
|
|||
|
CDROM</A
|
|||
|
>, otherwise you can still use the old procedure (the one for
|
|||
|
releases previous to and including 6.1 explained in the previous section).
|
|||
|
The last two steps, which are, respectively, creating the iso image and burning
|
|||
|
the actual media are described in <A
|
|||
|
HREF="#ISO-IMAGE-CREATE"
|
|||
|
>Creating the CD iso image</A
|
|||
|
> and
|
|||
|
<A
|
|||
|
HREF="#BURN-CD"
|
|||
|
>Burning the CD</A
|
|||
|
>, respectively.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><HR><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="RH73-REBUILD"
|
|||
|
></A
|
|||
|
>5.3.3. RedHat 9, 8.0 and 7.3</H3
|
|||
|
><P
|
|||
|
> Once again a lot of things have changed with the release of the 7.x series of the
|
|||
|
distribution. There are now more operations to complete to obtain a fresh and
|
|||
|
uptodate series of CDs. Exactly, they have become more than one with release 7.0
|
|||
|
and now the tree has to be split to fit on the media. This is done by means of
|
|||
|
the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>splitdistro</TT
|
|||
|
> script, which is written in python like most
|
|||
|
of the anaconda installer. To complete this part, you <EM
|
|||
|
>must</EM
|
|||
|
> use
|
|||
|
a Linux RedHat 7.3, 8.0 or 9 machine with the <EM
|
|||
|
>anaconda-runtime</EM
|
|||
|
>
|
|||
|
package installed (it will probably have version 7.3.7, 8.0.4 or 9.0.4), depending
|
|||
|
on the release you want to rebuild. The procedure is composed by seven steps:
|
|||
|
<P
|
|||
|
></P
|
|||
|
><OL
|
|||
|
TYPE="i"
|
|||
|
><LI
|
|||
|
><P
|
|||
|
> Regenerating the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist</TT
|
|||
|
> and
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist2</TT
|
|||
|
> files
|
|||
|
</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
> Updating the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps.xml</TT
|
|||
|
> (or
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
>) file
|
|||
|
</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Rebuilding the installer</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Splitting the distribution in CD-sized chunks</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
> Regenerating the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist</TT
|
|||
|
>
|
|||
|
and <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>hdlist2</TT
|
|||
|
> files (again)
|
|||
|
</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Generating the iso images</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>adding and checking the md5 signatures in the iso images</P
|
|||
|
></LI
|
|||
|
></OL
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> All the steps are grouped together in a single script presented in the last section.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN530"
|
|||
|
></A
|
|||
|
>5.3.3.1. Preliminary operations on the main tree</H4
|
|||
|
><P
|
|||
|
> Some of the scripts included in the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>anaconda-runtime</TT
|
|||
|
> package
|
|||
|
need the main tree to be moved in a subdirectory named like the architecture we
|
|||
|
are building for (so <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>i386/</TT
|
|||
|
> for me). We will
|
|||
|
move everything to such directory before starting the procedure and change the
|
|||
|
invocation of the scripts which don't need this modification.
|
|||
|
</P
|
|||
|
><P
|
|||
|
>
|
|||
|
For redhat 9 and 8.0:
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ chmod -R u+w /absolute-path-to-toplevel-dir
|
|||
|
$ mkdir -p /absolute-path-to-toplevel-dir/i386
|
|||
|
$ cd /absolute-path-to-toplevel-dir
|
|||
|
$ /bin/mv * i386
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
You should change <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"/absolute-path-to-toplevel-dir"</SPAN
|
|||
|
> with the
|
|||
|
<EM
|
|||
|
>absolute path</EM
|
|||
|
> of the directory where the root of your
|
|||
|
local copy of the distribution is located (maybe somewhere on some hard drive).
|
|||
|
You will get an error, from the execution of the last command, because the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>i386/</TT
|
|||
|
> directory cannot be moved under
|
|||
|
itself, but you don't need to worry about that.
|
|||
|
</P
|
|||
|
><P
|
|||
|
>
|
|||
|
For redhat 7.3:
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ chmod -R u+w /absolute-path-to-toplevel-dir
|
|||
|
$ mkdir -p /absolute-path-to-toplevel-dir/i386
|
|||
|
$ cd /absolute-path-to-toplevel-dir
|
|||
|
$ for i in `ls` ; do [ $i != "SRPMS" -a $i != i386 ] && /bin/mv $i i386 ; done
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
You shouldn't receive any error message this time from the last command (hopefully).
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN542"
|
|||
|
></A
|
|||
|
>5.3.3.2. Regenerating the hdlist and hdlist2 files</H4
|
|||
|
><P
|
|||
|
> This is done by means of the following two commands with the help of
|
|||
|
the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>genhdlist</TT
|
|||
|
> program.
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ /usr/lib/anaconda-runtime/genhdlist /absolute-path-to-toplevel-dir/i386
|
|||
|
$ chmod 644 /absolute-path-to-toplevel-dir/i386/RedHat/base/hdlist{,2}
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
Once again, <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"/absolute-path-to-toplevel-dir"</SPAN
|
|||
|
> is the
|
|||
|
<EM
|
|||
|
>absolute path</EM
|
|||
|
> of the directory where the root of your
|
|||
|
local copy of the distribution is located.
|
|||
|
The second command is needed to make sure the correct permissions are
|
|||
|
set for the file. You should already have an idea of what these files are about
|
|||
|
if you have read through <A
|
|||
|
HREF="#REDHAT-DIR"
|
|||
|
>The Redhat directory</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="UPD-COMPS.XML"
|
|||
|
></A
|
|||
|
>5.3.3.3. Update the <EM
|
|||
|
>comps.xml</EM
|
|||
|
> file</H4
|
|||
|
><P
|
|||
|
> In Redhat Linux 8.0 the format of the comps file has completely changed and it's
|
|||
|
now based on XML. It provides much more flexibility and ease of customization
|
|||
|
as you can read in <A
|
|||
|
HREF="#COMPS-FILE"
|
|||
|
>The comps file</A
|
|||
|
>. If you have modified or intend to
|
|||
|
modify the list of the installed packages, you need to complete this step. This,
|
|||
|
in turn, implies having the modified version of comps-9.tar.gz
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/comps-9.tar.gz"
|
|||
|
TARGET="_top"
|
|||
|
> comps-9.tar.gz</A
|
|||
|
> (the original one doesn't work for me) or
|
|||
|
<A
|
|||
|
HREF="http://rhlinux.redhat.com/anaconda/comps-8.0.tar.gz"
|
|||
|
TARGET="_top"
|
|||
|
> comps-8.0.tar.gz</A
|
|||
|
> package (depending on the release you are building)
|
|||
|
including the master comps file found on the Redhat website and the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-extras</TT
|
|||
|
> rpm package installed.
|
|||
|
Follow these steps for Redhat 9 and 8.0:
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ cd /some-dir-of-your-choice
|
|||
|
$ tar xzvf /path-to-comps-9.tar.gz/comps-9.tar.gz
|
|||
|
$ cd comps
|
|||
|
$ make
|
|||
|
$ cat comps-milan.xml |sed 's!</comps>!!g' >comps-tmp.xml
|
|||
|
$ /usr/share/comps-extras/getfullcomps.py comps.xml \
|
|||
|
/absolute-path-to-toplevel-dir i386 >> comps-tmp.xml
|
|||
|
$ echo '</comps>' >> comps-tmp.xml
|
|||
|
$ cp comps-tmp.xml /absolute-path-to-toplevel-dir/i386/RedHat/base/comps.xml
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
Beside <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"/absolute-path-to-toplevel-dir"</SPAN
|
|||
|
>, you should take care of
|
|||
|
assigning valid names to <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"/some-dir-of-your-choice"</SPAN
|
|||
|
> and
|
|||
|
<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"/path-to-comps-9.tar.gz"</SPAN
|
|||
|
>. The rest of the commands can be just
|
|||
|
copied. And... you must (obviously) change 9 to read 8.0 if you are building
|
|||
|
a Redhat 8.0 distribution.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Again, before issuing the <EM
|
|||
|
>make</EM
|
|||
|
> command, you should modify the file
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-milan.xml.in</TT
|
|||
|
> using your favourite text editor and
|
|||
|
following the guidelines and the suggestions found in <A
|
|||
|
HREF="#COMPS-FILE"
|
|||
|
>The comps file</A
|
|||
|
>
|
|||
|
and on the
|
|||
|
<A
|
|||
|
HREF="http://rhlinux.redhat.com/anaconda/comps.html"
|
|||
|
TARGET="_top"
|
|||
|
>anaconda comps</A
|
|||
|
>
|
|||
|
section of the Redhat website.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The script presented in the last section will execute all the steps needed after
|
|||
|
the <EM
|
|||
|
>make</EM
|
|||
|
> command, using the <EM
|
|||
|
>COMPSFILE</EM
|
|||
|
>
|
|||
|
variable to find the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-milan.xml</TT
|
|||
|
> file (it doesn't need
|
|||
|
to have that name, I'm just using the original name, but you can change it if
|
|||
|
you want).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> If you are using Redhat 7.3, the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file (have you noticed
|
|||
|
the different name...) is a textual file with a completely different syntax described
|
|||
|
in some more detail in <A
|
|||
|
HREF="#COMPS-FILE"
|
|||
|
>The comps file</A
|
|||
|
>. In this case, the only necessary
|
|||
|
operations are modifying the file to suit your needs and copying it to the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RedHat/base/comps</TT
|
|||
|
> file in the main tree overwriting the original
|
|||
|
one.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN575"
|
|||
|
></A
|
|||
|
>5.3.3.4. Rebuilding the installer</H4
|
|||
|
><P
|
|||
|
> This will rebuild the anaconda installer in your local copy of the distribution
|
|||
|
using your updated packages.
|
|||
|
For Redhat 9 execute:
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ /usr/lib/anaconda-runtime/buildinstall \
|
|||
|
--pkgorder /absolute-path-to-toplevel-dir/pkgorder.txt \
|
|||
|
--comp dist-9 --product "Red Hat Linux" --version 9 \
|
|||
|
--release "Redhat 9 (Shrike)" /absolute-path-to-toplevel-dir/i386
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
Where, once again, <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"/absolute-path-to-toplevel-dir"</SPAN
|
|||
|
> is
|
|||
|
the directory where the root of your local copy of the distribution is located.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> For Redhat 8.0, the procedure is pretty much the same (the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"--product"</SPAN
|
|||
|
>
|
|||
|
option is missing):
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ /usr/lib/anaconda-runtime/buildinstall \
|
|||
|
--pkgorder /absolute-path-to-toplevel-dir/pkgorder.txt \
|
|||
|
--comp dist-8.0 --version 8.0 --release "Redhat 8.0 (Psyche)" \
|
|||
|
/absolute-path-to-toplevel-dir/i386
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Or if you are still using Redhat 7.3 (as I am):
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ /usr/lib/anaconda-runtime/buildinstall \
|
|||
|
--pkgorder /absolute-path-to-toplevel-dir/pkgorder.txt \
|
|||
|
--comp dist-7.3 --version 7.3 /absolute-path-to-toplevel-dir/i386
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The absence of the (mandatory in 8.0) <EM
|
|||
|
>--release</EM
|
|||
|
> option
|
|||
|
is the only noticeable difference.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN587"
|
|||
|
></A
|
|||
|
>5.3.3.5. Split the distribution</H4
|
|||
|
><P
|
|||
|
> This will create five directories, each one corresponding to a different
|
|||
|
CD and will put in them hard links to the real files contained in your local
|
|||
|
copy of the distribution.
|
|||
|
<DIV
|
|||
|
CLASS="NOTE"
|
|||
|
><P
|
|||
|
></P
|
|||
|
><TABLE
|
|||
|
CLASS="NOTE"
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="25"
|
|||
|
ALIGN="CENTER"
|
|||
|
VALIGN="TOP"
|
|||
|
><IMG
|
|||
|
SRC="../images/note.gif"
|
|||
|
HSPACE="5"
|
|||
|
ALT="Note"></TD
|
|||
|
><TD
|
|||
|
ALIGN="LEFT"
|
|||
|
VALIGN="TOP"
|
|||
|
><P
|
|||
|
> This will not work at all for Redhat 7.3 if you don't use the modified
|
|||
|
version of the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>splitdistro</TT
|
|||
|
> script reported in the next
|
|||
|
paragraph. For Redhat 8.0 and 9, a modified version of
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>splitdistro</TT
|
|||
|
> is provided mainly because even if the problems
|
|||
|
in the previous script were fixed, the execution now fails if there are
|
|||
|
not enough packages to fill all the CDs (the first four completely and the
|
|||
|
last one even just partly).
|
|||
|
</P
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
>
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ $/usr/lib/anaconda-runtime/splitdistro \
|
|||
|
--fileorder /absolute-path-to-toplevel-dir/pkgorder.txt --release \
|
|||
|
"Redhat 9 (Shrike)" /absolute-path-to-toplevel-dir i386
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
The only thing you need to change for 8.0 and 7.3 is the string passed to the
|
|||
|
<EM
|
|||
|
>--release</EM
|
|||
|
> option (which should read
|
|||
|
<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Redhat 8.0 (Psyche)"</SPAN
|
|||
|
> or <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Redhat 7.3 (Valhalla)"</SPAN
|
|||
|
>)
|
|||
|
</P
|
|||
|
><P
|
|||
|
> For Redhat 7.3 the version of the
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/splitdistro7.3"
|
|||
|
TARGET="_top"
|
|||
|
> splitdistro7.3</A
|
|||
|
> (python) script used was extracted from the
|
|||
|
<EM
|
|||
|
>anaconda-runtime 7.3.7</EM
|
|||
|
> package and modified by me.
|
|||
|
You should sustitute it to the original one (maybe after copying the latter)
|
|||
|
named <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>/usr/lib/anaconda-runtime/splitdistro</TT
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The only modification (apart from some small fixes), the script went through,
|
|||
|
is a change in its behaviour if the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>SRPMS</TT
|
|||
|
> directory is not
|
|||
|
found (doesn't terminate, but generate the CDs without source packages).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> For Redhat 8.0 the version of the
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/splitdistro8.0"
|
|||
|
TARGET="_top"
|
|||
|
> splitdistro8.0</A
|
|||
|
> (python) script used was extracted from the
|
|||
|
<EM
|
|||
|
>anaconda-runtime 8.0.4</EM
|
|||
|
> package and modified once again by
|
|||
|
me to obtain some improvements I felt the need for. You should sustitute it to
|
|||
|
the original one (maybe after copying the latter somewhere) named
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>/usr/lib/anaconda-runtime/splitdistro</TT
|
|||
|
>. Anyway, the original
|
|||
|
one works well, if you want to build a distribution which has all the
|
|||
|
<EM
|
|||
|
>SRPMS</EM
|
|||
|
> packages (so to fill all the 5 CDs otherwise the
|
|||
|
script will fail).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The only modification the script went through is a change in its behaviour
|
|||
|
if the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>SRPMS</TT
|
|||
|
> directory is not found (doesn't terminate
|
|||
|
failing, but generates the CDs without source packages) or there is one CD which
|
|||
|
hasn't any package on it (instead of failing, generates an empty directory).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> For Redhat 9 you can find a copy of the script with the same modifications
|
|||
|
applied to the version included in release 8.0 here:
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/splitdistro9"
|
|||
|
TARGET="_top"
|
|||
|
>splitdistro9</A
|
|||
|
>. Everything said
|
|||
|
for Redhat 8.0 in the previous paragraph applies to release 9.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN613"
|
|||
|
></A
|
|||
|
>5.3.3.6. Regenerating the hdlist and hdlist2 files</H4
|
|||
|
><P
|
|||
|
> This is needed to recreate the hdlist and hdlist2 files, using some of
|
|||
|
the informations obtained in the previous steps. There are no differences
|
|||
|
between 7.3, 8.0 and 9 for this execution of the program
|
|||
|
The command to issue is the following:
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ /usr/lib/anaconda-runtime/genhdlist \
|
|||
|
--fileorder /absolute-path-to-toplevel-dir/pkgorder.txt --withnumbers \
|
|||
|
/absolute-path-to-toplevel-dir/i386-disc[1-3]
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
As you can see, there are two new options passed to the program, if you remember
|
|||
|
the first run of it. The first one, <EM
|
|||
|
>--fileorder</EM
|
|||
|
>, tells genhdlist
|
|||
|
to use the file <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>pkgorder.txt</TT
|
|||
|
> we generated in the second
|
|||
|
step (rebuild the installer). This file keeps informations on how the packages
|
|||
|
were split on the different CDs and is used by the installer to determine in which
|
|||
|
order the packages should be installed. Basically, if you avoid using it, you will
|
|||
|
(probably) end up swapping the various CDs many times during the installation.
|
|||
|
The <EM
|
|||
|
>--withnumbers</EM
|
|||
|
> option is needed to associate a CD number to
|
|||
|
every package (as you can see, a wildcard indicating the first 3 iso images is
|
|||
|
used).
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN620"
|
|||
|
></A
|
|||
|
>5.3.3.7. Generating the iso images</H4
|
|||
|
><P
|
|||
|
> Here you will prepare the iso images to be burned on the actual CDs. There are
|
|||
|
two different commands to be used for the first disc and for the rest of them.
|
|||
|
This is due to the need of obtaining a first CD which is bootable. This is
|
|||
|
actually, not strictly necessary, because you could use a boot floppy instead
|
|||
|
of it, but it's definitely a nifty feature (and makes your discs more similar
|
|||
|
in behaviour to the original ones). These are the commands I use to complete
|
|||
|
the task:
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ mkdir /images-destination-dir
|
|||
|
$ mkisofs -r -J -T -v -V "Red Hat 9 (Shrike) disc 1" \
|
|||
|
-c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot \
|
|||
|
-boot-load-size 4 -boot-info-table -o /images-destination-dir/i386-disc1.iso .
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
This is needed to burn the first (bootable) disc for RedHat 8.0 and 9 (with no floppy
|
|||
|
emulation) and is executed from the top level directory of the distribution. The
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>/images-destination-dir</TT
|
|||
|
> directory is
|
|||
|
the container for the five iso images you are generating, and it must exist
|
|||
|
before starting the procedure. The only thing which needs to be changed for Redhat 8.0
|
|||
|
is the volume name (it should be "Red Hat 8.0 (Psyche) disc 1").
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ mkdir /images-destination-dir
|
|||
|
$ mkisofs -r -J -T -v -V "Red Hat 7.3 (Valhalla) disc 1" \
|
|||
|
-c boot.cat -b dosutils/autoboot/boot.img \
|
|||
|
-o /images-destination-dir/i386-disc1.iso .
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
This is needed to burn the first (bootable) disc on 7.3 and is executed from
|
|||
|
the top level directory of the distribution (this time with floppy emulation).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The rest of the images can be written by means of this <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"for"</SPAN
|
|||
|
> loop
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ for i in `echo 2 3 4 5` ; do mkisofs -r -J -T -v \
|
|||
|
-V "Red Hat 9 (Shrike) disc ${i}" \
|
|||
|
-o /images-destination-dir/i386-disc${i}.iso . ; done
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
The loop just presented will prepare the last four images giving them the
|
|||
|
correct numbers. As you can see, there are just two missing options from the
|
|||
|
first run, and, as you can guess, they are needed only to create a bootable
|
|||
|
CD. In <A
|
|||
|
HREF="#ISO-IMAGE-CREATE"
|
|||
|
>Creating the CD iso image</A
|
|||
|
>, you can read a brief explanation of
|
|||
|
the various options and their meanings (most of it was extracted from the man page).
|
|||
|
Again if you are building a Redhat 8.0 you should change the volume name to read
|
|||
|
"Red Hat 8.0 (Psyche) disc ${i}".
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN632"
|
|||
|
></A
|
|||
|
>5.3.3.8. Implant and check the md5 signatures in the iso images</H4
|
|||
|
><P
|
|||
|
> This is actually an optional step but it permits the use of the
|
|||
|
<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"checkmedia"</SPAN
|
|||
|
> option to verify the CDs signatures before installing
|
|||
|
them, so to guarantee their correctness.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The following commands permit to inject and verify an md5 signature on an iso
|
|||
|
image:
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> $ /usr/lib/anaconda-runtime/implantisomd5 iso-image
|
|||
|
$ /usr/lib/anaconda-runtime/checkisomd5 iso-image
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> After completing all these steps, we will find ourselves with the five CD images
|
|||
|
to burn. Considering that typing all this stuff is a bit time consuming, in the
|
|||
|
next section is presented a script, which will complete all of the listed
|
|||
|
operations in a single run (do not forget to configure the parameters properly).
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="UPDATEBUILD-SCRIPT"
|
|||
|
></A
|
|||
|
>5.3.3.9. Putting all the steps together</H4
|
|||
|
><P
|
|||
|
> The
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/updateBuild.sh"
|
|||
|
TARGET="_top"
|
|||
|
> updateBuild.sh</A
|
|||
|
> script will execute all the steps needed to rebuild the
|
|||
|
distribution CDs for RedHat 7.3, 8.0 or 9 in a single run (as root). Before using this
|
|||
|
script you have to configure the <A
|
|||
|
HREF="rhcd-scripts/rhcd.conf"
|
|||
|
TARGET="_top"
|
|||
|
> rhcd.conf</A
|
|||
|
> configuration file after exporting a <EM
|
|||
|
>RHCDPATH</EM
|
|||
|
>
|
|||
|
variable pointing to the directory where this file is. If you want to include
|
|||
|
a modified <EM
|
|||
|
>comps.xml</EM
|
|||
|
> (or <EM
|
|||
|
>comps</EM
|
|||
|
>)
|
|||
|
file in your CDs as explained in <A
|
|||
|
HREF="#COMPS-FILE"
|
|||
|
>The comps file</A
|
|||
|
>, you should
|
|||
|
copy it into the location defined by means of the
|
|||
|
<EM
|
|||
|
>COMPSFILE</EM
|
|||
|
> variable now (before executing the script).
|
|||
|
Don't forget to add the modified <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>splitdistro</TT
|
|||
|
> script
|
|||
|
to the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>/usr/lib/anaconda-runtime</TT
|
|||
|
>
|
|||
|
directory if you need it.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> # export RHCDPATH=/home/luigi/tmp/rhcd-scripts
|
|||
|
# sh updateBuild.sh
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><HR><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="BURN-CD"
|
|||
|
></A
|
|||
|
>6. Burning the CD(s)</H1
|
|||
|
><P
|
|||
|
> This is composed by an optional and a required steps. Remember that,
|
|||
|
probably, you have to be <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"root"</SPAN
|
|||
|
> on your machine to run
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>cdrecord </TT
|
|||
|
>.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN658"
|
|||
|
></A
|
|||
|
>6.1. Test the image(s)</H2
|
|||
|
><P
|
|||
|
> If you're paranoid, you can test your new disk image(s) by mounting it. If you
|
|||
|
forgot to fix the file permissions or set the rock ridge extensions then
|
|||
|
the error will be obvious here since the file names and directory structure
|
|||
|
will be wrong. The (optional) test can be done by issuing the command:
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> # mount -t iso9660 -o ro,loop=/dev/loop0 iso-image /mnt/cdrom
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Where <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"iso-image"</SPAN
|
|||
|
> is the name you gave to the iso image file
|
|||
|
to be mounted (which is the only one for releases up to and including 6.2).
|
|||
|
When you're done, don't forget to unmount it
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> # umount /mnt/cdrom
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN667"
|
|||
|
></A
|
|||
|
>6.2. Burn the disk(s)</H2
|
|||
|
><P
|
|||
|
> Be sure to set the correct parameters for your device. This command, for example, is
|
|||
|
for a 4X CDR, which is quite slow, by the way. Moreover, it is assumed that the CD writer
|
|||
|
is on SCSI bus 0, with ID number 0 and LUN 0 (you can obtain these values by issuing
|
|||
|
a <EM
|
|||
|
>cdrecord -scanbus</EM
|
|||
|
> and assign them to the
|
|||
|
<EM
|
|||
|
>-dev=</EM
|
|||
|
> parameter).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> # cdrecord -v speed=4 dev=0,0,0 /images-destination-dir/disc1.img
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><HR><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="COMPS-FILE"
|
|||
|
></A
|
|||
|
>7. The comps file</H1
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file defines how the packages are bundled during
|
|||
|
the installation. In the Red Hat distribution, this is done according to the
|
|||
|
functionality they provide, for example:
|
|||
|
<P
|
|||
|
></P
|
|||
|
><UL
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Printer Support</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>X Window System</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>GNOME</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>KDE</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Mail/WWW/News Tools</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>...</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Kernel Development</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Extra Documentation</P
|
|||
|
></LI
|
|||
|
></UL
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Sometime during the installation process, the user is presented with a
|
|||
|
dialog called "Components to install". Some of the components have been
|
|||
|
preselected, and others not. The last item on the components list is called
|
|||
|
"Everything".
|
|||
|
On the dialog box, there is also an option that enables the user to
|
|||
|
customize exactly what packages will be installed. Customizing the
|
|||
|
installation by hand, or selecting "Everything" in the components list is
|
|||
|
the only way to have your own packages installed unless you modify the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>RedHat/base/comps</TT
|
|||
|
> file.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN697"
|
|||
|
></A
|
|||
|
>7.1. Format of <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file in RedHat versions < 6.1</H2
|
|||
|
><P
|
|||
|
> The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file currently starts with a header describing
|
|||
|
the version of the comps format, followed by an empty line.
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> 0.1
|
|||
|
<empty line>
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> After this, the components are listed, separated by empty lines:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> <component 1>
|
|||
|
<empty line>
|
|||
|
<component 2>
|
|||
|
<empty line>
|
|||
|
....
|
|||
|
<component n>
|
|||
|
<empty line>
|
|||
|
EOF
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Each component has the following definition:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> (0|1) (--hide)? <name>
|
|||
|
<RPM 1>
|
|||
|
<RPM 2>
|
|||
|
...
|
|||
|
<RPM n>
|
|||
|
end
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Before the name of each component, 0 or 1 is given. A value of 1 here means
|
|||
|
that the component is chosen by default, and 0 means it's not. The option
|
|||
|
<EM
|
|||
|
>--hide</EM
|
|||
|
> means that you will not see the entry, unless you
|
|||
|
choose <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"expert"</SPAN
|
|||
|
> installation. The first component is called
|
|||
|
<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
>, and that is special, in the sense that it
|
|||
|
<EM
|
|||
|
>must</EM
|
|||
|
> be present and it does not show up in the dialog
|
|||
|
(you can't deselect the base installation, which makes sense...). Next
|
|||
|
follows a list of rpm packages belonging to that component.
|
|||
|
Note that this is the package name stored <EM
|
|||
|
>in the rpm file</EM
|
|||
|
>,
|
|||
|
and <EM
|
|||
|
>not</EM
|
|||
|
> any part of the file name of the package (although
|
|||
|
it should be the same by convention).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> By adding your packages to the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file, you can customize
|
|||
|
your own distribution, and make sure that your packages will be installed by default.
|
|||
|
One thing to be careful about is interdependence among your packages, but here, you
|
|||
|
are on your own :-) A word of warning: be careful not to add or remove extra whitespace
|
|||
|
in the file. Examine the existing <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file (make a copy of
|
|||
|
the original) to see how it's done (or check
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>i386/misc/src/install/pkgs.c</TT
|
|||
|
> if you want to see how the file
|
|||
|
is parsed).
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN718"
|
|||
|
></A
|
|||
|
>7.2. Format of comps file in RedHat version 6.1</H2
|
|||
|
><P
|
|||
|
> With RedHat version 6.1, the format of the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file has changed.
|
|||
|
The decoding takes place in
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>${RHROOT}/${ARCH}/misc/src/anaconda/comps.py</TT
|
|||
|
>. I didn't
|
|||
|
analyze yet this python script and the following rules were obtained only by
|
|||
|
reading the file and testing some configurations for it.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> In release 6.1, the definition of <EM
|
|||
|
>component</EM
|
|||
|
> is extended to
|
|||
|
include some more optional elements beside the <EM
|
|||
|
><RPM></EM
|
|||
|
>
|
|||
|
ones. These elements are:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> <arch-dependent-RPM 1>
|
|||
|
...
|
|||
|
<arch-dependent-RPM n>
|
|||
|
<required-component 1>
|
|||
|
...
|
|||
|
<required-component n>
|
|||
|
<component-dependent-RPM 1>
|
|||
|
...
|
|||
|
<component-dependent-RPM n>
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> An <arch-dependent-RPM> defines a dependency between a package and specific
|
|||
|
architecture and has the following definition:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> (!)?arch: <RPM>
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> So it can, for example, present itself, in the real world, as:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> !alpha: kernelcfg
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
which means: if architecture is not alpha then install package
|
|||
|
<EM
|
|||
|
>kernelcfg</EM
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Or as:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> i386: mkbootdisk
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
which means if architecture is i386 then install package
|
|||
|
<EM
|
|||
|
>mkbootdisk</EM
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> A <required-component1> enforces the dependency from another component and is
|
|||
|
defined as:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> @ <component>
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> So, for example, if inside a component definition you find the following line:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> @ Networked Workstation
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
it means that the component itself needs the installation of another component
|
|||
|
named <EM
|
|||
|
>Networked Workstation</EM
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> A <component-dependent-RPM> is used to select the installation of some
|
|||
|
additional packages for a component, given the presence of another component.
|
|||
|
Its definition is as follows:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> ? <component> {
|
|||
|
<RPM 1>
|
|||
|
...
|
|||
|
<RPM n>
|
|||
|
}
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> So if, for example, in a component definition, you happen to read the following
|
|||
|
lines:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> ? KDE {
|
|||
|
kpppload
|
|||
|
}
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
then if the <EM
|
|||
|
>KDE</EM
|
|||
|
> component is installed, the package
|
|||
|
<EM
|
|||
|
>kpppload</EM
|
|||
|
> will be installed together with the packages
|
|||
|
included in the component the definition was found in.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN746"
|
|||
|
></A
|
|||
|
>7.3. Format of comps file in RedHat version 6.2</H2
|
|||
|
><P
|
|||
|
> With RedHat version 6.2, the format of the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file
|
|||
|
has, apparently, changed just slightly. The decoding takes place in
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>${RHROOT}/${ARCH}/misc/src/anaconda/comps.py</TT
|
|||
|
> even in this
|
|||
|
case. Once again, I didn't analyze yet this python script and the following rules
|
|||
|
were obtained only by reading the file and testing some configurations for it.
|
|||
|
</P
|
|||
|
><P
|
|||
|
>
|
|||
|
In release 6.2, the definition of component is extended to include two more
|
|||
|
optional elements which are:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> <lang-dependent-RPM 1>
|
|||
|
...
|
|||
|
<lang-dependent-RPM n>
|
|||
|
<arch-dependent-component 1>
|
|||
|
...
|
|||
|
<arch-dependent-component n>
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> A <EM
|
|||
|
><lang-dependent-RPM></EM
|
|||
|
> is needed to specify the
|
|||
|
installation of a package in case a specific language was selected. It's
|
|||
|
defined as:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> (lang <language>): <RPM>
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> For example, the following line:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> (lang ja_JP)): locale-ja
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
means: if the Japanese language is selected, then install the
|
|||
|
<EM
|
|||
|
>locale-ja</EM
|
|||
|
> package together with the other packages installed
|
|||
|
for the current component.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> An <EM
|
|||
|
><arch-dependent-component></EM
|
|||
|
> extends the concept of
|
|||
|
<EM
|
|||
|
><arch-dependent-RPM></EM
|
|||
|
> introduced in release 6.1 to an
|
|||
|
entire component, as you can understand reading the definition:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> (!)?arch: <component>
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN763"
|
|||
|
></A
|
|||
|
>7.4. Format of comps file in RedHat version 7.3</H2
|
|||
|
><P
|
|||
|
> With RedHat version 7.3, the format of the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file
|
|||
|
has gained some more syntactical power. The decoding takes place (again) in
|
|||
|
the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps.py</TT
|
|||
|
> script, which you can now find in the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>/usr/lib/anaconda/</TT
|
|||
|
> directory if you have installed the
|
|||
|
<EM
|
|||
|
>anaconda</EM
|
|||
|
> package. The dependencies on a language or an
|
|||
|
architecture by a component or a package can now be joined with the
|
|||
|
<EM
|
|||
|
>and</EM
|
|||
|
> operator. For example:
|
|||
|
<TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> (arch !s390 and arch !s390x and arch !ia64): readline2.2.1
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> which means if architecture is not any of s390, s390x, ia64 then install
|
|||
|
the package readline2.2.1. This can be done with components instead of
|
|||
|
packages and languages instead of architectures. All this, is definitely more
|
|||
|
than enough for the simple examples of customization of the default installation
|
|||
|
which will be presented in the next section.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><HR><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="CUSTOM-COMPS-RH73"
|
|||
|
></A
|
|||
|
>7.4.1. Customizing the default installation of RedHat version 7.3</H3
|
|||
|
><P
|
|||
|
> The example we will go through in this section implies modifications to the
|
|||
|
<EM
|
|||
|
>comps</EM
|
|||
|
> file to change the default values for packages
|
|||
|
installation. I usually prefer, in fact, particularly in certain situations a
|
|||
|
default installation including only the base packages, with some slight
|
|||
|
alterations to some of them. In the first of the presented examples, we will
|
|||
|
build a default installation which has the <EM
|
|||
|
>libsafe</EM
|
|||
|
> added
|
|||
|
to the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> component and most of the packages which are usually
|
|||
|
installed by default are deselected, so to build a minimal installation. In the
|
|||
|
second of the examples, we will modify some of the components to build another
|
|||
|
minimal installation which fits (this time, almost perfectly) our needs (they are,
|
|||
|
actually, my needs, your mileage may definitely vary). If you want to include a
|
|||
|
modified <EM
|
|||
|
>comps</EM
|
|||
|
> file in your CDs, you should copy
|
|||
|
it into the main tree just before starting the operations described in
|
|||
|
<A
|
|||
|
HREF="#RH73-REBUILD"
|
|||
|
>Rebuilding the 7.3/8.0 installer</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN781"
|
|||
|
></A
|
|||
|
>7.4.1.1. Adding RPMS and deselecting default components</H4
|
|||
|
><P
|
|||
|
> To customize your installation this way, you have to edit the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file with your favourite text editor (pay
|
|||
|
attention not to leave harmful spaces or tabs in the file) and move it
|
|||
|
to the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>Redhat/base</TT
|
|||
|
> directory overwriting the original
|
|||
|
one.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> In the <A
|
|||
|
HREF="rhcd-scripts/comps/comps.1"
|
|||
|
TARGET="_top"
|
|||
|
> first comps file</A
|
|||
|
> included, the <EM
|
|||
|
>libsafe</EM
|
|||
|
>
|
|||
|
package was added to the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base system"</SPAN
|
|||
|
> component and almost
|
|||
|
every component was deselected so to have a default installation comprising
|
|||
|
only two hundred packages (I know they can still be too many...).
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN790"
|
|||
|
></A
|
|||
|
>7.4.1.2. Modify some of the standard components</H4
|
|||
|
><P
|
|||
|
> In the <A
|
|||
|
HREF="rhcd-scripts/comps/comps.2"
|
|||
|
TARGET="_top"
|
|||
|
> second comps file</A
|
|||
|
> included, we build on the previous setup and strip
|
|||
|
down the default installation a bit more (this time there will be only 154 packages
|
|||
|
in the default installation). Some of the groups have been splitted to give
|
|||
|
the installation some more granularity. All the modifications you do should
|
|||
|
take into account the interdependencies among packages and the applications used
|
|||
|
during the installation phases (you cannot remove <EM
|
|||
|
>kudzu</EM
|
|||
|
>, for
|
|||
|
example, from the <EM
|
|||
|
>Base</EM
|
|||
|
> component, even if you can do it after
|
|||
|
installation). It must be said that similar results can be obtained using
|
|||
|
<EM
|
|||
|
>kickstart</EM
|
|||
|
>. For more informations about it, you can read
|
|||
|
<A
|
|||
|
HREF="http://www.redhat.com/docs/manuals/linux/RHL-7.3-Manual/custom-guide/ch-kickstart2.html"
|
|||
|
TARGET="_top"
|
|||
|
>
|
|||
|
The RedHat Linux Customization Guide</A
|
|||
|
>.
|
|||
|
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN798"
|
|||
|
></A
|
|||
|
>7.5. Format of comps file in RedHat version 8.0 and 9</H2
|
|||
|
><P
|
|||
|
> With RedHat version 8.0 and 9, the format of the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps</TT
|
|||
|
> file
|
|||
|
has changed completely and now an XML file, whose name is <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps.xml</TT
|
|||
|
>,
|
|||
|
is used. Details on the file syntax can be found in the
|
|||
|
<A
|
|||
|
HREF="http://rhlinux.redhat.com/anaconda/comps.html"
|
|||
|
TARGET="_top"
|
|||
|
>anaconda comps</A
|
|||
|
> section
|
|||
|
of the RedHat website.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><HR><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="CUSTOM-COMPS-RH80"
|
|||
|
></A
|
|||
|
>7.5.1. Customizing the default installation of RedHat version 8.0</H3
|
|||
|
><P
|
|||
|
> We will now reproduce the examples presented for release 7.3 taking into account
|
|||
|
the modifications the various groups were submitted to. The most important group
|
|||
|
(the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> group) is splitted here in two groups which are named
|
|||
|
<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> and <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Core"</SPAN
|
|||
|
>. The <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> group should
|
|||
|
represent the minimal possible installation.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN811"
|
|||
|
></A
|
|||
|
>7.5.1.1. Our first example revisited for Redhat 8.0</H4
|
|||
|
><P
|
|||
|
> This time, to customize your installation you have to edit the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-milan.xml.in</TT
|
|||
|
> file with your favourite text editor.
|
|||
|
This file can be found in the
|
|||
|
<A
|
|||
|
HREF="http://rhlinux.redhat.com/anaconda/comps-8.0.tar.gz"
|
|||
|
TARGET="_top"
|
|||
|
> comps-8.0.tar.gz</A
|
|||
|
> archive found on the Redhat website. To add the
|
|||
|
packages information to the file you create, you need to have the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-extras</TT
|
|||
|
> rpm package installed. The commands
|
|||
|
to be issued to complete the operation are listed in
|
|||
|
<A
|
|||
|
HREF="#UPD-COMPS.XML"
|
|||
|
>Updating comps.xml</A
|
|||
|
> and in the
|
|||
|
<A
|
|||
|
HREF="http://rhlinux.redhat.com/anaconda/comps.html"
|
|||
|
TARGET="_top"
|
|||
|
>documentation</A
|
|||
|
>.
|
|||
|
After you create the file, you have to copy it to the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>Redhat/base</TT
|
|||
|
> directory overwriting the original one.
|
|||
|
If you are using <A
|
|||
|
HREF="#UPDATEBUILD-SCRIPT"
|
|||
|
>the updateBuild.sh script</A
|
|||
|
>, you should only copy the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-milan.xml</TT
|
|||
|
>, (after having modified the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-milan.xml.in</TT
|
|||
|
> found in the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-8.0.tar.gz</TT
|
|||
|
> tar/gzip package and issued the
|
|||
|
<EM
|
|||
|
>make</EM
|
|||
|
> command), to the destination you should have
|
|||
|
already configured in the <EM
|
|||
|
>COMPSFILE</EM
|
|||
|
> variable
|
|||
|
(<A
|
|||
|
HREF="rhcd-scripts/rhcd.conf"
|
|||
|
TARGET="_top"
|
|||
|
>rhcd.conf</A
|
|||
|
>).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> In the <A
|
|||
|
HREF="rhcd-scripts/comps/comps-milan.xml.in.1"
|
|||
|
TARGET="_top"
|
|||
|
> first comps file</A
|
|||
|
> included the <EM
|
|||
|
>libsafe</EM
|
|||
|
>
|
|||
|
package was added to the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> group (component) and almost
|
|||
|
every group (component) was deselected, apart from <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> and
|
|||
|
<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Core"</SPAN
|
|||
|
>, so to have a default installation comprising
|
|||
|
only ~220 packages (probably too many, again...).
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN833"
|
|||
|
></A
|
|||
|
>7.5.1.2. Our second example revisited for Redhat 8.0</H4
|
|||
|
><P
|
|||
|
> In the <A
|
|||
|
HREF="rhcd-scripts/comps/comps-milan.xml.in.2"
|
|||
|
TARGET="_top"
|
|||
|
> second comps file</A
|
|||
|
> included, we build on the previous setup and strip
|
|||
|
down the default installation a bit more (this time, there will be only 158 packages
|
|||
|
in the default installation). Once again, similar results can be obtained using
|
|||
|
<EM
|
|||
|
>kickstart</EM
|
|||
|
>, for more informations about it you can read
|
|||
|
<A
|
|||
|
HREF="http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/ch-kickstart2.html"
|
|||
|
TARGET="_top"
|
|||
|
>
|
|||
|
The RedHat Linux Customization Guide</A
|
|||
|
>. In the example, I didn't unselect
|
|||
|
completely the installation of the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> group, because there are
|
|||
|
too many packages I usually need, so I just unselected the default installation
|
|||
|
for these packages making them optional. As you can see, even the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>redhat-logos</TT
|
|||
|
> package in the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Core"</SPAN
|
|||
|
> group was made
|
|||
|
optional. Considering that all of the packages in this group, together, should
|
|||
|
represent the <EM
|
|||
|
>smallest possible</EM
|
|||
|
> installation, you probably
|
|||
|
don't want to do this (by the way my CDs work even with this, there should be
|
|||
|
some failure I cannot see, yet). The <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>tripwire</TT
|
|||
|
> package was
|
|||
|
also added to the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> group. The last noticeable modification
|
|||
|
was made to the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"dialup"</SPAN
|
|||
|
> group, which will be installed even if
|
|||
|
unselected because the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> group depends on it (as declared in
|
|||
|
the group definition itself). I have selected only some packages I usually need
|
|||
|
from this group for installation and left the rest of them unselected.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><HR><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="CUSTOM-COMPS-RH9"
|
|||
|
></A
|
|||
|
>7.5.2. Customizing the default installation of RedHat version 9</H3
|
|||
|
><P
|
|||
|
> We will reproduce (again) the examples presented for release 7.3/8 taking into
|
|||
|
account the modifications the various groups were submitted to.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN850"
|
|||
|
></A
|
|||
|
>7.5.2.1. Our first example revisited for Redhat 9</H4
|
|||
|
><P
|
|||
|
> As in the case of 8.0, to customize your installation you have to edit the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-milan.xml.in</TT
|
|||
|
> file with your favourite text editor.
|
|||
|
This file can be found in the
|
|||
|
<A
|
|||
|
HREF="rhcd-scripts/comps-9.tar.gz"
|
|||
|
TARGET="_top"
|
|||
|
> comps-9.tar.gz</A
|
|||
|
> file among the script <EM
|
|||
|
>(as I said it is not
|
|||
|
the same you can find on the Redhat website)</EM
|
|||
|
>. To add the packages
|
|||
|
information to the file you create, you need to have the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-extras</TT
|
|||
|
> rpm package installed. The commands
|
|||
|
to be issued to complete the operation are listed in
|
|||
|
<A
|
|||
|
HREF="#UPD-COMPS.XML"
|
|||
|
>Updating comps.xml</A
|
|||
|
> and in the
|
|||
|
<A
|
|||
|
HREF="http://rhlinux.redhat.com/anaconda/comps.html"
|
|||
|
TARGET="_top"
|
|||
|
>documentation</A
|
|||
|
>.
|
|||
|
After you create the file, you have to copy it to the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>Redhat/base</TT
|
|||
|
> directory overwriting the original one.
|
|||
|
If you are using <A
|
|||
|
HREF="#UPDATEBUILD-SCRIPT"
|
|||
|
>the updateBuild.sh script</A
|
|||
|
>, you should only copy the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-milan.xml</TT
|
|||
|
>, (after having modified the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-milan.xml.in</TT
|
|||
|
> found in the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>comps-9.tar.gz</TT
|
|||
|
> tar/gzip package and issued the
|
|||
|
<EM
|
|||
|
>make</EM
|
|||
|
> command), to the destination you should have
|
|||
|
already configured in the <EM
|
|||
|
>COMPSFILE</EM
|
|||
|
> variable
|
|||
|
(<A
|
|||
|
HREF="rhcd-scripts/rhcd.conf"
|
|||
|
TARGET="_top"
|
|||
|
>rhcd.conf</A
|
|||
|
>).
|
|||
|
</P
|
|||
|
><P
|
|||
|
> In the <A
|
|||
|
HREF="rhcd-scripts/comps/comps-milan.xml.in.1-9"
|
|||
|
TARGET="_top"
|
|||
|
> first comps file</A
|
|||
|
> included the <EM
|
|||
|
>libsafe</EM
|
|||
|
>
|
|||
|
package was added to the <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> group (component) and almost
|
|||
|
every group (component) was deselected, apart from <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Base"</SPAN
|
|||
|
> and
|
|||
|
<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Core"</SPAN
|
|||
|
>, so to have a default installation comprising
|
|||
|
only ~240 packages (mmmhhh complexity is raising high...).
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT4"
|
|||
|
><HR><H4
|
|||
|
CLASS="SECT4"
|
|||
|
><A
|
|||
|
NAME="AEN873"
|
|||
|
></A
|
|||
|
>7.5.2.2. Our second example revisited for Redhat 9</H4
|
|||
|
><P
|
|||
|
> In the <A
|
|||
|
HREF="rhcd-scripts/comps/comps-milan.xml.in.2-9"
|
|||
|
TARGET="_top"
|
|||
|
> second comps file</A
|
|||
|
> included, we build on the previous setup and strip
|
|||
|
down the default installation a bit more (this time, there will be only ~175 packages
|
|||
|
in the default installation). This is really similar to the example presented for
|
|||
|
Redhat 8.0, so I will avoid boring you with the same explanations. Once again, similar
|
|||
|
results can be obtained using <EM
|
|||
|
>kickstart</EM
|
|||
|
>, for more informations
|
|||
|
about it you can read
|
|||
|
<A
|
|||
|
HREF="http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/ch-kickstart2.html"
|
|||
|
TARGET="_top"
|
|||
|
>
|
|||
|
The RedHat Linux Customization Guide</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><HR><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="INSTALLATION"
|
|||
|
></A
|
|||
|
>8. Installing from the CD</H1
|
|||
|
><P
|
|||
|
> When installing from the new CD, you may first need to create a bootable
|
|||
|
installation diskette. <EM
|
|||
|
>IMPORTANT: use a NEW, freshly MS-DOS
|
|||
|
formatted diskette!</EM
|
|||
|
>. Using an old, worn-out, faulty diskette
|
|||
|
can result in strange problems during the installation! On a Linux system,
|
|||
|
you can create the diskette using the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>dd</TT
|
|||
|
> command:
|
|||
|
</P
|
|||
|
><P
|
|||
|
> <TABLE
|
|||
|
BORDER="1"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="SCREEN"
|
|||
|
> $ dd if=/mnt/cdrom/images/boot.img of=/dev/fd0 bs=1440k
|
|||
|
</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> On a system running DOS or Windows-9x, you need to use the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>rawrite.exe</TT
|
|||
|
> program, which is found on the CD
|
|||
|
in the <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>dosutils</TT
|
|||
|
> directory. On
|
|||
|
a machine with Windows-9x/Me/NT/2k, you can use the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>rawritewin.exe</TT
|
|||
|
> located in the
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>dosutils/rawritewin</TT
|
|||
|
> directory.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Shut down the machine you want to install on (or do a system upgrade),
|
|||
|
insert the boot diskette and your freshly burned CD, and let the machine
|
|||
|
boot from the diskette. For more information on the installation process,
|
|||
|
see the documents and the
|
|||
|
<A
|
|||
|
HREF="http://www.tldp.org/HOWTO/Installation-HOWTO/index.html"
|
|||
|
TARGET="_top"
|
|||
|
>Installation-HOWTO</A
|
|||
|
>
|
|||
|
or the
|
|||
|
<A
|
|||
|
HREF="http://www.tldp.org/HOWTO/Bootdisk-HOWTO/index.html"
|
|||
|
TARGET="_top"
|
|||
|
>Bootdisk-HOWTO</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN894"
|
|||
|
></A
|
|||
|
>8.1. Booting from a bootable CD</H2
|
|||
|
><P
|
|||
|
> Most modern machines are able to boot directly from a CD, provided it is
|
|||
|
made bootable with the procedure outlined in section <A
|
|||
|
HREF="#ISO-IMAGE-CREATE"
|
|||
|
>Creating the CD iso image</A
|
|||
|
>.
|
|||
|
Often, however, you need to change the setting of the BIOS to make the CD
|
|||
|
drive bootable. See the documentation for your mother board to see how
|
|||
|
it's done.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><HR><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="OTHER-DISTRIBUTIONS"
|
|||
|
></A
|
|||
|
>9. Other Linux distributions</H1
|
|||
|
><P
|
|||
|
> The informations present in the previous versions of the howto (<=1.34), and
|
|||
|
reported in the current document,
|
|||
|
which apply to releases up to and including 6.1 of Redhat Linux, is believed
|
|||
|
to apply to distributions that are Redhat clones such as
|
|||
|
<A
|
|||
|
HREF="http://www.mandrake.com"
|
|||
|
TARGET="_top"
|
|||
|
>Mandrake</A
|
|||
|
>. The procedure is
|
|||
|
reported to be untested (as you can read in the howto itself) though.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Similar considerations apply to the
|
|||
|
<A
|
|||
|
HREF="http://www.linuxppc.org"
|
|||
|
TARGET="_top"
|
|||
|
>LinuxPPC</A
|
|||
|
> distribution for
|
|||
|
Apple PowerMacs. When making a distribution for the PowerMac platform,
|
|||
|
you need to use <A
|
|||
|
HREF="http://rufus.w3.org/linux/RPM/mkhybrid.html"
|
|||
|
TARGET="_top"
|
|||
|
>mkhybrid</A
|
|||
|
>)
|
|||
|
instead of <TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>mkisofs</TT
|
|||
|
> and this should be the only difference.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The informations supplied for the new releases of Redhat (>6.1) shouldn't
|
|||
|
work with Mandrake, which has now a fairly different installer from the
|
|||
|
Redhat one. I really don't know if some other clone of Redhat can have its
|
|||
|
distribution CDs updated this way, but I would be happy if you let me know.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><HR><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="THIS-DOCUMENT"
|
|||
|
></A
|
|||
|
>10. This document...</H1
|
|||
|
><P
|
|||
|
> The SGML source of the most recent version of this document can be
|
|||
|
retrieved from
|
|||
|
<A
|
|||
|
HREF="http://www.tldp.org/HOWTO/RedHat-CD-HOWTO/RedHat-CD-HOWTO.sgml"
|
|||
|
TARGET="_top"
|
|||
|
>here</A
|
|||
|
>.
|
|||
|
The previous version, created by Morten Kjeldgaard, and Peter von der Ah<41>,
|
|||
|
can be found on
|
|||
|
<A
|
|||
|
HREF="http://imsb.au.dk/~mok/linux/doc/RedHat-CD.sgml"
|
|||
|
TARGET="_top"
|
|||
|
>imsb.au.dk</A
|
|||
|
>
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="RELATED-DOC"
|
|||
|
></A
|
|||
|
>10.1. Related documentation</H2
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="AEN914"
|
|||
|
></A
|
|||
|
>10.1.1. Documentation related to the current version</H3
|
|||
|
><P
|
|||
|
>
|
|||
|
The following documents were useful in the creation of this howto:
|
|||
|
</P
|
|||
|
><P
|
|||
|
> The (unofficial) RedHat 7 Customised Installer mini-HOWTO, by Tony Nugent.
|
|||
|
This document is very interesting and useful, so, if you are serious about
|
|||
|
building customized CDs, I strongly suggest you to read it. You can find it on
|
|||
|
<A
|
|||
|
HREF="http://www.linuxworks.com.au/redhat-installer-howto.html"
|
|||
|
TARGET="_top"
|
|||
|
> www.linuxworks.com.au</A
|
|||
|
>
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Miguel Freitas has written RedHat7 CDs mini-Howto, that you can read on this
|
|||
|
<A
|
|||
|
HREF="http://cambuca.ldhs.cetuc.puc-rio.br/RedHat7-CDs-HowTo.html"
|
|||
|
TARGET="_top"
|
|||
|
> website</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Ron Yorston wrote the <A
|
|||
|
HREF="http://www.tigress.co.uk/rmy/rh62/rpmhack.html"
|
|||
|
TARGET="_top"
|
|||
|
> rpmhack</A
|
|||
|
> document, relevant for release 6.2 of Redhat Linux.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Someone (I couldn't find his name) wrote the document
|
|||
|
<A
|
|||
|
HREF="http://www.scyld.com/~pzb/rhcd.html"
|
|||
|
TARGET="_top"
|
|||
|
>Building a Red Hat Linux 6.2
|
|||
|
CDROM</A
|
|||
|
>, useful for release 6.2.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><HR><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="AEN925"
|
|||
|
></A
|
|||
|
>10.1.2. Documentation related to the previous edition</H3
|
|||
|
><P
|
|||
|
>
|
|||
|
Ed Schlunder <zilym@asu.edu> has written a utility called
|
|||
|
<TT
|
|||
|
CLASS="FILENAME"
|
|||
|
>fix-rhcd</TT
|
|||
|
> to let you check your Red Hat Linux
|
|||
|
distribution mirror for matching file sizes, names, permissions,
|
|||
|
and symlinks against an "ls -lNR" listing from the offical Red Hat
|
|||
|
ftp site. Any permissions that are wrong are changed to match the
|
|||
|
<SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"ls"</SPAN
|
|||
|
> listing. See the
|
|||
|
<A
|
|||
|
HREF="http://www.ajusd.org/~edward/fix-rhcd/"
|
|||
|
TARGET="_top"
|
|||
|
>fix-rhcd homepage</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> Rod Smith <smithrod@bellatlantic.net> has written a Do-It-Yourself
|
|||
|
Red Hat Installation guide, which also includes information on creating
|
|||
|
RedHat install CD's. Especially aimed at burning a CD from a non-UNIX
|
|||
|
system. Find it on his
|
|||
|
<A
|
|||
|
HREF="http://members.bellatlantic.net/~smithrod/rhjol.html"
|
|||
|
TARGET="_top"
|
|||
|
>website</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> A document in french <SPAN
|
|||
|
CLASS="QUOTE"
|
|||
|
>"Comment graver un CD de la RedHat 5.x a partir
|
|||
|
de fichiers telecharges sur Internet...''"</SPAN
|
|||
|
> by <skooter@hol.fr> is
|
|||
|
available from
|
|||
|
<A
|
|||
|
HREF="http://linuxfr.org/docs/article/gravure-CD-RH51.html"
|
|||
|
TARGET="_top"
|
|||
|
>linuxfr.org</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> With the sense of the good things in life Jussi Torhonen from Finland
|
|||
|
<jussi.torhonen@tietosavo.fi> tells us
|
|||
|
<A
|
|||
|
HREF="http://www.iwn.fi/~jt/cd/"
|
|||
|
TARGET="_top"
|
|||
|
>Howto make a homebrew</A
|
|||
|
> bootable
|
|||
|
RedHat Linux 5.2 CD-ROM.
|
|||
|
</P
|
|||
|
><P
|
|||
|
> From the LDP project, see the
|
|||
|
<A
|
|||
|
HREF="http://www.linuxdoc.org/HOWTO/CD-Writing-HOWTO.html"
|
|||
|
TARGET="_top"
|
|||
|
>CD-writing HOWTO</A
|
|||
|
>.
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><HR><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="AEN940"
|
|||
|
></A
|
|||
|
>10.2. Acknowledgements</H2
|
|||
|
><P
|
|||
|
> Apart from those mentioned above, thanks are given to the following
|
|||
|
people for valuable input, feedback, discussions and other:
|
|||
|
</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><HR><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="AEN943"
|
|||
|
></A
|
|||
|
>10.2.1. Acknowledgements for the current version</H3
|
|||
|
><P
|
|||
|
> <P
|
|||
|
></P
|
|||
|
><UL
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Morten Kjeldgaard, <mok (at) imsb (dot) au (dot) dk></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Peter von der Ah<41>, <pahe+rhcd (at) daimi (dot) au (dot) dk></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Giulia Tomaselli</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Jacinta Conneely</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Filippo Carcaci</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Guillaume Lelarge <gleu (at) wanadoo (dot) fr></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Alain Portal <aportal (at) univ-montp2 (dot) fr></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>All the people on the anaconda-devel and kickstart mailing lists</P
|
|||
|
></LI
|
|||
|
></UL
|
|||
|
>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><HR><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="AEN963"
|
|||
|
></A
|
|||
|
>10.2.2. Acknowledgements for the previous versions</H3
|
|||
|
><P
|
|||
|
> <P
|
|||
|
></P
|
|||
|
><UL
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Lars Christensen <larsch (at) cs (dot) auc (dot) dk></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Thomas Duffy <tbd (at) cs (dot) brown (dot) edu></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Dawn Endico <dawn (at) math (dot) wayne (dot) edu></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Seva <seva (at) null (dot) cc (dot) uic (dot) edu></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Michael Thomas Cope <mcope (at) orion (dot) ac (dot) hmc (dot) edu></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Charles J. Fisher <charles_fisher (at) bigfoot (dot) com></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Eric Thomas <eric.thomas (at) ericsson (dot) com></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Gordon Yuen <gdccyuen (at) yahoo (dot) com></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
STYLE="list-style-type: opencircle"
|
|||
|
><P
|
|||
|
>Dave Morse <morse (at) nichimen (dot) com></P
|
|||
|
></LI
|
|||
|
></UL
|
|||
|
>
|
|||
|
</P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
></BODY
|
|||
|
></HTML
|
|||
|
>
|