conf/conf.d/fedora-11-gold.cfg |
23
doc/Reference_Manual/en-US/Appendix.xml |
475 +
doc/Reference_Manual/en-US/Author_Group.xml |
16
doc/Reference_Manual/en-US/Book_Info.xml |
37
doc/Reference_Manual/en-US/Preface.xml |
56
doc/Reference_Manual/en-US/Reference_Manual.ent |
5
doc/Reference_Manual/en-US/Reference_Manual.xml |
27
doc/Reference_Manual/en-US/Revision_History.xml |
26
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Compose_Process_Details.xml |
431 +
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Configuration.xml |
280
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Development.xml |
220
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Features.xml |
175
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Frequently_Asked_Questions.xml |
54
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Installation.xml |
104
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Introduction.xml |
71
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Plugins.xml |
131
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Testing.xml |
173
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Tips_and_Tricks.xml |
47
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Tweaking_The_Build_Process.xml |
40
doc/Reference_Manual/en-US/Revisor_Reference_Manual-Using_Kickstart.xml |
118
doc/Reference_Manual/en-US/images/icon.svg |
3936 ++++++++++
doc/Revisor_Documentation/en-US/Appendix.xml |
475 -
doc/Revisor_Documentation/en-US/Author_Group.xml |
16
doc/Revisor_Documentation/en-US/Book_Info.xml |
34
doc/Revisor_Documentation/en-US/Preface.xml |
56
doc/Revisor_Documentation/en-US/Revision_History.xml |
26
doc/Revisor_Documentation/en-US/Revisor_Documentation-Compose_Process_Details.xml |
431 -
doc/Revisor_Documentation/en-US/Revisor_Documentation-Configuration.xml |
280
doc/Revisor_Documentation/en-US/Revisor_Documentation-Development.xml |
220
doc/Revisor_Documentation/en-US/Revisor_Documentation-Features.xml |
175
doc/Revisor_Documentation/en-US/Revisor_Documentation-Frequently_Asked_Questions.xml |
54
doc/Revisor_Documentation/en-US/Revisor_Documentation-Installation.xml |
104
doc/Revisor_Documentation/en-US/Revisor_Documentation-Introduction.xml |
71
doc/Revisor_Documentation/en-US/Revisor_Documentation-Plugins.xml |
131
doc/Revisor_Documentation/en-US/Revisor_Documentation-Testing.xml |
173
doc/Revisor_Documentation/en-US/Revisor_Documentation-Tips_and_Tricks.xml |
47
doc/Revisor_Documentation/en-US/Revisor_Documentation-Tweaking_The_Build_Process.xml |
40
doc/Revisor_Documentation/en-US/Revisor_Documentation-Using_Kickstart.xml |
118
doc/Revisor_Documentation/en-US/Revisor_Documentation.ent |
5
doc/Revisor_Documentation/en-US/Revisor_Documentation.xml |
27
doc/Revisor_Documentation/en-US/images/icon.svg |
3936 ----------
revisor/image.py |
2
revisor/pungi.py |
4
unity/conf/f11-install-single-cd.conf |
3
44 files changed, 6445 insertions(+), 6428 deletions(-)
New commits:
commit 2189919f4e2ffe0da241317ca3d234118e003181
Author: Jeroen van Meeuwen (Fedora Unity) <kanarip(a)fedoraunity.org>
Date: Thu Jun 18 16:05:22 2009 +0200
Fix references to files
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Compose_Process_Details.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Compose_Process_Details.xml
deleted file mode 100644
index 6b12e6c..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Compose_Process_Details.xml
+++ /dev/null
@@ -1,431 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Compose_Process_Details">
- <title>Compose Process Details</title>
- <para>
- This chapter lists the details of the compose process as well as dives deep into
the features of Revisor.
- </para>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Overview">
- <title>Overview</title>
- <titleabbrev
id="Compose_Process_Details-Overview">Overview</titleabbrev>
- <para>
- Of course, the compose process for installation media is a little different
then the compose process for live media.
- </para>
- <para>
- When composing, Revisor starts out doing the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Revisor initiates and loads plugins, options, and defaults. At
this point, Revisor has a so-called <emphasis>ConfigStore</emphasis> that
holds all options Revisor knows about.
- </para>
- </listitem>
- <listitem>
- <para>
- Revisor reads the options from the command-line.
- </para>
- </listitem>
- <listitem>
- <para>
- Revisor reads the configuration file specified with the
<code>--config</code> command-line parameter, or uses it's builtin
default, <filename>/etc/revisor/revisor.conf</filename>.
- </para>
- </listitem>
- <listitem>
- <para>
- Revisor reads the global <code>[revisor]</code>
section for all settings available in it's
<emphasis>ConfigStore</emphasis> and sets those configured in the global
section. Remember that if an option is not available in the
<emphasis>ConfigStore</emphasis> but is configured in the global configuration
section, it is ignored.
- </para>
- </listitem>
- <listitem>
- <para>
- If a model is specified in the configuration file's global
section <code>[revisor]</code>, Revisor will set that model to be used and
loads it.
- </para>
- </listitem>
- <listitem>
- <para>
- If a model has been specified on the command-line, with option
<code>--model</code>, Revisor loads that model.
- </para>
- </listitem>
- <listitem>
- <para>
- When loading the model, Revisor again iterates over all the
settings that are in the <emphasis>ConfigStore</emphasis>, checks if the
setting has been configured in the model section, and adjusts the setting in the
<emphasis>ConfigStore</emphasis> if necessary. Again remember that if the
<emphasis>ConfigStore</emphasis> does not know about one or the other option
already, that setting is ignored.
- </para>
- </listitem>
- <listitem>
- <para>
- Now that the defaults and configuration file settings have been
applied to the <emphasis>ConfigStore</emphasis>, it is time for Revisor to
look at the options specified on the command-line to see if you wanted to override
anything.
- </para>
- </listitem>
- <listitem>
- <para>
- While loading each configuration setting available in the global
<code>[revisor]</code>, model-specific sections and/or command-line, Revisor
checks every settings against a function that is specifically written to check such
setting. For example, the label of an ISO cannot be longer then 32 characters.
- </para>
- </listitem>
- <listitem>
- <para>
- Especially in CLI mode, these settings build up the task list for
Revisor. If there's nothing to do, Revisor will throw an error explaining what's
missing. If there's things to do that cannot be done in one run, Revisor will throw an
error explaining that.
- </para>
- </listitem>
- <listitem>
- <para>
- In Graphical User Interface mode however, if the settings loaded
so far are all OK, the GUI will start. Since you can still adjust a few settings from
within the GUI, the settings loaded so far will be the defaults for configuration settings
that have a dialog for you to adjust them with, throughout the rest of the process.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Installation_Media">
- <title>Installation Media</title>
- <para>
- As we've explained before, composing installation media is a little
different then composing live media. That's not just because installation media should
start an installation procedure and live media should show you a nice, shiny,
fully-functional Desktop.
- </para>
- <para>
- For one, installation media allows split media. This means that Revisor can
span the payload of the product over multiple ISO images or multiple discs, if you will.
When composing installation media, Revisor basically does the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Of course, Revisor goes through the loading of configuration
options mentioned in the <xref
linkend="Revisor_Reference_Manual-Compose_Process_Details-Overview"
endterm="Compose_Process_Details-Overview" />.
- </para>
- </listitem>
- <listitem>
- <para>
- When you're done specifying options in the GUI, or when
Revisor thinks it can go ahead using the options specified in CLI mode, it takes the list
of packages selected from either the GUI or the kickstart
<code>%packages</code> manifest.
- </para>
- <para>
- Not getting too deep into details here, yet, because some of
these things are routines shared with other composing modes, but here's a few
additional considerations Revisor makes when doing the package selection.
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Normally, a kickstart
<code>%packages</code> manifest only allows you to select package
<emphasis>names</emphasis>. With Revisor though, you can select exact package
<emphasis>NEVRA</emphasis> to select a certain version or architecture for the
package that you want. Additionally, if a package is not available, Revisor searches the
<emphasis>Provides</emphasis> of the available packages.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Live_Media">
- <title>Live Media</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Respin_Mode">
- <title>Respin Mode</title>
- <para>
- Revisor has a respin mode that in some aspects differs from the regular
routines. It is intended to reflect behaviour of tools in use by the Fedora Project
Release Engineering team as closely as possible.
- </para>
- <para>
- Re-Spin mode only affects installation media products.
- </para>
- <para>
- In Re-Spin mode, the way the RPM payload is determined from kickstart differs
from Revisor's normal procedures. See <xref
linkend="Revisor_Reference_Manual-Using_Kickstart" /> for more details on
using a kickstart package manifest.
- </para>
- <para>
- A kickstart file's so-called <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-package_manifest" />
usually looks like:
- </para>
- <para>
- <screen>%packages
-@group1
-@group2 --nodefaults
-@group3 --optional
-package1
-package2
--package3
-%end</screen>
- </para>
- <para>
- Which tells us the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Include all mandatory and default packages from group1
- </para>
- </listitem>
- <listitem>
- <para>
- Include all mandatory packages from group2
- </para>
- </listitem>
- <listitem>
- <para>
- Include all mandatory, default and optional packages from group3
- </para>
- </listitem>
- <listitem>
- <para>
- Include package1, and package2
- </para>
- </listitem>
- <listitem>
- <para>
- Exclude package3
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Depending on how you use this instructions or information, there is a slight
difference in the package set that ends up on the media you compose.
- </para>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Respin_Mode-Selecting_Groups">
- <title>Selecting Groups</title>
- <para>
- Selecting groups has the following logic: When you load a repository you
may also load the groups file (often referred to as 'comps' or
'comps.xml'). This comps file is an XML file with categories, groups (per
category), and per group:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- a list of mandatory packages. If you select or include the
group, these packages come with it.
- </para>
- </listitem>
- <listitem>
- <para>
- a list of default packages. If you select or include the
group, these packages will come with it as a default. If you only want the mandatory,
minimum set of packages for this group, in a kickstart package manifest append
<code>--nodefaults</code> to the group line or in the Revisor GUI,
right-click on the group and choose <emphasis>Deselect all
packages</emphasis>.
- </para>
- </listitem>
- <listitem>
- <para>
- a list of optional packages. If you select a group you have
not yet selected these packages. To select the optional packages of a group, in a
kickstart package manifest append <code>--optional</code> to the group line or
in the Revisor GUI, right-click on the group and choose <emphasis>Select all
optional packages</emphasis>.
- </para>
- </listitem>
- <listitem>
- <para>
- a list of conditionals. If you select this group, these
conditionals are thrown into the package sack and transaction information and include or
exclude other packages. Suppose you select the '@nl-support' or “Dutch Support”
group from the Languages or Localization category, you would end up with support for the
Dutch language in all applications that have that kind of support.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Respin_Mode-Select_Matching_Packages">
- <title>Select Matching Packages</title>
- <para>
- This is the logic Revisor applies when running in Re-Spin mode (on the
CLI, specify <code>--respin</code>). It imitates the behavior pungi has, and
thus enables you to copy that behavior. Note that <code>--respin</code> has
other implications as well.
- </para>
- <para>
- First of all, it iterates the groups in the kickstart package manifest.
For each group, it appends the names of the mandatory packages to a list, and depending on
the additional parameters specified with that group (<code>--nodefaults</code>
or <code>--optional</code>), appends the names of the other packages in that
group as well.
- </para>
- <para>
- Then it iterates over the package names in the package manifest. These
package names are appended to the same list of package names too. This includes package
'names' with some sort of wildcard (?, or *).
- </para>
- <para>
- Then it iterates over all the excluded packages, appending each of those
to the YUM configuration exclude list.
- </para>
- <para>
- Now that Revisor has a very simple, flat list of package names, it uses
YUM's internal matching logic 5 to get what packages in the repositories matched
exactly (by name), matched (by wildcard) and did not match at all. Revisor then selects
the exact matches and matches, adding them to the transaction.
- </para>
- </section>
- </section>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving">
- <title>Dependency Resolving</title>
- <indexterm>
- <primary>Dependency Resolving</primary>
- </indexterm>
- <para>
- Dependency resolving is the area where some of the efficiency Revisor can
gain for you comes from. While of course there is specific reasons to do things one way,
or the other, most people I speak to about Revisor, it is not very clear why, or what
Revisor does in this area. First of all, there's two ways of resolving dependencies:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
- <title>Inclusive Dependency Resolving</title>
- <indexterm>
- <primary>Dependency Resolving</primary>
- <secondary>Inclusive</secondary>
- </indexterm>
- <para>
- Iterate all packages in the transaction and list their
requirements, then for each of those requirements, find all packages that provide a
matching capability, add those packages to the transaction, and don't forget to add
the requirements those packages have themselves, back into the pile of (unmet)
requirements.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>Exclusive Dependency Resolving</title>
- <indexterm>
- <primary>Dependency Resolving</primary>
- <secondary>Inclusive</secondary>
- </indexterm>
- <para>
- Iterate all the packages and for each of the requirements
found, find the best package that meets the requirement. This is also YUMs default
behavior. Anaconda uses YUM during the installation, and this is the behaviour of YUM used
during the installation.
- </para>
- </formalpara>
- </listitem>
- </orderedlist>
- </para>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Inclusive">
- <title>Inclusive Dependency Resolving</title>
- <para>
- Hypothetically, you could describe inclusive dependency as follows:
- </para>
- <para>
- <screen>final_packages = []
-more_to_do = True
-while more_to_do:
-more_to_do = False
-for package in packages:
- if package in final_packages:
- continue
-
- dependencies = find_package_dependencies()
- for dependency in dependencies:
- pulled_in_package = pull_in_dependency()
- if pulled_in_package not in final_packages:
- packages.append(pulled_in_package)
- more_to_do = True</screen>
- </para>
- <para>
- So, what does this mean? Basically, it means that if there is a
requirement for a capability, all packages providing that capability are being pulled in.
Now imagine package 'foo' requires capability 'web-client'. There's a
number of packages providing that capability, right? So you get Firefox, lynx, elinks,
konqueror, safari, Netscape, Internet Explorer, emacs, for free! All of those pull in
their own dependencies also, of course.
- </para>
- <note>
- <para>
- If you catch this before it catches you, you can prevent the packages
from being pulled in during dependency resolving by not making the package available in
the <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-Package_Sack" /> in
the first place, using the <literal>-firefox</literal> syntax in the kickstart
package manifest, and setting
<literal>kickstart_uses_pkgsack_excludes</literal> to 1.
- </para>
- </note>
- <note>
- <para>
- You may have thought of it; pulling in packages this way may give you
a package set (or <emphasis>RPM payload</emphasis>) that has conflicting
packages. Imagine package <application>foo</application> requiring capability
<application>bar</application>, which is provided by two packages that
conflict with one another (either on explicit <literal>Conflicts:</literal>
RPM header or file level). Both will be pulled in, hence disabling you to install
everything (<literal>'*'</literal> or -previously-
<literal>@Everything</literal> in the kickstart package manifest).
- </para>
- </note>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Makes_Sense">
- <title>When This Makes Sense</title>
- <para>
- If you are composing a large distribution of which 3 million users in
even so many different situations having so many different expectations and desires, you
will want this behaviour, since you won't be able to determine which one of the
packages for each capability someone in that group wants, and which one may not want. Or,
in case of upgrades, what the system needs. Shipping them all on the same media is the
best solution in these cases.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Does_Not_Make_Sense">
- <title>When This Does Not Make Sense</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- When creating installation media to be installed
unattended, or to be used in conjunction with deployment strategies
- </para>
- </listitem>
- <listitem>
- <para>
- When creating installation media to be upgrading PCs you
have controlled from the beginning, such as in a company
- </para>
- </listitem>
- <listitem>
- <para>
- Installation for a small group of users or systems
- </para>
- </listitem>
- <listitem>
- <para>
- When creating minimal installation media, or media with a
minimal RPM payload.
- </para>
- </listitem>
- <listitem>
- <para>
- When creating installation media that is to be used with
installing "Everything" in the RPM payload.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Exclusive">
- <title>Exclusive Dependency Resolving</title>
- <para>
- Exclusive dependency resolving is what YUM does when you execute a
<application>yum install</application>. Unless you've specified one of the
packages satisfying any of the dependencies in the transaction, YUM is going to look up
the best match for you. This results in the installation of only one package providing the
requirement(s) of other packages, rather then all packages providing said requirement
being installed.
- </para>
- <para>
- As an example, imagine you install a package foo which requires
capability web-client. Using exclusive dependency resolving, YUM would select one package
providing the web-client capability whereas inclusive dependency resolving would include
all packages providing the web-client capability.
- </para>
- <para>
- During the installation procedure, one of the major features of
installation media, anaconda is going to use YUM dependency resolving to satisfy all the
dependencies.
- </para>
- <note>
- <title>Installation Procedure !== Upgrade Procedure</title>
- <para>
- Note that an installation procedure is not the same as an upgrade
procedure. With an installation procedure for example, you have control over the
partitioning layout whereas with an upgrade procedure, you have none. More importantly,
during an upgrade procedure, the (already installed) system has an existing package set
which needs to be updated/upgraded and thus could possibly introduce dependency resolving
problems, because of third party packages installed on the system, or because the media
used to upgrade the system with does not contain the software packages needed to complete
the upgrade RPM transaction.
- </para>
- </note>
- </section>
-
- </section>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Copying_Arbitrary_Files_Onto_The_Media">
- <title>Copying Arbitrary Files Onto the Media</title>
- <para>
- With <literal>--copy-dir</literal>, you can specify a path
Revisor should copy onto the media.
- </para>
- <formalpara>
- <title>Installation Media</title>
- <para>
- In the case of installation media, the path specified with
<literal>--copy-dir</literal> will be copied recursively to the
<filename>files/</filename> sub-directory at the root of the ISO image (or the
first ISO image if you compose split media).
- </para>
- </formalpara>
- <para>
- A few use-case examples:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- If one kickstart profile is not enough for you to deploy the
product onto your systems, create a directory that holds multiple kickstart files and
specify the path to that directory using <literal>--copy-dir</literal>. The
kickstart files now end up available to the installation procedures as
<filename>cdrom:/files/*.ks</filename>, and can thus be used by specifying
them on the kernel cmdline (<code>ks=cdrom:/files/profile1.ks</code>), or,
when used in combination with <literal>--isolinux-cfg</literal> from the
<xref linkend="Revisor_Reference_Manual-Plugins-Upstream-Isolinux_Plugin"
endterm="Isolinux_Plugin" />, can be added as an option in the isolinux
menu.
- </para>
- </listitem>
- <listitem>
- <para>
- If you have files or scripts that need to be copied onto, or run
on, the installed system before it attempts to reboot and operate normally, you can use
<literal>--copy-dir</literal> to make these files and scripts available during
the installation and copy or execute them from either <code>%pre</code> or
<code>%post</code> scripts.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <formalpara>
- <title>Live Media</title>
- <para>
- In the case of live media, the path specified with
<literal>--copy-dir</literal> will be copied recursively onto the root
directory (<filename>/</filename>) of the live media filesystem (which is
probably loop-mounted onto <filename>/var/tmp/revisor/</filename>).
- </para>
- </formalpara>
- <para>
- If, for example, you want to copy a home directory onto the live media, and
the home directory you want to copy is at <filename>/home/user1/</filename> on
the composing system, you copy this directory so that the root of that new directory has a
sub-directory <filename>home/</filename> which in turn contains a
sub-directory <filename>user1/</filename>:
- </para>
- <para>
- <screen>$ <userinput>mkdir -p
/tmp/something/home/</userinput>
-$ <userinput>cp -a /home/user1 /tmp/something/home/.</userinput>
-$ <userinput>revisor [options] --copy-dir
/tmp/something/</userinput></screen>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Cleaning_Up">
- <title>Cleaning Up</title>
- <para>
- Revisor tends to clean up after itself by default. If a product compose
succeeds, you (probably) don't need to change this default behaviour. However, by
default, Revisor tends to leave the YUM cache directories untouched. This is to prevent
you from having to download all the packages a second, third or more times when you run
another compose.
- </para>
- <para>
- To change this default behaviour, Revisor has an option
<literal>--clean-up</literal>. The default value for this option is
<literal>1</literal>, meaning Revisor will clean up it's temporary,
compose-specific files, but no files that could be re-used. Specifying
<literal>--clean-up=0</literal> will cause Revisor to leave everything behind
and not clean anything up at all. This is most ideal for troubleshooting purposes, where
one needs to examine the temporary, compose-specific files and see what went wrong. To
clean up everything however, because for example you might be low on disk-space, use
<literal>--clean-up=2</literal>. Revisor will then also clean up the files
that could be re-used.
- </para>
-
- <section
id="Revisor_Reference_Manual-Compose_Process_Details-Cleaning_Up-Exception-to-the-Rule">
- <title>Exception to the Rule</title>
- <para>
- There's one exception to the rule of cleaning up.
<filename>/var/tmp/revisor/</filename>, or put more accurately, the path
specified as the <code>installroot</code> in the YUM configuration file
configured with the model used to compose the product, will not be cleaned up afterwards.
When composing live media, this directory may still be in use as a mount-point for the
live media filesystem. Removing this directory recursively in these cases would not make
sense.
- </para>
- </section>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Configuration.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Configuration.xml
deleted file mode 100644
index 647706f..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Configuration.xml
+++ /dev/null
@@ -1,280 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Configuration">
- <title>Configuration</title>
- <para>
- Revisor configuration can be performed using <xref
linkend="Revisor_Reference_Manual-Configuration-Files" />, or through
<xref linkend="Revisor_Reference_Manual-Configuration-Command-line_Options"
/>.
- </para>
-
- <section id="Revisor_Reference_Manual-Configuration-Files">
- <title>Configuration Files</title>
- <para>
- Revisor uses configuration files for a large part of it's operations.
These files mostly reside in <filename>/etc/revisor/</filename>. There is two
types of files Revisor uses:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
- <title>Revisor Configuration Files</title>
- <para>
- Revisor configuration files, such as
<filename>/etc/revisor/revisor.conf</filename>, contain information and
settings unique to Revisor. A Revisor configuration file is where you specify default
options, and include information on different products you want to compose.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>YUM Configuration Files</title>
- <para>
- YUM configuration files, such as the files in
<filename>/etc/revisor/conf.d/</filename>, contain configuration for YUM. To
be more precise, Revisor doesn't even handle the files (it let's YUM do so). The
files in <filename>/etc/revisor/conf.d/</filename> practically contain the
same information as <filename>/etc/yum.conf</filename> combined with the files
in <filename>/etc/yum.repos.d/</filename> (but not exactly the same
content!).
- </para>
- </formalpara>
- </listitem>
- </orderedlist>
- </para>
-
- <section
id="Revisor_Reference_Manual-Configuration-Files-_etc_revisor_revisor.conf">
-
<title><filename>/etc/revisor/revisor.conf</filename></title>
- <para>
- The default Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. This configuration file
contains two sections:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
-
<title><literal>[revisor]</literal></title>
- <para>
- The global section. Options specified in this section
apply to all the models defined in this configuration file.
- </para>
- </formalpara>
- <para>
- See also: <xref
linkend="Revisor_Reference_Manual-Configuration-Global_and_Model_Configuration"
/>
- </para>
- </listitem>
- <listitem>
- <formalpara>
-
<title><literal>[<replaceable>model</replaceable>]</literal></title>
- <para>
- Model configuration. One section per <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-model" />.
- </para>
- </formalpara>
- <para>
- See also: <xref
linkend="Revisor_Reference_Manual-Configuration-Global_and_Model_Configuration"
/>
- </para>
- </listitem>
- </orderedlist>
- </para>
- <para>
- Model sections basically define a single product. Amongst other things,
the distribution name, release version, architecture for the product to be composed and
what YUM configuration file to use, are (often) defined on a per-model basis. There is a
large number of settings available for models, and they are all related to how the product
is going to look like. The product name, the location of the RPM payload for installation
media, the ISO label, the YUM configuration file to use, are all model settings.
- </para>
- <para>
- Using models, you can reproduce the outcome of the compose process, a
<emphasis>product</emphasis>, simply by not changing the model configuration
anymore. If you want something different, you can just add another model section, and name
it differently.
- </para>
- <para>
- To see what models are available with the Revisor standard package, use:
- </para>
- <para>
- <screen>$ <userinput>revisor
--list-models</userinput></screen>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Files-_etc_revisor_conf.d_">
-
<title><filename>/etc/revisor/conf.d/</filename></title>
- <para>
- The default YUM configuration files used by Revisor. In a model
configuration section, the <literal>main =</literal> setting points to one of
the YUM configuration files in <filename>/etc/revisor/conf.d/</filename>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Files-Updates">
- <title>Updates to Configuration Files</title>
- <para>
- The Revisor packages are not allowed to overwrite files in
<filename>/etc/</filename>, and they should thus not do so. If an update to
Revisor is installed on your system, files with the extension
<literal>.rpmnew</literal> may be created --if you had changed anything in the
file before applying the update. Since this world isn't perfect, configuration errors
may exist in the configuration files shipped with Revisor. Please pay close attention to
updates to these configuration files by examining the
<literal>.rpmnew</literal> files.
- </para>
- <para>
- You can use any file location (not just
<filename>/etc/revisor/</filename>) for your own custom configuration.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Files-Changing_Configuration_Files">
- <title>Changing Configuration Files</title>
- <para>
- If you are creating your own models off of the ones that ship with
Revisor itself, please consider using an alternative configuration file (a file other then
<filename>/etc/revisor/revisor.conf</filename>, or copy the original file for
safekeeping. This way, you can always return to a working, sample configuration file and
test whether it is Revisor causing errors, or configuration mistakes.
- </para>
- </section>
-
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Global_and_Model_Configuration">
- <title>Global and Model Configuration</title>
- <para>
- The default Revisor configuration file,
<filename>/etc/revisor/revisor.conf</filename> consists of multiple sections
(the file is in .INI format). One is the <literal>[revisor]</literal> global
section, where you specify configuration options that apply to each other section or
<xref linkend="Revisor_Reference_Manual-Appendix-Terminology-model" />.
- </para>
- <para>
- The options specified in the global and model configuration sections apply to
the Revisor compose in the following order:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <para>
- The options from the global section are read, tested and set.
- </para>
- </listitem>
- <listitem>
- <para>
- The options from a model section are read, tested and set,
regardless of whether the global section had caused the setting to be set to a certain
value already.
- </para>
- </listitem>
- </orderedlist>
- </para>
- <para>
- For example, if you know all the models in a configuration file are optical
live media products, the configuration sections could look like the following:
- </para>
- <para>
- <screen>[revisor]
-# Optical live media for all models
-media_live_optical = 1
-
-[model1]
-main = /etc/revisor/conf.d/revisor-model1.conf
-description = The model1 product
-architecture = i386
-# This is already configured in the global section of
-# this configuration file and can thus be removed.
-#media_live_optical = 1</screen>
- </para>
- <note>
- <title>When Running the GUI</title>
- <para>
- Note that when running Revisor in Graphical User Interface mode, you can
still change a lot of the settings supplied by Revisor through the configuration files
loaded. When you are running Revisor in GUI mode, the configuration files supply the
defaults.
- </para>
- </note>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories">
- <title>YUM Repository Configuration</title>
- <para>
- The files in <filename>/etc/revisor/conf.d/</filename> are YUM
configuration files. Revisor directs YUM to use these files during the compose process,
and does not handle these files itself. This chapter lists a few tips and tricks.
- </para>
- <para>
- Because these files are YUM Configuration files, you can configure anything
that YUM supports. See <application>man yum.conf</application> for more
details.
- </para>
-
- <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-releasever_and_basearch">
- <title>$releasever and $basearch</title>
- <para>
- When configuring a repository URL, make sure you do not use
<replaceable>$releasever</replaceable> or
<replaceable>$basearch</replaceable> variables. Since Revisor allows
cross-composing distributions between different versions of the operating system, as well
as different architectures, these variables need to be expanded to the value intended.
- </para>
- <para>
- See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Using_a_Local_Mirror">
- <title>Using a Local Mirror</title>
- <para>
- If you have a local mirror of Fedora, you can use the
<literal>baseurl</literal> configuration directive in each repository
configuration section to tell YUM to use the local mirror.
- </para>
- <para>
- Optionally, you can also disable the
<literal>mirrorlist</literal>, preferably by outcommenting it, so that YUM
will only use the local mirror.
- </para>
- <para>
- The default <literal>baseurl</literal> uses
<
literal>http://download.fedoraproject.org/</literal>. This location may or
may not be suitable for you. If you have a local mirror, you might want to change this
setting here, or add your mirror to Fedora Project's Mirrorlist.
- </para>
- <note>
- <title>Adding your local mirror to the Mirrorlist</title>
- <para>
- You can add your local mirror to the Mirrorlist, so that the Fedora
Project mirrorlist redirects you to your local mirror. Additionally, systems in your local
network(s) will be redirected to the local mirror. The local mirror does not have to be a
public mirror in order to do so. See <ulink
url="http://admin.fedoraproject.org/mirrormanager/" /> for more details.
- </para>
- </note>
- <para>
- Set each <literal>baseurl</literal> to the location of the
repository on the local mirror.
- </para>
- <para>
- See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Using_Local_Files">
- <title>Using Local Files</title>
- <para>
- If you have the repositories on your local filesystem, configure a
<literal>baseurl</literal> of
<filename>file://<replaceable>/path/to/repository/</replaceable></filename>.
- </para>
- <note>
- <title>Make sure to supply the correct path</title>
- <para>
- Make sure to supply the correct path to the repository.
<filename>file://</filename> is the
"<emphasis>protocol</emphasis>" for the location, and the location
is
<filename><replaceable>/path/to/repository/</replaceable></filename>.
Put together, you have <emphasis>three</emphasis> slashes.
- </para>
- </note>
- <para>
- See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Using_a_DVD">
- <title>Using a DVD</title>
- <para>
- A DVD does not contain enough packages to rebuild the installer images.
If you are using a DVD and you want to rebuild the installer images, you will need to have
a network connection and a mirror you can reach.
- </para>
- <para>
- There is a list of required packages, but since the packages change per
release and may change in the middle of the release cycle as well, we cannot hand you a
list that just works.
- </para>
- <para>
- See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Adding_Third_Party_Repositories">
- <title>Adding Third Party Repositories</title>
- <para>
- When adding a third party repository, make sure you add the correct
release version as well as architecture to the Revisor YUM configuration file. Verify the
location for the <literal>baseurl</literal> and/or
<literal>mirrorlist</literal> you configure manually or through YUM. Make sure
you expand any <literal>$releasever</literal>,
<literal>$basearch</literal> and <literal>$arch</literal>
variables.
- </para>
- <para>
- See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Creating_Your_Own_Repository">
- <title>Creating Your Own Repository</title>
- <para>
- Creating your own repository is relatively simple. You take a directory,
dump some RPM packages in it, and run <application>createrepo</application>.
See <literal>man createrepo</literal> for more information.
- </para>
- <para>
- People often wonder how Revisor handles comps.xml group files.
- </para>
- <para>
- When you create your own repository, follow the directions in <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Adding_Third_Party_Repositories"
/> to add the repository configuration to Revisor's YUM configuration, since your
own repository is a third party repository as well.
- </para>
- <para>
- See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting">
- <title>Testing & Troubleshooting the YUM
Configuration</title>
- <para>
- Before you use the (modified) configuration file, take it for a test
run.
- </para>
- </section>
-
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Configuring_A_Proxy">
- <title>Configuring A Proxy Server</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Configuration-Command-line_Options">
- <title>Command-line Options</title>
- <para>
- With the command-line options available, you can configure options that
either override what is in the configuration file or have simply not been configured using
the configuration file. With the default configuration files that come with the
<application>revisor-cli</application> package for example, no media products
have been pre-configured in the default section. In the
<application>revisor-unity</application> package however, some default
configuration has been applied so that Fedora Unity Re-Spins actually create CD, DVD and
Rescue ISO images as well as the Installation Tree and include the sources.
- </para>
- <para>
- Only some configuration options have CLI parameters. Use
<application>revisor --help</application> to see a complete list of
configuration options you can supply on the command line.
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Development.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Development.xml
deleted file mode 100644
index 9df83c1..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Development.xml
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Development">
- <title>Development</title>
- <para>
- This chapter sheds some light on development of Revisor, such as different
branches and maintenance policies, versioning schemas, etcetera.
- </para>
- <para>
- This part of the documentation relies on whether you have
<application>sudo</application> set up properly. If you have not, you're
on your own.
- </para>
-
- <section
id="Revisor_Reference_Manual-Development-Running_Revisor_from_Source">
- <title>Running Revisor from Source</title>
- <para>
- The latest code in GIT can be built into a RPM you can install but one of the
advantages of having the complete source tree is that you can run it directly from that
source tree so that when you pull in the next updates you do not have to rebuild the RPM.
Note that we do not bump the version number for every little change we make, and as such
the RPM built does not allow you to use <literal>rpm -Uvh</literal> or
<literal>rpm -Uvh --oldpackage</literal>. Of course, Revisor's Makefiles
also allow <application>make install</application>, but that leaves a number
of unmanaged files on your computer you would have to track down manually in order to
remove Revisor completely.
- </para>
- <warning>
- <title>Cannot have Revisor RPMs installed</title>
- <para>
- When running revisor from within the source tree, you cannot have any of
the Revisor packages installed. Having Revisor RPM packages installed regardless will mess
up the GIT repository or source tree.
- </para>
- </warning>
- <para>
- To run Revisor from within the source tree, checkout the master branch, and
run the <filename>./switchhere</filename> script:
- </para>
- <para>
- <screen>$
<userinput>./switchhere</userinput></screen>
- </para>
- <para>
- The <filename>./switchhere</filename> script does the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Symlink <filename>/etc/revisor/</filename> to
<filename><replaceable>$PWD</replaceable>/conf/</filename> so that
<filename>/etc/revisor/revisor.conf</filename>, the primary configuration
file, and <filename>/etc/revisor/conf.d/</filename>, the configuration
directory, are valid (the symlink causes the actual file and directory to be found in
<filename><replaceable>$PWD</replaceable>/conf/</filename>)
- </para>
- </listitem>
- <listitem>
- <para>
- Create the <filename>/usr/share/revisor/</filename>
directory so that a couple of symlinks can be created from within that directory:
- </para>
- </listitem>
- <listitem>
- <para>
- In Revisor 2.1.0 (development version in branch master), this
includes:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/pixmaps/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- In Revisor 2.0.5 (branch F-7, F-8 or EL-5), this includes:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/glade/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/glade/pixmaps/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- In Revisor 2.1.0, also create symlinks from within the
appropriate
<filename>/usr/share/man/man<replaceable>$x</replaceable>/</filename>
directories to the source for these man pages in
<filename><replaceable>$PWD</replaceable>/doc/</filename>.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- From this moment on, you should be able to run:
- </para>
- <para>
- <screen>$
<userinput>./revisor.py</userinput></screen>
- </para>
- <note>
- <title>Root privileges required</title>
- <para>
- Note that revisor needs root privileges to run, and that you'll need
to sudo or su-c to gain those. Use here whatever you find the most convenient; Revisor
though should have a nice error message when run without those privileges.
- </para>
- </note>
-
- <section
id="Revisor_Reference_Manual-Development-Running_Revisor_from_Source-Required_Packages">
- <title>Installing the Required Packages</title>
- <para>
- To be able to run Revisor from within the source tree, you'll need to
install the required packages for each component, of course.
- </para>
- <para>
- To get a current list of those packages, use:
- </para>
- <para>
- <screen>$ <userinput>rpmquery --specfile
--qf="%{REQUIRES}\n" revisor.spec | sort | uniq | xargs -n 1 repoquery
--requires --alldeps --resolve</userinput></screen>
- </para>
- </section>
-
- </section>
-
- <section
id="Revisor_Reference_Manual-Development-Building_Revisor_Packages">
- <title>Building Revisor Packages</title>
- <para>
- para
- </para>
- </section>
-
- <section id="Revisor_Reference_Manual-Development-Tickets">
- <title>Tickets</title>
- <para>
- bugzilla, trac
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Development-Adding_A_New_Spin">
- <title>Adding a new spin or remix</title>
- <para>
- <orderedlist>
- <listitem>
- <para>
- Add the appropriate models in the appropriate configuration file
for Revisor.
- </para>
- </listitem>
- <listitem>
- <para>
- Add the appropriate configuration file to the appropriate
automake Makefile
- </para>
- </listitem>
- <listitem>
- <para>
- Run autoreconf && ./configure &&
make rpm to verify the rpm building
- </para>
- </listitem>
- <listitem>
- <para>
- Create the model's YUM configuration files with the following
repositories:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- fedora, enabled, pointing to Everything
- </para>
- </listitem>
- <listitem>
- <para>
- fedora-source, disabled, pointing to Everything
- </para>
- </listitem>
- <listitem>
- <para>
- fedora-updates, enabled, pointing to the updates
repository
- </para>
- </listitem>
- <listitem>
- <para>
- fedora-updates-source, disabled, pointing to the
updates repository
- </para>
- </listitem>
- <listitem>
- <para>
- anaconda-updates, enabled, pointing to the anaconda
updates repository
- </para>
- </listitem>
- <listitem>
- <para>
- anaconda-updates-source, disabled, pointing to the
ananconda updates repository
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- </orderedlist>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Development-Versioning_Schema">
- <title>Versioning Schema</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Development-Release_Procedure">
- <title>Release Procedure</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Features.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Features.xml
deleted file mode 100644
index 6321641..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Features.xml
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Features">
- <title>Features</title>
- <para>
- Revisor allows you to build and customize your own Remix, Re-Spin, Spin or even
your own distribution, based on Fedora and derivative distributions such as Red Hat
Enterprise Linux and CentOS.
- </para>
- <para>
- Revisor builds installation media, live media, installation trees, cobbler
distro's and profiles, virtualization images and more.
- </para>
-
- <section id="Revisor_Reference_Manual-Features-Installation_Media">
- <title>Installation Media</title>
- <para>
- Installation media is what you use to install a system with. The installation
media composed will allow you to go through the installation process, answering a number
of questions (either manually or through kickstart), and ends up in a system running the
distribution you install.
- </para>
- <para>
- Composing installation media using the Revisor GUI allows you to choose the
media (CD, or DVD), the packages to be included on the media (also called
<emphasis>RPM payload</emphasis>).
- </para>
- <para>
- Using the command-line interface, Revisor also allows you to choose DVD
Duallayer and single- or dual-layer Bluray.
- </para>
- </section>
-
- <section id="Revisor_Reference_Manual-Features-Installation_Trees">
- <title>Installation Trees</title>
- <para>
- Installation trees are typically used in environments where a distribution
needs to be deployed over multiple systems, or is very volatile. Installation trees are
often made accessible through HTTP or FTP protocols, in one place, and do not have as much
overhead (in creating .iso files, and burning those to optical media to distribute them).
- </para>
- </section>
-
- <section id="Revisor_Reference_Manual-Features-Live_Media">
- <title>Live Media</title>
- <para>
- Live media often is a perfect showcase for an Operating system, Desktop
Environment or any other thing you want to show. Also, since Live media is read-only, live
media perfectly allows for a kiosk system, a system that may change while it's
running, but restores all original settings when rebooted.
- </para>
- <para>
- Live media is also installable. You start out with a system and boot it from
live media, then choose to install the live media. This however is inferior to real
installation media, but is convenient if you happen to like what you see when running from
live media.
- </para>
- </section>
-
- <section id="Revisor_Reference_Manual-Features-Reproducibility">
- <title>Reproducibility</title>
- <para>
- Media composed with Revisor is extremely reproducible. Using
<literal>kickstart_exact_nevra</literal>, you can even select specific
versions of packages to be included on the product.
- </para>
- </section>
-
- <section id="Revisor_Reference_Manual-Features-Consistency">
- <title>Consistency</title>
- <para>
- When composing different types of media, such as CDs and DVDs, Revisor
composes these discs in one run, making the different media completely consistent.
<application>pungi</application> would require you to run twice, once for CDs,
and once for DVDs. This is because <application>pungi</application> uses the
<literal>part /
<replaceable><size></replaceable></literal> kickstart
configuration directive to set the maximum size of the media, and has no option to
override the size on the command-line, nor to compose a certain set of media (it all
depends on the size).
- </para>
- </section>
-
- <section id="Revisor_Reference_Manual-Features-Flexibility">
- <title>Flexibility</title>
- <para>
- Over the years, Revisor has been adopted to serve a large number of
use-cases, where use-cases stretch from media being composed as efficient as possible, as
robust as possible, specific deployment needs and expectations, and to match the Fedora
Project Release Engineering tools' behaviour. All this allows you to configure a lot,
and thus customize a lot, making Revisor more of a flexible framework.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Features-Graphical_User_Interface">
- <title>Graphical User Interface</title>
- <para>
- Revisor has a Graphical User Interface or GUI, in addition to the Command
Line Interface or CLI, which makes Revisor more accessible to users then the other tools,
which are CLI only. Most people only know of Revisor through the GUI, and may think there
is no CLI to Revisor. Only when it comes down to many of the additional features that
Revisor has, and that do not fit in a simplified GUI, one gets down with it using the
CLI.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Features-Open_Development_Community">
- <title>Open Development Community</title>
- <para>
- Revisor has one of those old-fashioned Free and Open Source Software
development communities, allowing anyone to make a contribution to Revisor. In fact,
Revisor has not bounced a single patch since the project started. Therefor, it improves
faster then any of the other compose tools, and is better adaptible to your needs and
expectations, because unlike the other utilities, Revisor is not limited to use-cases that
apply to Fedora Project Release Engineering.
- </para>
- </section>
-
- <section id="Revisor_Reference_Manual-Features-Plugin_System">
- <title>Plugin System</title>
- <para>
- Revisor has a plugin system so that you can easily extend Revisor. This
plugin system gives you full control over the Revisor procedures, and hands you off
anything Revisor knows about the compose process. There's are multiple plugins
available from upstream as well. To give you an example, the ability to replace
<filename>isolinux.cfg</filename> after the compose is done, is a plugin. See
<xref linkend="Revisor_Reference_Manual-Plugins" /> for more information.
- </para>
-
- <para>
- Current plugins included with Revisor include:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Cobbler_Plugin" />
- </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Isolinux_Plugin" />
- </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Rebrand_Plugin" />
- </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Reuse_Installer_Images_Plugin"
/>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Features-Extraneous_Debugging">
- <title>Extraneous Debugging</title>
- <para>
- Revisor has extraneous debugging, which enables you, as well as the
supporters and Revisor's developers, to trace down what happens exactly, and where
anything might go wrong.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Features-Using_YUM_Configuration_Files">
- <title>Using YUM Configuration Files</title>
- <para>
- Revisor uses YUM configuration files, where everyone else is not. With using
YUM configuration files however, the control you have is nearly limitless. With all the
features in YUM already, using it's configuration file format and letting YUM itself
work with those allows Revisor to do a lot of cool things without doing anything itself:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
- <title>Excluding packages from repositories</title>
- <para>
- Excluding packages from repositories means a great deal. Not
having them exist in the <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-Package_Sack" />
ensures the package will not end up in the product. This may be what you want for maybe
just a few, or maybe an awful lot of packages.
- </para>
- </formalpara>
- <para>
- Using the alternative configuration file format, kickstart, in
use by every other compose tool, and the <literal>repo</literal> configuration
directive that is available with kickstart, you can exclude packages using the
<literal>--exclude=</literal> parameter to the
<literal>repo</literal> configuration directive. However, that parameter does
not allow wildcard matches.
- </para>
- </listitem>
- <listitem>
- <formalpara>
- <title>Including only a certain (set of)
package(s)</title>
- <para>
- Including only a certain package, or certain set of packages
is valuable when a lot of packages exist in the repository configured, but you only need
one or two.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>Concurrent use of baseurl(s) and the
mirrorlist</title>
- <para>
- Like during normal YUM operations, the baseurl(s) and the
mirrorlist configured for a repository are used concurrently. This is not possible with
the kickstart configuration directive <literal>repo</literal>, which takes
either <literal>--baseurl</literal> or
<literal>--mirrorlist</literal>, but not both.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>Repository priorities</title>
- <para>
- Settings available with YUM are available within Revisor as
well, like repository priorities. Using repository priorities, you can have YUM decide to
pull a package from the repository with a higher priority (a lower priority number) rather
then a repository with a lower priority.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>YUM Plugins</title>
- <para>
- YUM plugins, such as
<application>yum-fastestmirror</application>,
<application>yum-fedorakmod</application>, are available, giving you even more
control over the behaviour of YUM.
- </para>
- </formalpara>
- </listitem>
- </orderedlist>
- </para>
- </section>
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Frequently_Asked_Questions.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Frequently_Asked_Questions.xml
deleted file mode 100644
index 7e97e0e..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Frequently_Asked_Questions.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Frequently_Asked_Questions">
- <title>Frequently Asked Questions</title>
- <para>
- para
- </para>
-
- <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-How_Does_Revisor_Handle_Comps">
- <title>How Does Revisor Handle Comps?</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-What_Are_Installer_Images">
- <title>What Are Installer Images?</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Pungi">
- <title>What is the relationship between Revisor and Pungi?</title>
- <para>
- Where pungi builds a bunch of RPMs into ISO images and installation trees
through one single procedure, perfect for Release Engineering on something like the Fedora
Project, Revisor does it different entirely.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Livecd-tools">
- <title>What is the relationship between Revisor and
livecd-tools?</title>
- <para>
- Revisor depends on livecd-tools for the composing of live media. Creating the
filesystem to install the packages to, turning that image file into a SquashFS file, and
applying the settings inside the chroot.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-Why_Rebuild_Installer_Images">
- <title>Why Rebuild Installer Images?</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-How_do_I_create_an_updates.img">
- <title>How do I create an updates.img?</title>
- <para>
- para
- </para>
- </formalpara>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Installation.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Installation.xml
deleted file mode 100644
index f56855f..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Installation.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Installation">
- <title>Installation</title>
- <para>
- This chapter contains the installation instructions for Revisor.
- </para>
-
- <section id="Revisor_Reference_Manual-Installation-Packages">
- <title>Packages</title>
- <para>
- You can install Revisor using RPM packages from the repositories already
configured on your system.
- </para>
-
- <formalpara
id="Revisor_Reference_Manual-Installation-Packages-revisor">
- <title><application>revisor</application></title>
- <para>
- Shorthand package for the Revisor GUI.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Reference_Manual-Installation-Packages-revisor-cli">
-
<title><application>revisor-cli</application></title>
- <para>
- The CLI version of Revisor. This package is always installed, as it
contains the Python code for Revisor's core. Installing just this package will give
you the command-line version of Revisor, and prevents the graphical dependencies from the
<xref linkend="Revisor_Reference_Manual-Installation-Packages-revisor-gui"
/> package to be installed as well.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Reference_Manual-Installation-Packages-revisor-gui">
-
<title><application>revisor-gui</application></title>
- <para>
- The GUI version of Revisor. This is the actual package containing the
Graphical User Interface, as opposed to <xref
linkend="Revisor_Reference_Manual-Installation-Packages-revisor" />. Depends
on <xref linkend="Revisor_Reference_Manual-Installation-Packages-revisor-cli"
/>, and thus also installs the command-line version of Revisor.
- </para>
- </formalpara>
-
- <section
id="Revisor_Reference_Manual-Installation-Packages-YUM-RHEL">
- <title>Red Hat Enterprise Linux 5 or higher</title>
- <para>
- On Red Hat Enterprise Linux 5 or higher, and derivatives, install the
Extra Packages for Enterprise Linux (EPEL) repository.
- </para>
- <para>
- Then, give the following command:
- </para>
- <para>
- <screen># <userinput>yum install
revisor</userinput></screen>
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Installation-Packages-YUM-Fedora">
- <title>Fedora 7 or higher</title>
- <para>
- On Fedora 7 or higher, and derivatives, no additional repository
configuration is required.
- </para>
- <para>
- Give the following command:
- </para>
- <para>
- <screen># <userinput>yum install
revisor</userinput></screen>
- </para>
- <note>
- <title>About EOL Releases</title>
- <para>
- Please bear in mind that Fedora releases that are past the point of
End-Of-Life, approximatly 13 months after the initial release, are not supported anymore
for use with Revisor. Also, the version of Revisor running on these EOL versions of Fedora
are not supported anymore.
- </para>
- </note>
- </section>
-
- </section>
-
- <section
id="Revisor_Reference_Manual-Installation-The_Latest_And_Greatest">
- <title>The Latest and Greatest</title>
- <para>
- The latest and greatest is available from GIT, at <ulink
url="git://git.fedorahosted.org/revisor" />. To clone this repository, use:
- </para>
- <para>
- <screen>$ <userinput>git clone
git://git.fedorahosted.org/revisor/</userinput></screen>
- </para>
- <para>
- Using the GIT clone, you have the several options to start using the latest
and greatest:
- </para>
- <formalpara>
- <title>Running directly from the source</title>
- <para>
- You can run directly from within the source tree. See <xref
linkend="Revisor_Reference_Manual-Development-Running_Revisor_from_Source" />
for more information on how to do so.
- </para>
- </formalpara>
- <warning>
- <title>Installed packages and running from source</title>
- <para>
- Do not run Revisor from source while RPM packages have been installed.
Files managed by a package will get created, moved and removed when using Revisor's
source tree, and updates to the installed RPM packages will destroy these changes.
- </para>
- </warning>
- <formalpara>
- <title>Building your own packages</title>
- <para>
- You can create your own packages, so that you have all the benefits of
RPM. See <xref
linkend="Revisor_Reference_Manual-Development-Building_Revisor_Packages" />
for more information on how to do so.
- </para>
- </formalpara>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Introduction.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Introduction.xml
deleted file mode 100644
index 561b37c..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Introduction.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Introduction">
- <title>Introduction</title>
- <para>
- Revisor is a community product by Fedora Unity. Amongst other features, it allows
the creation of installation media and live media in the easiest possible manner, through
a click-and-go GUI. This chapter gives some insight on how and why Revisor was born, and
how the product evolved since.
- </para>
-
- <section
id="Revisor_Reference_Manual-Introduction-History_Of_Revisor">
- <title>History of Revisor</title>
- <para>
- Revisor development started in December 2006, during the Fedora 7 development
cycle, in which -you might recall- the Fedora Core repository, maintained by Red Hat, and
Fedora Extras repository, mostly maintained by the community, were merged into one large
repository being maintained by both community members as well as Red Hat employees -which
are mostly community members hired by Red Hat -so community altogether. Before then Red
Hat employees maintained Fedora Core -as the set of packages upstream for Red Hat's
Enterprise product- and the community maintained a repository with additional software;
Fedora Extras. Red Hat composed the Fedora distribution every once in a while, but the
merge introduced the possibility for packages that were in Fedora Extras to be included in
the main distribution, and for the community to also (co-)maintain the (former) Fedora
Core packages that originally made up the distribution.
- </para>
- <para>
- In addition to this huge merge of packages, Red Hat employees were also able
to release the entire build process to the community, meaning that from the moment the
source is committed up and until the release is announced, the entire process is open. Not
that is was all behind closed doors or proprietary or anything, the community just
couldn't really play with it as much. We now have koji (build system), mash
(repository compose from build system products), bodhi (updates release system),
livecd-tools (compose tool for live media) and pungi (compose tool for installation
media).
- </para>
- <para>
- Composing media was an obscure process up and until the moment these tools
exposed the best way to compose (a set of) installation media. Fedora Unity had been
building and releasing so-called Re-Spins1 regularly, but they were built using a
not-so-very intelligent bash script. Like hundreds if not thousands of other parties that
needed to build their own media one way or the other, the entire process was based on the
best educated guess of what should happen. Luckily, in the FOSS world an educated guess is
often a very good guess, despite the fact that one keeps learning even years after the
original engagement.
- </para>
- <para>
- When in December 2006 the compose tools hit a stage in which they were
released to the public, Fedora Unity was eager to get these tools and study them and use
them for composing their Re-Spins. Up and until then, Re-Spins were composed with the
aforementioned bash script that didn't do much but trigger the appropriate commands in
a sequence; There wasn't any dependency resolving between the packages included nor
did we know exactly how a release was supposed to be composed -it was our educated guess
of how it could happen. Although it often led to success, we've had many, many failed
Re-Spins as well. With a handful of volunteers, you can imagine the amount of frustration
that might give. Fedora Unity was eager to improve their Re-Spin process.
- </para>
- <para>
- So, early February 2007, a number of Fedora Unity members attended “FUDCon
2007” in Boston, and presented a working GUI front-end to livecd-tools and pungi enabling
regular users to also re-compose or re-spin the installation media and live media they had
been getting from the Fedora Project. Revisor at this point just made it “as easy as
possible”. Besides the possibilities of pungi and livecd-tools themselves, the wizard
Revisor had apparently was very, very useful to mere mortals. From that point on, things
took off.
- </para>
- <para>
- Fedora Unity decided Revisor could accomplish more then just being a
front-end to existing compose tools and enable someone to tweak a lot of settings as well.
In March 2007, Revisor was rebuild from the ground up in March 2007 to allow a more
flexible process, more dependent on the configuration directives it was given and less so
on the processes of the existing tools. When in San Diego at the Red Hat Summit (early May
2007), Robert 'Bob' Jensen and Jonathan Steffan gave a presentation on
“Customizing Fedora”, the responses were amazing. Since then Revisor has evolved from a
front-end to existing tools to the complete compose tool it is today, with lots of
configuration options for specific use-cases.
- </para>
- <para>
- For users, Revisor is particularly useful because it has a GUI front-end
wizard, which, with the defaults settings, will just succeed in getting a user the media
he/she wants. If a user decides he needs little adjustment of the media, the GUI allows
for selecting the most common options. If a user decides he needs some less common
adjustments, the configuration options gives him very granular control -and as long as the
documentation on all the options is sufficient, users will be able to make those less
common adjustments.
- </para>
- <para>
- For administrators on the other hand, Revisor is the tool that gives so much
granular control over what happens, that it can serve almost every specific use-case. In
this aspect, Revisor could potentially replace the compose tools administrators have been
developing themselves with a consistent and flexible program flow.
- </para>
- <para>
- This document should enable you to study the process of composing
installation and live media, and comprehend the logic Revisor adds to that process.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Introduction-The_Installation_Media_Challenge">
- <title>The Installation Media Challenge</title>
- <para>
- When Fedora Unity first started doing these so-called Re-Spins, the challenge
ahead could maybe be explained like this:
- </para>
- <para>
- <emphasis>When a user downloads a Fedora release and installs the
distribution, the user will need to download and install a number of updates. The “older”
the release becomes, the more updates will be available, and the greater the total
download size of these updates the user will need to download on top of the download size
of the original release media.</emphasis>
- </para>
- <para>
- “older” is in quotes on purpose, because really for an operating system -or
“distribution” if you will- being released every 6 months, “old” is quite a relative
concept. The number of updates available however, at any given time during the release
cycle, may range from 0 right after the release (which has never happened before), to the
total amount of packages installed on the user's system (often over 2000). You can
imagine the size of these updates ranging from 0 MB to an astonishing 2GB(!), only 6
months after the initial release.
- </para>
- <para>
- Some of us do not have the bandwidth capacity or enough data transfer quota
to download this many extra, rather useless bits. In addition, some of us do not have an
Internet connection at all, and thus benefit getting the updates from Re-Spins directly.
- </para>
- <para>
- The use of updates in Re-Spins has several more beneficial side-effects,
which we'll explain in more detail later on in this document. Long story short; If for
some reason the software used to compose the media (the release) with does not work for
your hardware or your specific needs, updated software incorporated in the composed
installer images might resolve that problem.
- </para>
- <para>
- This is the original challenge the Fedora Unity team resolved a long time
ago, and is at the base of what Revisor does nowadays.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Introduction-The_Live_Media_Challenge">
- <title>The Live Media Challenge</title>
- <para>
- Back in the day Fedora Core 5 was the most recent release, Fedora Unity
created so-called live media using Kadischi. In that time, live media could only have a
read-only root file system and was not as feature-rich as live media is today. However,
just before Revisor came to life, two applications were developed; pungi for creating
installation media, and livecd-tools for creating live media. These two applications did
their work well; The media composed for a release, including many different custom live
media spins were, and still are, created with these tools. Immediately, the Revisor
developers set themselves a target to provide a single interface to both of those tools.
- </para>
- </section>
-
-</chapter>
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Plugins.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Plugins.xml
deleted file mode 100644
index 122f25e..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Plugins.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Plugins">
- <title>Plugins</title>
- <para>
- para
- </para>
-
- <section id="Revisor_Reference_Manual-Plugins-Upstream">
- <title>Upstream Plugins</title>
- <para>
- Plugins available from upstream, maintained by upstream
- </para>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-Cobbler_Plugin">
- <title>Cobbler Plugin</title>
- <para>
- The Cobbler plugin is able to put the product composed into a Cobbler
environment, by handing off the built product to the existing Cobbler infrastructure as a
<emphasis>distro</emphasis>, and creating a
<emphasis>profile</emphasis>.
- </para>
- <para>
- Using this module, one can automatically import the Revisor product into
a Cobbler environment, and immediately use the new Cobbler
<emphasis>profile</emphasis> to start deploying or automated testing, maybe.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-Composer_Plugin">
- <title>Composer Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-Delta_Plugin">
- <title>Delta Plugin</title>
- <para>
- A small change to a ISO image does not require you to download the
complete ISO image if you have a copy of the old ISO image.
- </para>
- <note>
- <title>Only applicable to (...)</title>
- <para>
- The generation of Delta ISO images is only applicable to situations
in which the ISO image does not contain SquashFS images. SquashFS images are smaller, but
all SquashFS images are unique. Since the Delta principle is based on similarities, and no
two SquashFS images are alike, creating a Delta on two ISO images containing SquashFS
images will lead to a Delta pratically the same size as the SquashFS image. For Live Media
that compresses the ext3 filesystem image into a SquashFS image, since that SquashFS image
is probably over 97% of the size of the ISO image, creating Delta images for compressed
Live Media does not make sense. For installation media however, most RPMs would be similar
as well as (potentially) the installer images.
- </para>
- </note>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-GUI_Plugin">
- <title>GUI (Graphical User Interface) Plugin</title>
- <para>
- Yes, the Graphical User Interface for Revisor is actually a plugin.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-HUB_Plugin">
- <title>HUB Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-Isolinux_Plugin">
- <title>Isolinux Plugin</title>
- <titleabbrev id="Isolinux_Plugin">Isolinux
Plugin</titleabbrev>
- <para>
- The isolinux plugin adds the
<literal>--isolinux-cfg</literal> command-line option to Revisor. Specify a
file here, and the original <filename>isolinux.cfg</filename> that is built as
part of the compose process is replaced by the
<filename>isolinux.cfg</filename> specified.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-Jigdo_Plugin">
- <title>Jigdo Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-Mock_Plugin">
- <title>Mock Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-Rebrand_Plugin">
- <title>Rebrand Plugin</title>
- <para>
- The rebrand plugin hooks in to Revisor at several different stages. The
goal of this plugin is to ensure no trademarked packages end up on the media. Trademarked
packages may include <application>fedora-logos</application>,
<application>redhat-logos</application>, and so forth.
- </para>
- <para>
- The plugin adds a <literal>--rebrand</literal> option, to
which you can specify the name of your new product. When rebranding Fedora to Omega for
example, specifying <literal>--rebrand Omega</literal> would be sufficient to
make sure the product does not have any Fedora trademarks.
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-Reuse_Installer_Images_Plugin">
- <title>Reuse Installer Images Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-Server_Plugin">
- <title>Server Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-Virtualization_Plugin">
- <title>Virtualization Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Plugins-Upstream-WUI_Plugin">
- <title>WUI (Web-based User Interface) Plugin</title>
- <para>
- para
- </para>
- </section>
-
- </section>
-
- <section id="Revisor_Reference_Manual-Plugins-Writing_Your_Own">
- <title>Writing Your Own Plugins</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Testing.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Testing.xml
deleted file mode 100644
index ea4ff00..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Testing.xml
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Testing">
- <title>Testing</title>
- <para>
- The following test cases describe different types of testing a new Revisor
release.
- </para>
-
- <section id="Revisor_Reference_Manual-Testing-Simple_Test_Cases">
- <title>Simple Test Cases</title>
- <para>
- This section has a few simple test cases ensuring configuration shipped with
Revisor works as anticipated.
- </para>
-
- <section
id="Revisor_Reference_Manual-Testing-Simple_Test_cases-Packages">
- <title>Packages</title>
- <para>
- Install the <application>revisor-cli</application>:
- </para>
- <para>
- <screen># <userinput>yum --enablerepo=updates-testing install
revisor</userinput></screen>
- </para>
- <para>
- Installed are all dependencies for the Revisor CLI interface. Make sure
<application>spin-kickstarts</application> is installed, a package for sample
kickstarts.
- </para>
- <para>
- Starting Revisor as follows should not show any error messages related to
Revisor attempting to start up it's GUI interface:
- </para>
- <para>
- <screen>#
<userinput>revisor</userinput></screen>
- </para>
-
- <formalpara>
- <title>Configuration Files</title>
- <para>
- The following configuration files should exist:
- </para>
- </formalpara>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>/etc/revisor/revisor.conf</filename>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Each section should have a configuration file listed as
<literal>main</literal>.
- </para>
- <para>
- And, of course, every configuration file listed in each section. In this
case, the following snippet is easy enough:
- </para>
- <para>
- <screen>$ <userinput>i=0; \
-configfiles="`grep ^main /etc/revisor/revisor.conf | \
- sed -r -e 's/^main.*=\s*(.*)/\1/g'`"
-
-for configfile in $configfiles; do \
- [ ! -f $file ] && i=1; \
-done; \
-echo $i</userinput></screen>
- </para>
- <para>
- Another way to test the configuration file is to execute:
- </para>
- <para>
- <screen>$ <userinput>revisor --list-models
>/dev/null</userinput></screen>
- </para>
- <para>
- If everything is well, since <literal>STDOUT</literal> is
redirected to <filename>/dev/null</filename>, you should see no messages at
all.
- </para>
-
- </section>
-
- <section
id="Revisor_Reference_Manual-Testing-Simple_Test_Cases-Configuration_Files">
- <title>Configuration Files</title>
- <para>
- The main Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. The file lists a series of
models, each having their own YUM configuration file in
<filename>/etc/revisor/conf.d/</filename>.
- </para>
- <formalpara>
- <title>Testing</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- For each model in
<filename>/etc/revisor/revisor.conf</filename>, the
<code>main</code> setting for that model should point to a valid file.
- </para>
- </listitem>
- <listitem>
- <para>
- Each YUM configuration file should work. To verify, run
the following command for each configuration file:
- </para>
- <para>
- <screen>$ yum -c
<replaceable>$file</replaceable> list kernel</screen>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </formalpara>
- <formalpara>
- <title>Known Errors</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Revisor has baseurls in YUM repositories set to <ulink
url="http://localrepo" />. This URL will not be retrievable for many
people, but allows the developers to quickly change mirrors.
- </para>
- </listitem>
- <listitem>
- <para>
- Repositories that are unavailable at the moment of
testing will throw errors Revisor can't do anything about.
- </para>
- </listitem>
- <listitem>
- <para>
- If the directories
<filename>revisor-yumcache/</filename> and
<filename>revisor/</filename> in <filename>/var/tmp/</filename>,
the default working directory, are not writeable for the user then YUM will throw
permission denied errors.
- </para>
- <para>
- Remove <filename>/var/tmp/revisor/</filename>
and <filename>/var/tmp/revisor-yumcache/</filename> or run the command with
root permissions.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </formalpara>
- </section>
-
- <section
id="Revisor_Reference_Manual-Testing-Simple_Test_Cases-Compose_Results">
- <title>Requirements for Compose Results</title>
- <para>
- Although heavily dependent on Anaconda for this part, these are still
requirements
- </para>
-
- <formalpara>
- <title>ld-linux.so.2</title>
- <para>
- In the <filename>initrd.img</filename> of the composed
product, if 32-bit, <filename>/lib/ld-linux.so.2</filename> (or any other
version) should link to <filename>/lib/ld-2.9.so</filename> (or any other
version). If <filename>/lib/ld-linux.so.2</filename> links to itself, the
media will fail to install.
- </para>
- </formalpara>
- <formalpara>
- <title>How to test</title>
- <para>
- In a terminal, type the following command:
- </para>
- </formalpara>
- <para>
- <screen>$ <userinput>lsinitrd /path/to/initrd | grep
ld-linux</userinput></screen>
- </para>
- <para>
- See also: <ulink
url="https://www.redhat.com/archives/anaconda-devel-list/2009-Februa...
/>
- </para>
-
- </section>
- </section>
-
- <section id="Revisor_Reference_Manual-Testing-Complex_Test_Cases">
- <title>Complex Test Cases</title>
- <para>
- para
- </para>
- </section>
-
- <section id="Revisor_Reference_Manual-Testing-Specific_Test_Cases">
- <title>Specific Test Cases</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Tips_and_Tricks.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Tips_and_Tricks.xml
deleted file mode 100644
index 8b785ee..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Tips_and_Tricks.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Tips_and_Tricks">
- <title>Tips and Tricks</title>
- <para>
- para
- </para>
-
- <section
id="Revisor_Reference_Manual-Tips_and_Tricks-The_spin-kickstarts_Package">
- <title>The spin-kickstarts Package</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Tips_and_Tricks-Even_More_Debugging">
- <title>Even More Debugging</title>
- <para>
- something about using -x to buildinstall scripts
- </para>
- </section>
-
- <section id="Revisor_Reference_Manual-Tips_and_Tricks-ksvalidator">
- <title>Kickstart Validator</title>
- <para>
- something about using -x to buildinstall scripts
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Tips_and_Tricks-Using_Mirrormanager_For_Mirror_Redirection">
- <title>Using Mirrormanager for Mirror Redirection</title>
- <para>
- Something about using Mirrormanager to redirect you to the local mirror (so
you do not have to edit YUM configuration files).
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Tips_and_Tricks-The_localrepo_DNS_Alias">
- <title>Using The localrepo DNS Alias</title>
- <para>
- Something about using the localrepo DNS alias to point to your local mirror
(either through real DNS or through /etc/hosts), so you do not have to edit the YUM
configuration files.
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Tweaking_The_Build_Process.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Tweaking_The_Build_Process.xml
deleted file mode 100644
index 4979285..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Tweaking_The_Build_Process.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Tweaking_The_Build_Process">
- <title>Tweaking the build process</title>
- <para>
- para
- </para>
-
- <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Reusing_Existing_Installer_Images">
- <title>Reusing Existing Installer Images</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Building_The_Installer_Images_In_Mock">
- <title>Building The Installer Images in Mock</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Omitting-isomd5sum">
- <title>Omitting isomd5sums</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Omitting-sha1sums">
- <title>Omitting SHA1SUMS</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Using_Kickstart.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Using_Kickstart.xml
deleted file mode 100644
index f3e6ab2..0000000
--- a/doc/Reference_Manual/en-US/Reference_Manual-Using_Kickstart.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Reference_Manual-Using_Kickstart">
- <title>Using Kickstart</title>
- <para>
- Kickstart is a configuration file format for automating installation procedures.
Or at least, it was, originally. Nowadays, kickstart files are used as input to the
compose tools, including Revisor.
- </para>
- <para>
- Revisor again is unique in that it does not require a kickstart file for input.
The other tools only take kickstart configuration files. Revisor though allows most of
what is in a kickstart file to be configured interactively in Graphical User Interface
mode.
- </para>
-
- <section
id="Revisor_Reference_Manual-Using_Kickstart-How_Kickstart_Is_Used">
- <title>How Kickstart Is Used</title>
- <para>
- There's two cases in which a kickstart file is used differently. One is
during the compose of installation media, and the other of course is during the compose of
live media, or virtualization media.
- </para>
-
- <section
id="Revisor_Reference_Manual-Using_Kickstart-How_Kickstart_Is_Used-Installation_Media">
- <title>Installation Media</title>
- <para>
- In the case of installation media, the following settings are used:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <formalpara>
-
<title><literal>repo</literal></title>
- <para>
- The <literal>repo</literal> command in
kickstart is used when Revisor is configured to use the repositories configured in the
kickstart file only. Use <literal>kickstart_repos = 1</literal> to enable this
feature, or set the appropriate checkbox in the Revisor GUI.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
-
<title><literal>%packages</literal></title>
- <para>
- The <literal>%packages</literal> section in
kickstart is used to determine the RPM payload on the installation media. It can include
groups and packages, and exclude packages. It accepts wildcards, both in includes and
excludes of packages (but not groups).
- </para>
- </formalpara>
- </listitem>
- </itemizedlist>
- </para>
- <note>
- <title>@core and @base</title>
- <para>
- By default, groups @core and @base are included in the package
manifest. You can specify @base to not be included, by using <literal>%packages
--nobase</literal>, but @core cannot be excluded using a kickstart package
manifest.
- </para>
- </note>
- <para>
- Using <literal>kickstart_exact</literal>, you can exclude
@core and @base so that you need to explicitly select them in the kickstart package
manifest.
- </para>
- <para>
- Using <literal>kickstart_exact_nevra</literal> ...
- </para>
- </section>
- </section>
-
- <section
id="Revisor_Reference_Manual-Using_Kickstart-The_Kickstart_Package_Manifest">
- <title>The Kickstart Package Manifest</title>
- <para>
- para
- </para>
-
- <formalpara>
- <title>Group @core</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Group @base</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Including groups of packages</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Including a single package</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Excluding a single package</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Using wildcard matches</title>
- <para>
- para
- </para>
- </formalpara>
-
- <section
id="Revisor_Reference_Manual-Using_Kickstart-Using_Kickstart_With_Package_NEVRA">
- <title>Using Kickstart with Package NEVRA</title>
- <para>
- para
- </para>
- </section>
-
- </section>
-
-</chapter>
-
diff --git
a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Compose_Process_Details.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Compose_Process_Details.xml
new file mode 100644
index 0000000..6b12e6c
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Compose_Process_Details.xml
@@ -0,0 +1,431 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Compose_Process_Details">
+ <title>Compose Process Details</title>
+ <para>
+ This chapter lists the details of the compose process as well as dives deep into
the features of Revisor.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Overview">
+ <title>Overview</title>
+ <titleabbrev
id="Compose_Process_Details-Overview">Overview</titleabbrev>
+ <para>
+ Of course, the compose process for installation media is a little different
then the compose process for live media.
+ </para>
+ <para>
+ When composing, Revisor starts out doing the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Revisor initiates and loads plugins, options, and defaults. At
this point, Revisor has a so-called <emphasis>ConfigStore</emphasis> that
holds all options Revisor knows about.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Revisor reads the options from the command-line.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Revisor reads the configuration file specified with the
<code>--config</code> command-line parameter, or uses it's builtin
default, <filename>/etc/revisor/revisor.conf</filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Revisor reads the global <code>[revisor]</code>
section for all settings available in it's
<emphasis>ConfigStore</emphasis> and sets those configured in the global
section. Remember that if an option is not available in the
<emphasis>ConfigStore</emphasis> but is configured in the global configuration
section, it is ignored.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If a model is specified in the configuration file's global
section <code>[revisor]</code>, Revisor will set that model to be used and
loads it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If a model has been specified on the command-line, with option
<code>--model</code>, Revisor loads that model.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When loading the model, Revisor again iterates over all the
settings that are in the <emphasis>ConfigStore</emphasis>, checks if the
setting has been configured in the model section, and adjusts the setting in the
<emphasis>ConfigStore</emphasis> if necessary. Again remember that if the
<emphasis>ConfigStore</emphasis> does not know about one or the other option
already, that setting is ignored.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Now that the defaults and configuration file settings have been
applied to the <emphasis>ConfigStore</emphasis>, it is time for Revisor to
look at the options specified on the command-line to see if you wanted to override
anything.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ While loading each configuration setting available in the global
<code>[revisor]</code>, model-specific sections and/or command-line, Revisor
checks every settings against a function that is specifically written to check such
setting. For example, the label of an ISO cannot be longer then 32 characters.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Especially in CLI mode, these settings build up the task list for
Revisor. If there's nothing to do, Revisor will throw an error explaining what's
missing. If there's things to do that cannot be done in one run, Revisor will throw an
error explaining that.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Graphical User Interface mode however, if the settings loaded
so far are all OK, the GUI will start. Since you can still adjust a few settings from
within the GUI, the settings loaded so far will be the defaults for configuration settings
that have a dialog for you to adjust them with, throughout the rest of the process.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Installation_Media">
+ <title>Installation Media</title>
+ <para>
+ As we've explained before, composing installation media is a little
different then composing live media. That's not just because installation media should
start an installation procedure and live media should show you a nice, shiny,
fully-functional Desktop.
+ </para>
+ <para>
+ For one, installation media allows split media. This means that Revisor can
span the payload of the product over multiple ISO images or multiple discs, if you will.
When composing installation media, Revisor basically does the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Of course, Revisor goes through the loading of configuration
options mentioned in the <xref
linkend="Revisor_Reference_Manual-Compose_Process_Details-Overview"
endterm="Compose_Process_Details-Overview" />.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When you're done specifying options in the GUI, or when
Revisor thinks it can go ahead using the options specified in CLI mode, it takes the list
of packages selected from either the GUI or the kickstart
<code>%packages</code> manifest.
+ </para>
+ <para>
+ Not getting too deep into details here, yet, because some of
these things are routines shared with other composing modes, but here's a few
additional considerations Revisor makes when doing the package selection.
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Normally, a kickstart
<code>%packages</code> manifest only allows you to select package
<emphasis>names</emphasis>. With Revisor though, you can select exact package
<emphasis>NEVRA</emphasis> to select a certain version or architecture for the
package that you want. Additionally, if a package is not available, Revisor searches the
<emphasis>Provides</emphasis> of the available packages.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Live_Media">
+ <title>Live Media</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Respin_Mode">
+ <title>Respin Mode</title>
+ <para>
+ Revisor has a respin mode that in some aspects differs from the regular
routines. It is intended to reflect behaviour of tools in use by the Fedora Project
Release Engineering team as closely as possible.
+ </para>
+ <para>
+ Re-Spin mode only affects installation media products.
+ </para>
+ <para>
+ In Re-Spin mode, the way the RPM payload is determined from kickstart differs
from Revisor's normal procedures. See <xref
linkend="Revisor_Reference_Manual-Using_Kickstart" /> for more details on
using a kickstart package manifest.
+ </para>
+ <para>
+ A kickstart file's so-called <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-package_manifest" />
usually looks like:
+ </para>
+ <para>
+ <screen>%packages
+@group1
+@group2 --nodefaults
+@group3 --optional
+package1
+package2
+-package3
+%end</screen>
+ </para>
+ <para>
+ Which tells us the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Include all mandatory and default packages from group1
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Include all mandatory packages from group2
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Include all mandatory, default and optional packages from group3
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Include package1, and package2
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Exclude package3
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ Depending on how you use this instructions or information, there is a slight
difference in the package set that ends up on the media you compose.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Respin_Mode-Selecting_Groups">
+ <title>Selecting Groups</title>
+ <para>
+ Selecting groups has the following logic: When you load a repository you
may also load the groups file (often referred to as 'comps' or
'comps.xml'). This comps file is an XML file with categories, groups (per
category), and per group:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ a list of mandatory packages. If you select or include the
group, these packages come with it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a list of default packages. If you select or include the
group, these packages will come with it as a default. If you only want the mandatory,
minimum set of packages for this group, in a kickstart package manifest append
<code>--nodefaults</code> to the group line or in the Revisor GUI,
right-click on the group and choose <emphasis>Deselect all
packages</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a list of optional packages. If you select a group you have
not yet selected these packages. To select the optional packages of a group, in a
kickstart package manifest append <code>--optional</code> to the group line or
in the Revisor GUI, right-click on the group and choose <emphasis>Select all
optional packages</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a list of conditionals. If you select this group, these
conditionals are thrown into the package sack and transaction information and include or
exclude other packages. Suppose you select the '@nl-support' or “Dutch Support”
group from the Languages or Localization category, you would end up with support for the
Dutch language in all applications that have that kind of support.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Respin_Mode-Select_Matching_Packages">
+ <title>Select Matching Packages</title>
+ <para>
+ This is the logic Revisor applies when running in Re-Spin mode (on the
CLI, specify <code>--respin</code>). It imitates the behavior pungi has, and
thus enables you to copy that behavior. Note that <code>--respin</code> has
other implications as well.
+ </para>
+ <para>
+ First of all, it iterates the groups in the kickstart package manifest.
For each group, it appends the names of the mandatory packages to a list, and depending on
the additional parameters specified with that group (<code>--nodefaults</code>
or <code>--optional</code>), appends the names of the other packages in that
group as well.
+ </para>
+ <para>
+ Then it iterates over the package names in the package manifest. These
package names are appended to the same list of package names too. This includes package
'names' with some sort of wildcard (?, or *).
+ </para>
+ <para>
+ Then it iterates over all the excluded packages, appending each of those
to the YUM configuration exclude list.
+ </para>
+ <para>
+ Now that Revisor has a very simple, flat list of package names, it uses
YUM's internal matching logic 5 to get what packages in the repositories matched
exactly (by name), matched (by wildcard) and did not match at all. Revisor then selects
the exact matches and matches, adding them to the transaction.
+ </para>
+ </section>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving">
+ <title>Dependency Resolving</title>
+ <indexterm>
+ <primary>Dependency Resolving</primary>
+ </indexterm>
+ <para>
+ Dependency resolving is the area where some of the efficiency Revisor can
gain for you comes from. While of course there is specific reasons to do things one way,
or the other, most people I speak to about Revisor, it is not very clear why, or what
Revisor does in this area. First of all, there's two ways of resolving dependencies:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>Inclusive Dependency Resolving</title>
+ <indexterm>
+ <primary>Dependency Resolving</primary>
+ <secondary>Inclusive</secondary>
+ </indexterm>
+ <para>
+ Iterate all packages in the transaction and list their
requirements, then for each of those requirements, find all packages that provide a
matching capability, add those packages to the transaction, and don't forget to add
the requirements those packages have themselves, back into the pile of (unmet)
requirements.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Exclusive Dependency Resolving</title>
+ <indexterm>
+ <primary>Dependency Resolving</primary>
+ <secondary>Inclusive</secondary>
+ </indexterm>
+ <para>
+ Iterate all the packages and for each of the requirements
found, find the best package that meets the requirement. This is also YUMs default
behavior. Anaconda uses YUM during the installation, and this is the behaviour of YUM used
during the installation.
+ </para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Inclusive">
+ <title>Inclusive Dependency Resolving</title>
+ <para>
+ Hypothetically, you could describe inclusive dependency as follows:
+ </para>
+ <para>
+ <screen>final_packages = []
+more_to_do = True
+while more_to_do:
+more_to_do = False
+for package in packages:
+ if package in final_packages:
+ continue
+
+ dependencies = find_package_dependencies()
+ for dependency in dependencies:
+ pulled_in_package = pull_in_dependency()
+ if pulled_in_package not in final_packages:
+ packages.append(pulled_in_package)
+ more_to_do = True</screen>
+ </para>
+ <para>
+ So, what does this mean? Basically, it means that if there is a
requirement for a capability, all packages providing that capability are being pulled in.
Now imagine package 'foo' requires capability 'web-client'. There's a
number of packages providing that capability, right? So you get Firefox, lynx, elinks,
konqueror, safari, Netscape, Internet Explorer, emacs, for free! All of those pull in
their own dependencies also, of course.
+ </para>
+ <note>
+ <para>
+ If you catch this before it catches you, you can prevent the packages
from being pulled in during dependency resolving by not making the package available in
the <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-Package_Sack" /> in
the first place, using the <literal>-firefox</literal> syntax in the kickstart
package manifest, and setting
<literal>kickstart_uses_pkgsack_excludes</literal> to 1.
+ </para>
+ </note>
+ <note>
+ <para>
+ You may have thought of it; pulling in packages this way may give you
a package set (or <emphasis>RPM payload</emphasis>) that has conflicting
packages. Imagine package <application>foo</application> requiring capability
<application>bar</application>, which is provided by two packages that
conflict with one another (either on explicit <literal>Conflicts:</literal>
RPM header or file level). Both will be pulled in, hence disabling you to install
everything (<literal>'*'</literal> or -previously-
<literal>@Everything</literal> in the kickstart package manifest).
+ </para>
+ </note>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Makes_Sense">
+ <title>When This Makes Sense</title>
+ <para>
+ If you are composing a large distribution of which 3 million users in
even so many different situations having so many different expectations and desires, you
will want this behaviour, since you won't be able to determine which one of the
packages for each capability someone in that group wants, and which one may not want. Or,
in case of upgrades, what the system needs. Shipping them all on the same media is the
best solution in these cases.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Does_Not_Make_Sense">
+ <title>When This Does Not Make Sense</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ When creating installation media to be installed
unattended, or to be used in conjunction with deployment strategies
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When creating installation media to be upgrading PCs you
have controlled from the beginning, such as in a company
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Installation for a small group of users or systems
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When creating minimal installation media, or media with a
minimal RPM payload.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When creating installation media that is to be used with
installing "Everything" in the RPM payload.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Exclusive">
+ <title>Exclusive Dependency Resolving</title>
+ <para>
+ Exclusive dependency resolving is what YUM does when you execute a
<application>yum install</application>. Unless you've specified one of the
packages satisfying any of the dependencies in the transaction, YUM is going to look up
the best match for you. This results in the installation of only one package providing the
requirement(s) of other packages, rather then all packages providing said requirement
being installed.
+ </para>
+ <para>
+ As an example, imagine you install a package foo which requires
capability web-client. Using exclusive dependency resolving, YUM would select one package
providing the web-client capability whereas inclusive dependency resolving would include
all packages providing the web-client capability.
+ </para>
+ <para>
+ During the installation procedure, one of the major features of
installation media, anaconda is going to use YUM dependency resolving to satisfy all the
dependencies.
+ </para>
+ <note>
+ <title>Installation Procedure !== Upgrade Procedure</title>
+ <para>
+ Note that an installation procedure is not the same as an upgrade
procedure. With an installation procedure for example, you have control over the
partitioning layout whereas with an upgrade procedure, you have none. More importantly,
during an upgrade procedure, the (already installed) system has an existing package set
which needs to be updated/upgraded and thus could possibly introduce dependency resolving
problems, because of third party packages installed on the system, or because the media
used to upgrade the system with does not contain the software packages needed to complete
the upgrade RPM transaction.
+ </para>
+ </note>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Copying_Arbitrary_Files_Onto_The_Media">
+ <title>Copying Arbitrary Files Onto the Media</title>
+ <para>
+ With <literal>--copy-dir</literal>, you can specify a path
Revisor should copy onto the media.
+ </para>
+ <formalpara>
+ <title>Installation Media</title>
+ <para>
+ In the case of installation media, the path specified with
<literal>--copy-dir</literal> will be copied recursively to the
<filename>files/</filename> sub-directory at the root of the ISO image (or the
first ISO image if you compose split media).
+ </para>
+ </formalpara>
+ <para>
+ A few use-case examples:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ If one kickstart profile is not enough for you to deploy the
product onto your systems, create a directory that holds multiple kickstart files and
specify the path to that directory using <literal>--copy-dir</literal>. The
kickstart files now end up available to the installation procedures as
<filename>cdrom:/files/*.ks</filename>, and can thus be used by specifying
them on the kernel cmdline (<code>ks=cdrom:/files/profile1.ks</code>), or,
when used in combination with <literal>--isolinux-cfg</literal> from the
<xref linkend="Revisor_Reference_Manual-Plugins-Upstream-Isolinux_Plugin"
endterm="Isolinux_Plugin" />, can be added as an option in the isolinux
menu.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If you have files or scripts that need to be copied onto, or run
on, the installed system before it attempts to reboot and operate normally, you can use
<literal>--copy-dir</literal> to make these files and scripts available during
the installation and copy or execute them from either <code>%pre</code> or
<code>%post</code> scripts.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <formalpara>
+ <title>Live Media</title>
+ <para>
+ In the case of live media, the path specified with
<literal>--copy-dir</literal> will be copied recursively onto the root
directory (<filename>/</filename>) of the live media filesystem (which is
probably loop-mounted onto <filename>/var/tmp/revisor/</filename>).
+ </para>
+ </formalpara>
+ <para>
+ If, for example, you want to copy a home directory onto the live media, and
the home directory you want to copy is at <filename>/home/user1/</filename> on
the composing system, you copy this directory so that the root of that new directory has a
sub-directory <filename>home/</filename> which in turn contains a
sub-directory <filename>user1/</filename>:
+ </para>
+ <para>
+ <screen>$ <userinput>mkdir -p
/tmp/something/home/</userinput>
+$ <userinput>cp -a /home/user1 /tmp/something/home/.</userinput>
+$ <userinput>revisor [options] --copy-dir
/tmp/something/</userinput></screen>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Cleaning_Up">
+ <title>Cleaning Up</title>
+ <para>
+ Revisor tends to clean up after itself by default. If a product compose
succeeds, you (probably) don't need to change this default behaviour. However, by
default, Revisor tends to leave the YUM cache directories untouched. This is to prevent
you from having to download all the packages a second, third or more times when you run
another compose.
+ </para>
+ <para>
+ To change this default behaviour, Revisor has an option
<literal>--clean-up</literal>. The default value for this option is
<literal>1</literal>, meaning Revisor will clean up it's temporary,
compose-specific files, but no files that could be re-used. Specifying
<literal>--clean-up=0</literal> will cause Revisor to leave everything behind
and not clean anything up at all. This is most ideal for troubleshooting purposes, where
one needs to examine the temporary, compose-specific files and see what went wrong. To
clean up everything however, because for example you might be low on disk-space, use
<literal>--clean-up=2</literal>. Revisor will then also clean up the files
that could be re-used.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Cleaning_Up-Exception-to-the-Rule">
+ <title>Exception to the Rule</title>
+ <para>
+ There's one exception to the rule of cleaning up.
<filename>/var/tmp/revisor/</filename>, or put more accurately, the path
specified as the <code>installroot</code> in the YUM configuration file
configured with the model used to compose the product, will not be cleaned up afterwards.
When composing live media, this directory may still be in use as a mount-point for the
live media filesystem. Removing this directory recursively in these cases would not make
sense.
+ </para>
+ </section>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Configuration.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Configuration.xml
new file mode 100644
index 0000000..647706f
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Configuration.xml
@@ -0,0 +1,280 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Configuration">
+ <title>Configuration</title>
+ <para>
+ Revisor configuration can be performed using <xref
linkend="Revisor_Reference_Manual-Configuration-Files" />, or through
<xref linkend="Revisor_Reference_Manual-Configuration-Command-line_Options"
/>.
+ </para>
+
+ <section id="Revisor_Reference_Manual-Configuration-Files">
+ <title>Configuration Files</title>
+ <para>
+ Revisor uses configuration files for a large part of it's operations.
These files mostly reside in <filename>/etc/revisor/</filename>. There is two
types of files Revisor uses:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>Revisor Configuration Files</title>
+ <para>
+ Revisor configuration files, such as
<filename>/etc/revisor/revisor.conf</filename>, contain information and
settings unique to Revisor. A Revisor configuration file is where you specify default
options, and include information on different products you want to compose.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>YUM Configuration Files</title>
+ <para>
+ YUM configuration files, such as the files in
<filename>/etc/revisor/conf.d/</filename>, contain configuration for YUM. To
be more precise, Revisor doesn't even handle the files (it let's YUM do so). The
files in <filename>/etc/revisor/conf.d/</filename> practically contain the
same information as <filename>/etc/yum.conf</filename> combined with the files
in <filename>/etc/yum.repos.d/</filename> (but not exactly the same
content!).
+ </para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Files-_etc_revisor_revisor.conf">
+
<title><filename>/etc/revisor/revisor.conf</filename></title>
+ <para>
+ The default Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. This configuration file
contains two sections:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+
<title><literal>[revisor]</literal></title>
+ <para>
+ The global section. Options specified in this section
apply to all the models defined in this configuration file.
+ </para>
+ </formalpara>
+ <para>
+ See also: <xref
linkend="Revisor_Reference_Manual-Configuration-Global_and_Model_Configuration"
/>
+ </para>
+ </listitem>
+ <listitem>
+ <formalpara>
+
<title><literal>[<replaceable>model</replaceable>]</literal></title>
+ <para>
+ Model configuration. One section per <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-model" />.
+ </para>
+ </formalpara>
+ <para>
+ See also: <xref
linkend="Revisor_Reference_Manual-Configuration-Global_and_Model_Configuration"
/>
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ Model sections basically define a single product. Amongst other things,
the distribution name, release version, architecture for the product to be composed and
what YUM configuration file to use, are (often) defined on a per-model basis. There is a
large number of settings available for models, and they are all related to how the product
is going to look like. The product name, the location of the RPM payload for installation
media, the ISO label, the YUM configuration file to use, are all model settings.
+ </para>
+ <para>
+ Using models, you can reproduce the outcome of the compose process, a
<emphasis>product</emphasis>, simply by not changing the model configuration
anymore. If you want something different, you can just add another model section, and name
it differently.
+ </para>
+ <para>
+ To see what models are available with the Revisor standard package, use:
+ </para>
+ <para>
+ <screen>$ <userinput>revisor
--list-models</userinput></screen>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Files-_etc_revisor_conf.d_">
+
<title><filename>/etc/revisor/conf.d/</filename></title>
+ <para>
+ The default YUM configuration files used by Revisor. In a model
configuration section, the <literal>main =</literal> setting points to one of
the YUM configuration files in <filename>/etc/revisor/conf.d/</filename>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Files-Updates">
+ <title>Updates to Configuration Files</title>
+ <para>
+ The Revisor packages are not allowed to overwrite files in
<filename>/etc/</filename>, and they should thus not do so. If an update to
Revisor is installed on your system, files with the extension
<literal>.rpmnew</literal> may be created --if you had changed anything in the
file before applying the update. Since this world isn't perfect, configuration errors
may exist in the configuration files shipped with Revisor. Please pay close attention to
updates to these configuration files by examining the
<literal>.rpmnew</literal> files.
+ </para>
+ <para>
+ You can use any file location (not just
<filename>/etc/revisor/</filename>) for your own custom configuration.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Files-Changing_Configuration_Files">
+ <title>Changing Configuration Files</title>
+ <para>
+ If you are creating your own models off of the ones that ship with
Revisor itself, please consider using an alternative configuration file (a file other then
<filename>/etc/revisor/revisor.conf</filename>, or copy the original file for
safekeeping. This way, you can always return to a working, sample configuration file and
test whether it is Revisor causing errors, or configuration mistakes.
+ </para>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Global_and_Model_Configuration">
+ <title>Global and Model Configuration</title>
+ <para>
+ The default Revisor configuration file,
<filename>/etc/revisor/revisor.conf</filename> consists of multiple sections
(the file is in .INI format). One is the <literal>[revisor]</literal> global
section, where you specify configuration options that apply to each other section or
<xref linkend="Revisor_Reference_Manual-Appendix-Terminology-model" />.
+ </para>
+ <para>
+ The options specified in the global and model configuration sections apply to
the Revisor compose in the following order:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ The options from the global section are read, tested and set.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The options from a model section are read, tested and set,
regardless of whether the global section had caused the setting to be set to a certain
value already.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ For example, if you know all the models in a configuration file are optical
live media products, the configuration sections could look like the following:
+ </para>
+ <para>
+ <screen>[revisor]
+# Optical live media for all models
+media_live_optical = 1
+
+[model1]
+main = /etc/revisor/conf.d/revisor-model1.conf
+description = The model1 product
+architecture = i386
+# This is already configured in the global section of
+# this configuration file and can thus be removed.
+#media_live_optical = 1</screen>
+ </para>
+ <note>
+ <title>When Running the GUI</title>
+ <para>
+ Note that when running Revisor in Graphical User Interface mode, you can
still change a lot of the settings supplied by Revisor through the configuration files
loaded. When you are running Revisor in GUI mode, the configuration files supply the
defaults.
+ </para>
+ </note>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories">
+ <title>YUM Repository Configuration</title>
+ <para>
+ The files in <filename>/etc/revisor/conf.d/</filename> are YUM
configuration files. Revisor directs YUM to use these files during the compose process,
and does not handle these files itself. This chapter lists a few tips and tricks.
+ </para>
+ <para>
+ Because these files are YUM Configuration files, you can configure anything
that YUM supports. See <application>man yum.conf</application> for more
details.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-releasever_and_basearch">
+ <title>$releasever and $basearch</title>
+ <para>
+ When configuring a repository URL, make sure you do not use
<replaceable>$releasever</replaceable> or
<replaceable>$basearch</replaceable> variables. Since Revisor allows
cross-composing distributions between different versions of the operating system, as well
as different architectures, these variables need to be expanded to the value intended.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Using_a_Local_Mirror">
+ <title>Using a Local Mirror</title>
+ <para>
+ If you have a local mirror of Fedora, you can use the
<literal>baseurl</literal> configuration directive in each repository
configuration section to tell YUM to use the local mirror.
+ </para>
+ <para>
+ Optionally, you can also disable the
<literal>mirrorlist</literal>, preferably by outcommenting it, so that YUM
will only use the local mirror.
+ </para>
+ <para>
+ The default <literal>baseurl</literal> uses
<
literal>http://download.fedoraproject.org/</literal>. This location may or
may not be suitable for you. If you have a local mirror, you might want to change this
setting here, or add your mirror to Fedora Project's Mirrorlist.
+ </para>
+ <note>
+ <title>Adding your local mirror to the Mirrorlist</title>
+ <para>
+ You can add your local mirror to the Mirrorlist, so that the Fedora
Project mirrorlist redirects you to your local mirror. Additionally, systems in your local
network(s) will be redirected to the local mirror. The local mirror does not have to be a
public mirror in order to do so. See <ulink
url="http://admin.fedoraproject.org/mirrormanager/" /> for more details.
+ </para>
+ </note>
+ <para>
+ Set each <literal>baseurl</literal> to the location of the
repository on the local mirror.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Using_Local_Files">
+ <title>Using Local Files</title>
+ <para>
+ If you have the repositories on your local filesystem, configure a
<literal>baseurl</literal> of
<filename>file://<replaceable>/path/to/repository/</replaceable></filename>.
+ </para>
+ <note>
+ <title>Make sure to supply the correct path</title>
+ <para>
+ Make sure to supply the correct path to the repository.
<filename>file://</filename> is the
"<emphasis>protocol</emphasis>" for the location, and the location
is
<filename><replaceable>/path/to/repository/</replaceable></filename>.
Put together, you have <emphasis>three</emphasis> slashes.
+ </para>
+ </note>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Using_a_DVD">
+ <title>Using a DVD</title>
+ <para>
+ A DVD does not contain enough packages to rebuild the installer images.
If you are using a DVD and you want to rebuild the installer images, you will need to have
a network connection and a mirror you can reach.
+ </para>
+ <para>
+ There is a list of required packages, but since the packages change per
release and may change in the middle of the release cycle as well, we cannot hand you a
list that just works.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Adding_Third_Party_Repositories">
+ <title>Adding Third Party Repositories</title>
+ <para>
+ When adding a third party repository, make sure you add the correct
release version as well as architecture to the Revisor YUM configuration file. Verify the
location for the <literal>baseurl</literal> and/or
<literal>mirrorlist</literal> you configure manually or through YUM. Make sure
you expand any <literal>$releasever</literal>,
<literal>$basearch</literal> and <literal>$arch</literal>
variables.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Creating_Your_Own_Repository">
+ <title>Creating Your Own Repository</title>
+ <para>
+ Creating your own repository is relatively simple. You take a directory,
dump some RPM packages in it, and run <application>createrepo</application>.
See <literal>man createrepo</literal> for more information.
+ </para>
+ <para>
+ People often wonder how Revisor handles comps.xml group files.
+ </para>
+ <para>
+ When you create your own repository, follow the directions in <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Adding_Third_Party_Repositories"
/> to add the repository configuration to Revisor's YUM configuration, since your
own repository is a third party repository as well.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting">
+ <title>Testing & Troubleshooting the YUM
Configuration</title>
+ <para>
+ Before you use the (modified) configuration file, take it for a test
run.
+ </para>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Configuring_A_Proxy">
+ <title>Configuring A Proxy Server</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Command-line_Options">
+ <title>Command-line Options</title>
+ <para>
+ With the command-line options available, you can configure options that
either override what is in the configuration file or have simply not been configured using
the configuration file. With the default configuration files that come with the
<application>revisor-cli</application> package for example, no media products
have been pre-configured in the default section. In the
<application>revisor-unity</application> package however, some default
configuration has been applied so that Fedora Unity Re-Spins actually create CD, DVD and
Rescue ISO images as well as the Installation Tree and include the sources.
+ </para>
+ <para>
+ Only some configuration options have CLI parameters. Use
<application>revisor --help</application> to see a complete list of
configuration options you can supply on the command line.
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Development.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Development.xml
new file mode 100644
index 0000000..9df83c1
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Development.xml
@@ -0,0 +1,220 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Development">
+ <title>Development</title>
+ <para>
+ This chapter sheds some light on development of Revisor, such as different
branches and maintenance policies, versioning schemas, etcetera.
+ </para>
+ <para>
+ This part of the documentation relies on whether you have
<application>sudo</application> set up properly. If you have not, you're
on your own.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Development-Running_Revisor_from_Source">
+ <title>Running Revisor from Source</title>
+ <para>
+ The latest code in GIT can be built into a RPM you can install but one of the
advantages of having the complete source tree is that you can run it directly from that
source tree so that when you pull in the next updates you do not have to rebuild the RPM.
Note that we do not bump the version number for every little change we make, and as such
the RPM built does not allow you to use <literal>rpm -Uvh</literal> or
<literal>rpm -Uvh --oldpackage</literal>. Of course, Revisor's Makefiles
also allow <application>make install</application>, but that leaves a number
of unmanaged files on your computer you would have to track down manually in order to
remove Revisor completely.
+ </para>
+ <warning>
+ <title>Cannot have Revisor RPMs installed</title>
+ <para>
+ When running revisor from within the source tree, you cannot have any of
the Revisor packages installed. Having Revisor RPM packages installed regardless will mess
up the GIT repository or source tree.
+ </para>
+ </warning>
+ <para>
+ To run Revisor from within the source tree, checkout the master branch, and
run the <filename>./switchhere</filename> script:
+ </para>
+ <para>
+ <screen>$
<userinput>./switchhere</userinput></screen>
+ </para>
+ <para>
+ The <filename>./switchhere</filename> script does the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Symlink <filename>/etc/revisor/</filename> to
<filename><replaceable>$PWD</replaceable>/conf/</filename> so that
<filename>/etc/revisor/revisor.conf</filename>, the primary configuration
file, and <filename>/etc/revisor/conf.d/</filename>, the configuration
directory, are valid (the symlink causes the actual file and directory to be found in
<filename><replaceable>$PWD</replaceable>/conf/</filename>)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Create the <filename>/usr/share/revisor/</filename>
directory so that a couple of symlinks can be created from within that directory:
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Revisor 2.1.0 (development version in branch master), this
includes:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/pixmaps/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Revisor 2.0.5 (branch F-7, F-8 or EL-5), this includes:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/glade/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/glade/pixmaps/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Revisor 2.1.0, also create symlinks from within the
appropriate
<filename>/usr/share/man/man<replaceable>$x</replaceable>/</filename>
directories to the source for these man pages in
<filename><replaceable>$PWD</replaceable>/doc/</filename>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ From this moment on, you should be able to run:
+ </para>
+ <para>
+ <screen>$
<userinput>./revisor.py</userinput></screen>
+ </para>
+ <note>
+ <title>Root privileges required</title>
+ <para>
+ Note that revisor needs root privileges to run, and that you'll need
to sudo or su-c to gain those. Use here whatever you find the most convenient; Revisor
though should have a nice error message when run without those privileges.
+ </para>
+ </note>
+
+ <section
id="Revisor_Reference_Manual-Development-Running_Revisor_from_Source-Required_Packages">
+ <title>Installing the Required Packages</title>
+ <para>
+ To be able to run Revisor from within the source tree, you'll need to
install the required packages for each component, of course.
+ </para>
+ <para>
+ To get a current list of those packages, use:
+ </para>
+ <para>
+ <screen>$ <userinput>rpmquery --specfile
--qf="%{REQUIRES}\n" revisor.spec | sort | uniq | xargs -n 1 repoquery
--requires --alldeps --resolve</userinput></screen>
+ </para>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Development-Building_Revisor_Packages">
+ <title>Building Revisor Packages</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Development-Tickets">
+ <title>Tickets</title>
+ <para>
+ bugzilla, trac
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Development-Adding_A_New_Spin">
+ <title>Adding a new spin or remix</title>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Add the appropriate models in the appropriate configuration file
for Revisor.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add the appropriate configuration file to the appropriate
automake Makefile
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Run autoreconf && ./configure &&
make rpm to verify the rpm building
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Create the model's YUM configuration files with the following
repositories:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ fedora, enabled, pointing to Everything
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fedora-source, disabled, pointing to Everything
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fedora-updates, enabled, pointing to the updates
repository
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fedora-updates-source, disabled, pointing to the
updates repository
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ anaconda-updates, enabled, pointing to the anaconda
updates repository
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ anaconda-updates-source, disabled, pointing to the
ananconda updates repository
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Development-Versioning_Schema">
+ <title>Versioning Schema</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Development-Release_Procedure">
+ <title>Release Procedure</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Features.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Features.xml
new file mode 100644
index 0000000..6321641
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Features.xml
@@ -0,0 +1,175 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Features">
+ <title>Features</title>
+ <para>
+ Revisor allows you to build and customize your own Remix, Re-Spin, Spin or even
your own distribution, based on Fedora and derivative distributions such as Red Hat
Enterprise Linux and CentOS.
+ </para>
+ <para>
+ Revisor builds installation media, live media, installation trees, cobbler
distro's and profiles, virtualization images and more.
+ </para>
+
+ <section id="Revisor_Reference_Manual-Features-Installation_Media">
+ <title>Installation Media</title>
+ <para>
+ Installation media is what you use to install a system with. The installation
media composed will allow you to go through the installation process, answering a number
of questions (either manually or through kickstart), and ends up in a system running the
distribution you install.
+ </para>
+ <para>
+ Composing installation media using the Revisor GUI allows you to choose the
media (CD, or DVD), the packages to be included on the media (also called
<emphasis>RPM payload</emphasis>).
+ </para>
+ <para>
+ Using the command-line interface, Revisor also allows you to choose DVD
Duallayer and single- or dual-layer Bluray.
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Installation_Trees">
+ <title>Installation Trees</title>
+ <para>
+ Installation trees are typically used in environments where a distribution
needs to be deployed over multiple systems, or is very volatile. Installation trees are
often made accessible through HTTP or FTP protocols, in one place, and do not have as much
overhead (in creating .iso files, and burning those to optical media to distribute them).
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Live_Media">
+ <title>Live Media</title>
+ <para>
+ Live media often is a perfect showcase for an Operating system, Desktop
Environment or any other thing you want to show. Also, since Live media is read-only, live
media perfectly allows for a kiosk system, a system that may change while it's
running, but restores all original settings when rebooted.
+ </para>
+ <para>
+ Live media is also installable. You start out with a system and boot it from
live media, then choose to install the live media. This however is inferior to real
installation media, but is convenient if you happen to like what you see when running from
live media.
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Reproducibility">
+ <title>Reproducibility</title>
+ <para>
+ Media composed with Revisor is extremely reproducible. Using
<literal>kickstart_exact_nevra</literal>, you can even select specific
versions of packages to be included on the product.
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Consistency">
+ <title>Consistency</title>
+ <para>
+ When composing different types of media, such as CDs and DVDs, Revisor
composes these discs in one run, making the different media completely consistent.
<application>pungi</application> would require you to run twice, once for CDs,
and once for DVDs. This is because <application>pungi</application> uses the
<literal>part /
<replaceable><size></replaceable></literal> kickstart
configuration directive to set the maximum size of the media, and has no option to
override the size on the command-line, nor to compose a certain set of media (it all
depends on the size).
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Flexibility">
+ <title>Flexibility</title>
+ <para>
+ Over the years, Revisor has been adopted to serve a large number of
use-cases, where use-cases stretch from media being composed as efficient as possible, as
robust as possible, specific deployment needs and expectations, and to match the Fedora
Project Release Engineering tools' behaviour. All this allows you to configure a lot,
and thus customize a lot, making Revisor more of a flexible framework.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Features-Graphical_User_Interface">
+ <title>Graphical User Interface</title>
+ <para>
+ Revisor has a Graphical User Interface or GUI, in addition to the Command
Line Interface or CLI, which makes Revisor more accessible to users then the other tools,
which are CLI only. Most people only know of Revisor through the GUI, and may think there
is no CLI to Revisor. Only when it comes down to many of the additional features that
Revisor has, and that do not fit in a simplified GUI, one gets down with it using the
CLI.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Features-Open_Development_Community">
+ <title>Open Development Community</title>
+ <para>
+ Revisor has one of those old-fashioned Free and Open Source Software
development communities, allowing anyone to make a contribution to Revisor. In fact,
Revisor has not bounced a single patch since the project started. Therefor, it improves
faster then any of the other compose tools, and is better adaptible to your needs and
expectations, because unlike the other utilities, Revisor is not limited to use-cases that
apply to Fedora Project Release Engineering.
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Plugin_System">
+ <title>Plugin System</title>
+ <para>
+ Revisor has a plugin system so that you can easily extend Revisor. This
plugin system gives you full control over the Revisor procedures, and hands you off
anything Revisor knows about the compose process. There's are multiple plugins
available from upstream as well. To give you an example, the ability to replace
<filename>isolinux.cfg</filename> after the compose is done, is a plugin. See
<xref linkend="Revisor_Reference_Manual-Plugins" /> for more information.
+ </para>
+
+ <para>
+ Current plugins included with Revisor include:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Cobbler_Plugin" />
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Isolinux_Plugin" />
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Rebrand_Plugin" />
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Reuse_Installer_Images_Plugin"
/>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Features-Extraneous_Debugging">
+ <title>Extraneous Debugging</title>
+ <para>
+ Revisor has extraneous debugging, which enables you, as well as the
supporters and Revisor's developers, to trace down what happens exactly, and where
anything might go wrong.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Features-Using_YUM_Configuration_Files">
+ <title>Using YUM Configuration Files</title>
+ <para>
+ Revisor uses YUM configuration files, where everyone else is not. With using
YUM configuration files however, the control you have is nearly limitless. With all the
features in YUM already, using it's configuration file format and letting YUM itself
work with those allows Revisor to do a lot of cool things without doing anything itself:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>Excluding packages from repositories</title>
+ <para>
+ Excluding packages from repositories means a great deal. Not
having them exist in the <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-Package_Sack" />
ensures the package will not end up in the product. This may be what you want for maybe
just a few, or maybe an awful lot of packages.
+ </para>
+ </formalpara>
+ <para>
+ Using the alternative configuration file format, kickstart, in
use by every other compose tool, and the <literal>repo</literal> configuration
directive that is available with kickstart, you can exclude packages using the
<literal>--exclude=</literal> parameter to the
<literal>repo</literal> configuration directive. However, that parameter does
not allow wildcard matches.
+ </para>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Including only a certain (set of)
package(s)</title>
+ <para>
+ Including only a certain package, or certain set of packages
is valuable when a lot of packages exist in the repository configured, but you only need
one or two.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Concurrent use of baseurl(s) and the
mirrorlist</title>
+ <para>
+ Like during normal YUM operations, the baseurl(s) and the
mirrorlist configured for a repository are used concurrently. This is not possible with
the kickstart configuration directive <literal>repo</literal>, which takes
either <literal>--baseurl</literal> or
<literal>--mirrorlist</literal>, but not both.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Repository priorities</title>
+ <para>
+ Settings available with YUM are available within Revisor as
well, like repository priorities. Using repository priorities, you can have YUM decide to
pull a package from the repository with a higher priority (a lower priority number) rather
then a repository with a lower priority.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>YUM Plugins</title>
+ <para>
+ YUM plugins, such as
<application>yum-fastestmirror</application>,
<application>yum-fedorakmod</application>, are available, giving you even more
control over the behaviour of YUM.
+ </para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ </para>
+ </section>
+</chapter>
+
diff --git
a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Frequently_Asked_Questions.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Frequently_Asked_Questions.xml
new file mode 100644
index 0000000..7e97e0e
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Frequently_Asked_Questions.xml
@@ -0,0 +1,54 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Frequently_Asked_Questions">
+ <title>Frequently Asked Questions</title>
+ <para>
+ para
+ </para>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-How_Does_Revisor_Handle_Comps">
+ <title>How Does Revisor Handle Comps?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-What_Are_Installer_Images">
+ <title>What Are Installer Images?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Pungi">
+ <title>What is the relationship between Revisor and Pungi?</title>
+ <para>
+ Where pungi builds a bunch of RPMs into ISO images and installation trees
through one single procedure, perfect for Release Engineering on something like the Fedora
Project, Revisor does it different entirely.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Livecd-tools">
+ <title>What is the relationship between Revisor and
livecd-tools?</title>
+ <para>
+ Revisor depends on livecd-tools for the composing of live media. Creating the
filesystem to install the packages to, turning that image file into a SquashFS file, and
applying the settings inside the chroot.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-Why_Rebuild_Installer_Images">
+ <title>Why Rebuild Installer Images?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-How_do_I_create_an_updates.img">
+ <title>How do I create an updates.img?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Installation.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Installation.xml
new file mode 100644
index 0000000..f56855f
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Installation.xml
@@ -0,0 +1,104 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Installation">
+ <title>Installation</title>
+ <para>
+ This chapter contains the installation instructions for Revisor.
+ </para>
+
+ <section id="Revisor_Reference_Manual-Installation-Packages">
+ <title>Packages</title>
+ <para>
+ You can install Revisor using RPM packages from the repositories already
configured on your system.
+ </para>
+
+ <formalpara
id="Revisor_Reference_Manual-Installation-Packages-revisor">
+ <title><application>revisor</application></title>
+ <para>
+ Shorthand package for the Revisor GUI.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Installation-Packages-revisor-cli">
+
<title><application>revisor-cli</application></title>
+ <para>
+ The CLI version of Revisor. This package is always installed, as it
contains the Python code for Revisor's core. Installing just this package will give
you the command-line version of Revisor, and prevents the graphical dependencies from the
<xref linkend="Revisor_Reference_Manual-Installation-Packages-revisor-gui"
/> package to be installed as well.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Installation-Packages-revisor-gui">
+
<title><application>revisor-gui</application></title>
+ <para>
+ The GUI version of Revisor. This is the actual package containing the
Graphical User Interface, as opposed to <xref
linkend="Revisor_Reference_Manual-Installation-Packages-revisor" />. Depends
on <xref linkend="Revisor_Reference_Manual-Installation-Packages-revisor-cli"
/>, and thus also installs the command-line version of Revisor.
+ </para>
+ </formalpara>
+
+ <section
id="Revisor_Reference_Manual-Installation-Packages-YUM-RHEL">
+ <title>Red Hat Enterprise Linux 5 or higher</title>
+ <para>
+ On Red Hat Enterprise Linux 5 or higher, and derivatives, install the
Extra Packages for Enterprise Linux (EPEL) repository.
+ </para>
+ <para>
+ Then, give the following command:
+ </para>
+ <para>
+ <screen># <userinput>yum install
revisor</userinput></screen>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Installation-Packages-YUM-Fedora">
+ <title>Fedora 7 or higher</title>
+ <para>
+ On Fedora 7 or higher, and derivatives, no additional repository
configuration is required.
+ </para>
+ <para>
+ Give the following command:
+ </para>
+ <para>
+ <screen># <userinput>yum install
revisor</userinput></screen>
+ </para>
+ <note>
+ <title>About EOL Releases</title>
+ <para>
+ Please bear in mind that Fedora releases that are past the point of
End-Of-Life, approximatly 13 months after the initial release, are not supported anymore
for use with Revisor. Also, the version of Revisor running on these EOL versions of Fedora
are not supported anymore.
+ </para>
+ </note>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Installation-The_Latest_And_Greatest">
+ <title>The Latest and Greatest</title>
+ <para>
+ The latest and greatest is available from GIT, at <ulink
url="git://git.fedorahosted.org/revisor" />. To clone this repository, use:
+ </para>
+ <para>
+ <screen>$ <userinput>git clone
git://git.fedorahosted.org/revisor/</userinput></screen>
+ </para>
+ <para>
+ Using the GIT clone, you have the several options to start using the latest
and greatest:
+ </para>
+ <formalpara>
+ <title>Running directly from the source</title>
+ <para>
+ You can run directly from within the source tree. See <xref
linkend="Revisor_Reference_Manual-Development-Running_Revisor_from_Source" />
for more information on how to do so.
+ </para>
+ </formalpara>
+ <warning>
+ <title>Installed packages and running from source</title>
+ <para>
+ Do not run Revisor from source while RPM packages have been installed.
Files managed by a package will get created, moved and removed when using Revisor's
source tree, and updates to the installed RPM packages will destroy these changes.
+ </para>
+ </warning>
+ <formalpara>
+ <title>Building your own packages</title>
+ <para>
+ You can create your own packages, so that you have all the benefits of
RPM. See <xref
linkend="Revisor_Reference_Manual-Development-Building_Revisor_Packages" />
for more information on how to do so.
+ </para>
+ </formalpara>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Introduction.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Introduction.xml
new file mode 100644
index 0000000..561b37c
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Introduction.xml
@@ -0,0 +1,71 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Introduction">
+ <title>Introduction</title>
+ <para>
+ Revisor is a community product by Fedora Unity. Amongst other features, it allows
the creation of installation media and live media in the easiest possible manner, through
a click-and-go GUI. This chapter gives some insight on how and why Revisor was born, and
how the product evolved since.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Introduction-History_Of_Revisor">
+ <title>History of Revisor</title>
+ <para>
+ Revisor development started in December 2006, during the Fedora 7 development
cycle, in which -you might recall- the Fedora Core repository, maintained by Red Hat, and
Fedora Extras repository, mostly maintained by the community, were merged into one large
repository being maintained by both community members as well as Red Hat employees -which
are mostly community members hired by Red Hat -so community altogether. Before then Red
Hat employees maintained Fedora Core -as the set of packages upstream for Red Hat's
Enterprise product- and the community maintained a repository with additional software;
Fedora Extras. Red Hat composed the Fedora distribution every once in a while, but the
merge introduced the possibility for packages that were in Fedora Extras to be included in
the main distribution, and for the community to also (co-)maintain the (former) Fedora
Core packages that originally made up the distribution.
+ </para>
+ <para>
+ In addition to this huge merge of packages, Red Hat employees were also able
to release the entire build process to the community, meaning that from the moment the
source is committed up and until the release is announced, the entire process is open. Not
that is was all behind closed doors or proprietary or anything, the community just
couldn't really play with it as much. We now have koji (build system), mash
(repository compose from build system products), bodhi (updates release system),
livecd-tools (compose tool for live media) and pungi (compose tool for installation
media).
+ </para>
+ <para>
+ Composing media was an obscure process up and until the moment these tools
exposed the best way to compose (a set of) installation media. Fedora Unity had been
building and releasing so-called Re-Spins1 regularly, but they were built using a
not-so-very intelligent bash script. Like hundreds if not thousands of other parties that
needed to build their own media one way or the other, the entire process was based on the
best educated guess of what should happen. Luckily, in the FOSS world an educated guess is
often a very good guess, despite the fact that one keeps learning even years after the
original engagement.
+ </para>
+ <para>
+ When in December 2006 the compose tools hit a stage in which they were
released to the public, Fedora Unity was eager to get these tools and study them and use
them for composing their Re-Spins. Up and until then, Re-Spins were composed with the
aforementioned bash script that didn't do much but trigger the appropriate commands in
a sequence; There wasn't any dependency resolving between the packages included nor
did we know exactly how a release was supposed to be composed -it was our educated guess
of how it could happen. Although it often led to success, we've had many, many failed
Re-Spins as well. With a handful of volunteers, you can imagine the amount of frustration
that might give. Fedora Unity was eager to improve their Re-Spin process.
+ </para>
+ <para>
+ So, early February 2007, a number of Fedora Unity members attended “FUDCon
2007” in Boston, and presented a working GUI front-end to livecd-tools and pungi enabling
regular users to also re-compose or re-spin the installation media and live media they had
been getting from the Fedora Project. Revisor at this point just made it “as easy as
possible”. Besides the possibilities of pungi and livecd-tools themselves, the wizard
Revisor had apparently was very, very useful to mere mortals. From that point on, things
took off.
+ </para>
+ <para>
+ Fedora Unity decided Revisor could accomplish more then just being a
front-end to existing compose tools and enable someone to tweak a lot of settings as well.
In March 2007, Revisor was rebuild from the ground up in March 2007 to allow a more
flexible process, more dependent on the configuration directives it was given and less so
on the processes of the existing tools. When in San Diego at the Red Hat Summit (early May
2007), Robert 'Bob' Jensen and Jonathan Steffan gave a presentation on
“Customizing Fedora”, the responses were amazing. Since then Revisor has evolved from a
front-end to existing tools to the complete compose tool it is today, with lots of
configuration options for specific use-cases.
+ </para>
+ <para>
+ For users, Revisor is particularly useful because it has a GUI front-end
wizard, which, with the defaults settings, will just succeed in getting a user the media
he/she wants. If a user decides he needs little adjustment of the media, the GUI allows
for selecting the most common options. If a user decides he needs some less common
adjustments, the configuration options gives him very granular control -and as long as the
documentation on all the options is sufficient, users will be able to make those less
common adjustments.
+ </para>
+ <para>
+ For administrators on the other hand, Revisor is the tool that gives so much
granular control over what happens, that it can serve almost every specific use-case. In
this aspect, Revisor could potentially replace the compose tools administrators have been
developing themselves with a consistent and flexible program flow.
+ </para>
+ <para>
+ This document should enable you to study the process of composing
installation and live media, and comprehend the logic Revisor adds to that process.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Introduction-The_Installation_Media_Challenge">
+ <title>The Installation Media Challenge</title>
+ <para>
+ When Fedora Unity first started doing these so-called Re-Spins, the challenge
ahead could maybe be explained like this:
+ </para>
+ <para>
+ <emphasis>When a user downloads a Fedora release and installs the
distribution, the user will need to download and install a number of updates. The “older”
the release becomes, the more updates will be available, and the greater the total
download size of these updates the user will need to download on top of the download size
of the original release media.</emphasis>
+ </para>
+ <para>
+ “older” is in quotes on purpose, because really for an operating system -or
“distribution” if you will- being released every 6 months, “old” is quite a relative
concept. The number of updates available however, at any given time during the release
cycle, may range from 0 right after the release (which has never happened before), to the
total amount of packages installed on the user's system (often over 2000). You can
imagine the size of these updates ranging from 0 MB to an astonishing 2GB(!), only 6
months after the initial release.
+ </para>
+ <para>
+ Some of us do not have the bandwidth capacity or enough data transfer quota
to download this many extra, rather useless bits. In addition, some of us do not have an
Internet connection at all, and thus benefit getting the updates from Re-Spins directly.
+ </para>
+ <para>
+ The use of updates in Re-Spins has several more beneficial side-effects,
which we'll explain in more detail later on in this document. Long story short; If for
some reason the software used to compose the media (the release) with does not work for
your hardware or your specific needs, updated software incorporated in the composed
installer images might resolve that problem.
+ </para>
+ <para>
+ This is the original challenge the Fedora Unity team resolved a long time
ago, and is at the base of what Revisor does nowadays.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Introduction-The_Live_Media_Challenge">
+ <title>The Live Media Challenge</title>
+ <para>
+ Back in the day Fedora Core 5 was the most recent release, Fedora Unity
created so-called live media using Kadischi. In that time, live media could only have a
read-only root file system and was not as feature-rich as live media is today. However,
just before Revisor came to life, two applications were developed; pungi for creating
installation media, and livecd-tools for creating live media. These two applications did
their work well; The media composed for a release, including many different custom live
media spins were, and still are, created with these tools. Immediately, the Revisor
developers set themselves a target to provide a single interface to both of those tools.
+ </para>
+ </section>
+
+</chapter>
diff --git a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Plugins.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Plugins.xml
new file mode 100644
index 0000000..122f25e
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Plugins.xml
@@ -0,0 +1,131 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Plugins">
+ <title>Plugins</title>
+ <para>
+ para
+ </para>
+
+ <section id="Revisor_Reference_Manual-Plugins-Upstream">
+ <title>Upstream Plugins</title>
+ <para>
+ Plugins available from upstream, maintained by upstream
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Cobbler_Plugin">
+ <title>Cobbler Plugin</title>
+ <para>
+ The Cobbler plugin is able to put the product composed into a Cobbler
environment, by handing off the built product to the existing Cobbler infrastructure as a
<emphasis>distro</emphasis>, and creating a
<emphasis>profile</emphasis>.
+ </para>
+ <para>
+ Using this module, one can automatically import the Revisor product into
a Cobbler environment, and immediately use the new Cobbler
<emphasis>profile</emphasis> to start deploying or automated testing, maybe.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Composer_Plugin">
+ <title>Composer Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Delta_Plugin">
+ <title>Delta Plugin</title>
+ <para>
+ A small change to a ISO image does not require you to download the
complete ISO image if you have a copy of the old ISO image.
+ </para>
+ <note>
+ <title>Only applicable to (...)</title>
+ <para>
+ The generation of Delta ISO images is only applicable to situations
in which the ISO image does not contain SquashFS images. SquashFS images are smaller, but
all SquashFS images are unique. Since the Delta principle is based on similarities, and no
two SquashFS images are alike, creating a Delta on two ISO images containing SquashFS
images will lead to a Delta pratically the same size as the SquashFS image. For Live Media
that compresses the ext3 filesystem image into a SquashFS image, since that SquashFS image
is probably over 97% of the size of the ISO image, creating Delta images for compressed
Live Media does not make sense. For installation media however, most RPMs would be similar
as well as (potentially) the installer images.
+ </para>
+ </note>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-GUI_Plugin">
+ <title>GUI (Graphical User Interface) Plugin</title>
+ <para>
+ Yes, the Graphical User Interface for Revisor is actually a plugin.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-HUB_Plugin">
+ <title>HUB Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Isolinux_Plugin">
+ <title>Isolinux Plugin</title>
+ <titleabbrev id="Isolinux_Plugin">Isolinux
Plugin</titleabbrev>
+ <para>
+ The isolinux plugin adds the
<literal>--isolinux-cfg</literal> command-line option to Revisor. Specify a
file here, and the original <filename>isolinux.cfg</filename> that is built as
part of the compose process is replaced by the
<filename>isolinux.cfg</filename> specified.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Jigdo_Plugin">
+ <title>Jigdo Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Mock_Plugin">
+ <title>Mock Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Rebrand_Plugin">
+ <title>Rebrand Plugin</title>
+ <para>
+ The rebrand plugin hooks in to Revisor at several different stages. The
goal of this plugin is to ensure no trademarked packages end up on the media. Trademarked
packages may include <application>fedora-logos</application>,
<application>redhat-logos</application>, and so forth.
+ </para>
+ <para>
+ The plugin adds a <literal>--rebrand</literal> option, to
which you can specify the name of your new product. When rebranding Fedora to Omega for
example, specifying <literal>--rebrand Omega</literal> would be sufficient to
make sure the product does not have any Fedora trademarks.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Reuse_Installer_Images_Plugin">
+ <title>Reuse Installer Images Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Server_Plugin">
+ <title>Server Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Virtualization_Plugin">
+ <title>Virtualization Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-WUI_Plugin">
+ <title>WUI (Web-based User Interface) Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ </section>
+
+ <section id="Revisor_Reference_Manual-Plugins-Writing_Your_Own">
+ <title>Writing Your Own Plugins</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Testing.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Testing.xml
new file mode 100644
index 0000000..ea4ff00
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Testing.xml
@@ -0,0 +1,173 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Testing">
+ <title>Testing</title>
+ <para>
+ The following test cases describe different types of testing a new Revisor
release.
+ </para>
+
+ <section id="Revisor_Reference_Manual-Testing-Simple_Test_Cases">
+ <title>Simple Test Cases</title>
+ <para>
+ This section has a few simple test cases ensuring configuration shipped with
Revisor works as anticipated.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Testing-Simple_Test_cases-Packages">
+ <title>Packages</title>
+ <para>
+ Install the <application>revisor-cli</application>:
+ </para>
+ <para>
+ <screen># <userinput>yum --enablerepo=updates-testing install
revisor</userinput></screen>
+ </para>
+ <para>
+ Installed are all dependencies for the Revisor CLI interface. Make sure
<application>spin-kickstarts</application> is installed, a package for sample
kickstarts.
+ </para>
+ <para>
+ Starting Revisor as follows should not show any error messages related to
Revisor attempting to start up it's GUI interface:
+ </para>
+ <para>
+ <screen>#
<userinput>revisor</userinput></screen>
+ </para>
+
+ <formalpara>
+ <title>Configuration Files</title>
+ <para>
+ The following configuration files should exist:
+ </para>
+ </formalpara>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <filename>/etc/revisor/revisor.conf</filename>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ Each section should have a configuration file listed as
<literal>main</literal>.
+ </para>
+ <para>
+ And, of course, every configuration file listed in each section. In this
case, the following snippet is easy enough:
+ </para>
+ <para>
+ <screen>$ <userinput>i=0; \
+configfiles="`grep ^main /etc/revisor/revisor.conf | \
+ sed -r -e 's/^main.*=\s*(.*)/\1/g'`"
+
+for configfile in $configfiles; do \
+ [ ! -f $file ] && i=1; \
+done; \
+echo $i</userinput></screen>
+ </para>
+ <para>
+ Another way to test the configuration file is to execute:
+ </para>
+ <para>
+ <screen>$ <userinput>revisor --list-models
>/dev/null</userinput></screen>
+ </para>
+ <para>
+ If everything is well, since <literal>STDOUT</literal> is
redirected to <filename>/dev/null</filename>, you should see no messages at
all.
+ </para>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Testing-Simple_Test_Cases-Configuration_Files">
+ <title>Configuration Files</title>
+ <para>
+ The main Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. The file lists a series of
models, each having their own YUM configuration file in
<filename>/etc/revisor/conf.d/</filename>.
+ </para>
+ <formalpara>
+ <title>Testing</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For each model in
<filename>/etc/revisor/revisor.conf</filename>, the
<code>main</code> setting for that model should point to a valid file.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each YUM configuration file should work. To verify, run
the following command for each configuration file:
+ </para>
+ <para>
+ <screen>$ yum -c
<replaceable>$file</replaceable> list kernel</screen>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>Known Errors</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Revisor has baseurls in YUM repositories set to <ulink
url="http://localrepo" />. This URL will not be retrievable for many
people, but allows the developers to quickly change mirrors.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Repositories that are unavailable at the moment of
testing will throw errors Revisor can't do anything about.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the directories
<filename>revisor-yumcache/</filename> and
<filename>revisor/</filename> in <filename>/var/tmp/</filename>,
the default working directory, are not writeable for the user then YUM will throw
permission denied errors.
+ </para>
+ <para>
+ Remove <filename>/var/tmp/revisor/</filename>
and <filename>/var/tmp/revisor-yumcache/</filename> or run the command with
root permissions.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Testing-Simple_Test_Cases-Compose_Results">
+ <title>Requirements for Compose Results</title>
+ <para>
+ Although heavily dependent on Anaconda for this part, these are still
requirements
+ </para>
+
+ <formalpara>
+ <title>ld-linux.so.2</title>
+ <para>
+ In the <filename>initrd.img</filename> of the composed
product, if 32-bit, <filename>/lib/ld-linux.so.2</filename> (or any other
version) should link to <filename>/lib/ld-2.9.so</filename> (or any other
version). If <filename>/lib/ld-linux.so.2</filename> links to itself, the
media will fail to install.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>How to test</title>
+ <para>
+ In a terminal, type the following command:
+ </para>
+ </formalpara>
+ <para>
+ <screen>$ <userinput>lsinitrd /path/to/initrd | grep
ld-linux</userinput></screen>
+ </para>
+ <para>
+ See also: <ulink
url="https://www.redhat.com/archives/anaconda-devel-list/2009-Februa...
/>
+ </para>
+
+ </section>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Testing-Complex_Test_Cases">
+ <title>Complex Test Cases</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Testing-Specific_Test_Cases">
+ <title>Specific Test Cases</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Tips_and_Tricks.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Tips_and_Tricks.xml
new file mode 100644
index 0000000..8b785ee
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Tips_and_Tricks.xml
@@ -0,0 +1,47 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Tips_and_Tricks">
+ <title>Tips and Tricks</title>
+ <para>
+ para
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Tips_and_Tricks-The_spin-kickstarts_Package">
+ <title>The spin-kickstarts Package</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tips_and_Tricks-Even_More_Debugging">
+ <title>Even More Debugging</title>
+ <para>
+ something about using -x to buildinstall scripts
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Tips_and_Tricks-ksvalidator">
+ <title>Kickstart Validator</title>
+ <para>
+ something about using -x to buildinstall scripts
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tips_and_Tricks-Using_Mirrormanager_For_Mirror_Redirection">
+ <title>Using Mirrormanager for Mirror Redirection</title>
+ <para>
+ Something about using Mirrormanager to redirect you to the local mirror (so
you do not have to edit YUM configuration files).
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tips_and_Tricks-The_localrepo_DNS_Alias">
+ <title>Using The localrepo DNS Alias</title>
+ <para>
+ Something about using the localrepo DNS alias to point to your local mirror
(either through real DNS or through /etc/hosts), so you do not have to edit the YUM
configuration files.
+ </para>
+ </section>
+
+</chapter>
+
diff --git
a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Tweaking_The_Build_Process.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Tweaking_The_Build_Process.xml
new file mode 100644
index 0000000..4979285
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Tweaking_The_Build_Process.xml
@@ -0,0 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Tweaking_The_Build_Process">
+ <title>Tweaking the build process</title>
+ <para>
+ para
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Reusing_Existing_Installer_Images">
+ <title>Reusing Existing Installer Images</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Building_The_Installer_Images_In_Mock">
+ <title>Building The Installer Images in Mock</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Omitting-isomd5sum">
+ <title>Omitting isomd5sums</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Omitting-sha1sums">
+ <title>Omitting SHA1SUMS</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Using_Kickstart.xml
b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Using_Kickstart.xml
new file mode 100644
index 0000000..f3e6ab2
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Reference_Manual-Using_Kickstart.xml
@@ -0,0 +1,118 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Using_Kickstart">
+ <title>Using Kickstart</title>
+ <para>
+ Kickstart is a configuration file format for automating installation procedures.
Or at least, it was, originally. Nowadays, kickstart files are used as input to the
compose tools, including Revisor.
+ </para>
+ <para>
+ Revisor again is unique in that it does not require a kickstart file for input.
The other tools only take kickstart configuration files. Revisor though allows most of
what is in a kickstart file to be configured interactively in Graphical User Interface
mode.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Using_Kickstart-How_Kickstart_Is_Used">
+ <title>How Kickstart Is Used</title>
+ <para>
+ There's two cases in which a kickstart file is used differently. One is
during the compose of installation media, and the other of course is during the compose of
live media, or virtualization media.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Using_Kickstart-How_Kickstart_Is_Used-Installation_Media">
+ <title>Installation Media</title>
+ <para>
+ In the case of installation media, the following settings are used:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <formalpara>
+
<title><literal>repo</literal></title>
+ <para>
+ The <literal>repo</literal> command in
kickstart is used when Revisor is configured to use the repositories configured in the
kickstart file only. Use <literal>kickstart_repos = 1</literal> to enable this
feature, or set the appropriate checkbox in the Revisor GUI.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+
<title><literal>%packages</literal></title>
+ <para>
+ The <literal>%packages</literal> section in
kickstart is used to determine the RPM payload on the installation media. It can include
groups and packages, and exclude packages. It accepts wildcards, both in includes and
excludes of packages (but not groups).
+ </para>
+ </formalpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <note>
+ <title>@core and @base</title>
+ <para>
+ By default, groups @core and @base are included in the package
manifest. You can specify @base to not be included, by using <literal>%packages
--nobase</literal>, but @core cannot be excluded using a kickstart package
manifest.
+ </para>
+ </note>
+ <para>
+ Using <literal>kickstart_exact</literal>, you can exclude
@core and @base so that you need to explicitly select them in the kickstart package
manifest.
+ </para>
+ <para>
+ Using <literal>kickstart_exact_nevra</literal> ...
+ </para>
+ </section>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Using_Kickstart-The_Kickstart_Package_Manifest">
+ <title>The Kickstart Package Manifest</title>
+ <para>
+ para
+ </para>
+
+ <formalpara>
+ <title>Group @core</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Group @base</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Including groups of packages</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Including a single package</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Excluding a single package</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Using wildcard matches</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <section
id="Revisor_Reference_Manual-Using_Kickstart-Using_Kickstart_With_Package_NEVRA">
+ <title>Using Kickstart with Package NEVRA</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ </section>
+
+</chapter>
+
commit 366d7b924df14b119f627ddeda435ca2d32c3099
Author: Jeroen van Meeuwen (Fedora Unity) <kanarip(a)fedoraunity.org>
Date: Thu Jun 18 16:01:38 2009 +0200
Update more and more
diff --git a/doc/Reference_Manual/en-US/Appendix.xml
b/doc/Reference_Manual/en-US/Appendix.xml
index 01258fb..f08fc79 100644
--- a/doc/Reference_Manual/en-US/Appendix.xml
+++ b/doc/Reference_Manual/en-US/Appendix.xml
@@ -2,12 +2,12 @@
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
-<part id="Revisor_Documentation-Appendices">
+<part id="Revisor_Reference_Manual-Appendices">
<title>Appendices</title>
- <appendix id="Revisor_Documentation-Appendix-Terminology"
label="A">
+ <appendix id="Revisor_Reference_Manual-Appendix-Terminology"
label="A">
<title>Terminology</title>
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-model">
+ <formalpara
id="Revisor_Reference_Manual-Appendix-Terminology-model">
<title>Model</title>
<indexterm>
<primary>model</primary>
@@ -17,7 +17,7 @@
</para>
</formalpara>
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-package_manifest">
+ <formalpara
id="Revisor_Reference_Manual-Appendix-Terminology-package_manifest">
<title>Package Manifest</title>
<indexterm>
<primary>Package Manifest</primary>
@@ -27,7 +27,7 @@
</para>
</formalpara>
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-Remix">
+ <formalpara
id="Revisor_Reference_Manual-Appendix-Terminology-Remix">
<title>Remix</title>
<indexterm>
<primary>Remix</primary>
@@ -37,7 +37,7 @@
</para>
</formalpara>
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-Re-Spin">
+ <formalpara
id="Revisor_Reference_Manual-Appendix-Terminology-Re-Spin">
<title>Re-Spin</title>
<indexterm>
<primary>Re-Spin</primary>
@@ -51,7 +51,7 @@
Fedora Unity releases Fedora Re-Spins every so often, twice or trice per
release.
</para>
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-Spin">
+ <formalpara
id="Revisor_Reference_Manual-Appendix-Terminology-Spin">
<title>Spin</title>
<indexterm>
<primary>Spin</primary>
@@ -64,7 +64,7 @@
Fedora Spins have gone through the Spins Process (<ulink
url="http://fedoraproject.org/wiki/Spins_Process" />), and have been approved
trademark usage by the Fedora Project Board.
</para>
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-Package_Sack">
+ <formalpara
id="Revisor_Reference_Manual-Appendix-Terminology-Package_Sack">
<title>Package Sack</title>
<indexterm>
<primary>Package Sack</primary>
@@ -75,13 +75,13 @@
</formalpara>
</appendix>
- <appendix id="Revisor_Documentation-Appendix-Configuration_Reference"
label="B">
+ <appendix id="Revisor_Reference_Manual-Appendix-Configuration_Reference"
label="B">
<title>Configuration Reference</title>
<para>
This is the configuration reference for Revisor. Options are listed in
alphabetical order.
</para>
- <section
id="Revisor_Documentation-Appendix-Configuration_Reference-Media_Options">
+ <section
id="Revisor_Reference_Manual-Appendix-Configuration_Reference-Media_Options">
<title>Configuration Options</title>
<para>
<table>
@@ -213,7 +213,7 @@
<entry>global, model</entry>
</row>
<row>
- <entry namest="column25"
nameend="column89">Whether to include the relatively large boot.iso on the
optical installation media created. Setting this to 0 will still include boot.iso in the
installation tree created (if configured with
<code>media_installation_tree</code><footnote><para>Note that the
installation tree is always created. See <xref
linkend="Revisor_Documentation-Compose_Process_Details" /> for more
details.</para></footnote>)</entry>
+ <entry namest="column25"
nameend="column89">Whether to include the relatively large boot.iso on the
optical installation media created. Setting this to 0 will still include boot.iso in the
installation tree created (if configured with
<code>media_installation_tree</code><footnote><para>Note that the
installation tree is always created. See <xref
linkend="Revisor_Reference_Manual-Compose_Process_Details" /> for more
details.</para></footnote>)</entry>
</row>
<row>
@@ -382,7 +382,7 @@
<entry>global, model</entry>
</row>
<row>
- <entry namest="column25"
nameend="column89">Whether to create a an installation
tree<footnote><para>Note that the installation tree is always created. See
<xref linkend="Revisor_Documentation-Compose_Process_Details" /> for more
details.</para></footnote> (for publication over HTTP or FTP, or through
Cobbler). No size limit.</entry>
+ <entry namest="column25"
nameend="column89">Whether to create a an installation
tree<footnote><para>Note that the installation tree is always created. See
<xref linkend="Revisor_Reference_Manual-Compose_Process_Details" /> for
more details.</para></footnote> (for publication over HTTP or FTP, or through
Cobbler). No size limit.</entry>
</row>
<row>
@@ -447,7 +447,7 @@
<entry>global, model</entry>
</row>
<row>
- <entry namest="column25"
nameend="column89">Whether Revisor should operate in
<emphasis>respin</emphasis> mode. See also <xref
linkend="Revisor_Documentation-Compose_Process_Details-Respin_Mode"
/></entry>
+ <entry namest="column25"
nameend="column89">Whether Revisor should operate in
<emphasis>respin</emphasis> mode. See also <xref
linkend="Revisor_Reference_Manual-Compose_Process_Details-Respin_Mode"
/></entry>
</row>
<row>
diff --git a/doc/Reference_Manual/en-US/Book_Info.xml
b/doc/Reference_Manual/en-US/Book_Info.xml
index 0b84805..31d0e76 100644
--- a/doc/Reference_Manual/en-US/Book_Info.xml
+++ b/doc/Reference_Manual/en-US/Book_Info.xml
@@ -2,7 +2,7 @@
<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
-<bookinfo id="Revisor_Documentation-Documentation">
+<bookinfo id="Revisor_Reference_Manual-Documentation">
<title>Reference Manual</title>
<subtitle>Revisor Complete Installation, Configuration and Tweaking
Reference</subtitle>
<productname>Revisor</productname>
diff --git a/doc/Reference_Manual/en-US/Preface.xml
b/doc/Reference_Manual/en-US/Preface.xml
index 02af0ea..0623129 100644
--- a/doc/Reference_Manual/en-US/Preface.xml
+++ b/doc/Reference_Manual/en-US/Preface.xml
@@ -2,13 +2,13 @@
<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
-<preface id="Revisor_Documentation-Preface">
+<preface id="Revisor_Reference_Manual-Preface">
<title>Preface</title>
<para>
This is the documentation for Revisor, a utility to create and customize your own
Linux distribution based on Fedora, Red Hat Enterprise Linux or CentOS.
</para>
- <section id="Revisor_Documentation-Preface-About_The_Contributors">
+ <section
id="Revisor_Reference_Manual-Preface-About_The_Contributors">
<title>About the Contributors</title>
<formalpara>
<title>Author</title>
@@ -28,7 +28,7 @@
</formalpara>
</section>
- <section id="Revisor_Documentation-Preface-About_Fedora_Unity">
+ <section id="Revisor_Reference_Manual-Preface-About_Fedora_Unity">
<title>About Fedora Unity</title>
<para>
The Fedora Unity Project consists of a group of concerned peers from within
the Fedora community that strive to bring the best possible solutions to the community, in
a consistent manner. This, amongst other things, resulted in extensive documentation on
various topics often referred to on the Web, published under the Open Documentation
License v1.0.
@@ -38,10 +38,10 @@
</para>
</section>
- <section id="Revisor_Documentation-Preface-About_This_Document">
+ <section id="Revisor_Reference_Manual-Preface-About_This_Document">
<title>About this Document</title>
<para>
- This document is licensed under the Open Publication License version 1.0,
which is available at <ulink
url="http://www.opencontent.org/openpub/" />.
You can get the latest version from <ulink
url="http://kanarip.fedorapeople.org/Revisor_Documentation/en-US/pdf...
/> (PDF), and it's sources live at <ulink
url="http://git.fedorahosted.org/git/?p=revisor;a=tree;f=doc" />.
+ This document is licensed under the Open Publication License version 1.0,
which is available at <ulink
url="http://www.opencontent.org/openpub/" />.
You can get the latest version from <ulink
url="http://kanarip.fedorapeople.org/Revisor_Reference_Manual/en-US/...
/> (PDF), and it's sources live at <ulink
url="http://git.fedorahosted.org/git/?p=revisor;a=tree;f=doc" />.
</para>
</section>
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Compose_Process_Details.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Compose_Process_Details.xml
new file mode 100644
index 0000000..6b12e6c
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Compose_Process_Details.xml
@@ -0,0 +1,431 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Compose_Process_Details">
+ <title>Compose Process Details</title>
+ <para>
+ This chapter lists the details of the compose process as well as dives deep into
the features of Revisor.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Overview">
+ <title>Overview</title>
+ <titleabbrev
id="Compose_Process_Details-Overview">Overview</titleabbrev>
+ <para>
+ Of course, the compose process for installation media is a little different
then the compose process for live media.
+ </para>
+ <para>
+ When composing, Revisor starts out doing the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Revisor initiates and loads plugins, options, and defaults. At
this point, Revisor has a so-called <emphasis>ConfigStore</emphasis> that
holds all options Revisor knows about.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Revisor reads the options from the command-line.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Revisor reads the configuration file specified with the
<code>--config</code> command-line parameter, or uses it's builtin
default, <filename>/etc/revisor/revisor.conf</filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Revisor reads the global <code>[revisor]</code>
section for all settings available in it's
<emphasis>ConfigStore</emphasis> and sets those configured in the global
section. Remember that if an option is not available in the
<emphasis>ConfigStore</emphasis> but is configured in the global configuration
section, it is ignored.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If a model is specified in the configuration file's global
section <code>[revisor]</code>, Revisor will set that model to be used and
loads it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If a model has been specified on the command-line, with option
<code>--model</code>, Revisor loads that model.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When loading the model, Revisor again iterates over all the
settings that are in the <emphasis>ConfigStore</emphasis>, checks if the
setting has been configured in the model section, and adjusts the setting in the
<emphasis>ConfigStore</emphasis> if necessary. Again remember that if the
<emphasis>ConfigStore</emphasis> does not know about one or the other option
already, that setting is ignored.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Now that the defaults and configuration file settings have been
applied to the <emphasis>ConfigStore</emphasis>, it is time for Revisor to
look at the options specified on the command-line to see if you wanted to override
anything.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ While loading each configuration setting available in the global
<code>[revisor]</code>, model-specific sections and/or command-line, Revisor
checks every settings against a function that is specifically written to check such
setting. For example, the label of an ISO cannot be longer then 32 characters.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Especially in CLI mode, these settings build up the task list for
Revisor. If there's nothing to do, Revisor will throw an error explaining what's
missing. If there's things to do that cannot be done in one run, Revisor will throw an
error explaining that.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Graphical User Interface mode however, if the settings loaded
so far are all OK, the GUI will start. Since you can still adjust a few settings from
within the GUI, the settings loaded so far will be the defaults for configuration settings
that have a dialog for you to adjust them with, throughout the rest of the process.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Installation_Media">
+ <title>Installation Media</title>
+ <para>
+ As we've explained before, composing installation media is a little
different then composing live media. That's not just because installation media should
start an installation procedure and live media should show you a nice, shiny,
fully-functional Desktop.
+ </para>
+ <para>
+ For one, installation media allows split media. This means that Revisor can
span the payload of the product over multiple ISO images or multiple discs, if you will.
When composing installation media, Revisor basically does the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Of course, Revisor goes through the loading of configuration
options mentioned in the <xref
linkend="Revisor_Reference_Manual-Compose_Process_Details-Overview"
endterm="Compose_Process_Details-Overview" />.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When you're done specifying options in the GUI, or when
Revisor thinks it can go ahead using the options specified in CLI mode, it takes the list
of packages selected from either the GUI or the kickstart
<code>%packages</code> manifest.
+ </para>
+ <para>
+ Not getting too deep into details here, yet, because some of
these things are routines shared with other composing modes, but here's a few
additional considerations Revisor makes when doing the package selection.
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Normally, a kickstart
<code>%packages</code> manifest only allows you to select package
<emphasis>names</emphasis>. With Revisor though, you can select exact package
<emphasis>NEVRA</emphasis> to select a certain version or architecture for the
package that you want. Additionally, if a package is not available, Revisor searches the
<emphasis>Provides</emphasis> of the available packages.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Live_Media">
+ <title>Live Media</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Respin_Mode">
+ <title>Respin Mode</title>
+ <para>
+ Revisor has a respin mode that in some aspects differs from the regular
routines. It is intended to reflect behaviour of tools in use by the Fedora Project
Release Engineering team as closely as possible.
+ </para>
+ <para>
+ Re-Spin mode only affects installation media products.
+ </para>
+ <para>
+ In Re-Spin mode, the way the RPM payload is determined from kickstart differs
from Revisor's normal procedures. See <xref
linkend="Revisor_Reference_Manual-Using_Kickstart" /> for more details on
using a kickstart package manifest.
+ </para>
+ <para>
+ A kickstart file's so-called <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-package_manifest" />
usually looks like:
+ </para>
+ <para>
+ <screen>%packages
+@group1
+@group2 --nodefaults
+@group3 --optional
+package1
+package2
+-package3
+%end</screen>
+ </para>
+ <para>
+ Which tells us the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Include all mandatory and default packages from group1
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Include all mandatory packages from group2
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Include all mandatory, default and optional packages from group3
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Include package1, and package2
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Exclude package3
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ Depending on how you use this instructions or information, there is a slight
difference in the package set that ends up on the media you compose.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Respin_Mode-Selecting_Groups">
+ <title>Selecting Groups</title>
+ <para>
+ Selecting groups has the following logic: When you load a repository you
may also load the groups file (often referred to as 'comps' or
'comps.xml'). This comps file is an XML file with categories, groups (per
category), and per group:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ a list of mandatory packages. If you select or include the
group, these packages come with it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a list of default packages. If you select or include the
group, these packages will come with it as a default. If you only want the mandatory,
minimum set of packages for this group, in a kickstart package manifest append
<code>--nodefaults</code> to the group line or in the Revisor GUI,
right-click on the group and choose <emphasis>Deselect all
packages</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a list of optional packages. If you select a group you have
not yet selected these packages. To select the optional packages of a group, in a
kickstart package manifest append <code>--optional</code> to the group line or
in the Revisor GUI, right-click on the group and choose <emphasis>Select all
optional packages</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a list of conditionals. If you select this group, these
conditionals are thrown into the package sack and transaction information and include or
exclude other packages. Suppose you select the '@nl-support' or “Dutch Support”
group from the Languages or Localization category, you would end up with support for the
Dutch language in all applications that have that kind of support.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Respin_Mode-Select_Matching_Packages">
+ <title>Select Matching Packages</title>
+ <para>
+ This is the logic Revisor applies when running in Re-Spin mode (on the
CLI, specify <code>--respin</code>). It imitates the behavior pungi has, and
thus enables you to copy that behavior. Note that <code>--respin</code> has
other implications as well.
+ </para>
+ <para>
+ First of all, it iterates the groups in the kickstart package manifest.
For each group, it appends the names of the mandatory packages to a list, and depending on
the additional parameters specified with that group (<code>--nodefaults</code>
or <code>--optional</code>), appends the names of the other packages in that
group as well.
+ </para>
+ <para>
+ Then it iterates over the package names in the package manifest. These
package names are appended to the same list of package names too. This includes package
'names' with some sort of wildcard (?, or *).
+ </para>
+ <para>
+ Then it iterates over all the excluded packages, appending each of those
to the YUM configuration exclude list.
+ </para>
+ <para>
+ Now that Revisor has a very simple, flat list of package names, it uses
YUM's internal matching logic 5 to get what packages in the repositories matched
exactly (by name), matched (by wildcard) and did not match at all. Revisor then selects
the exact matches and matches, adding them to the transaction.
+ </para>
+ </section>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving">
+ <title>Dependency Resolving</title>
+ <indexterm>
+ <primary>Dependency Resolving</primary>
+ </indexterm>
+ <para>
+ Dependency resolving is the area where some of the efficiency Revisor can
gain for you comes from. While of course there is specific reasons to do things one way,
or the other, most people I speak to about Revisor, it is not very clear why, or what
Revisor does in this area. First of all, there's two ways of resolving dependencies:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>Inclusive Dependency Resolving</title>
+ <indexterm>
+ <primary>Dependency Resolving</primary>
+ <secondary>Inclusive</secondary>
+ </indexterm>
+ <para>
+ Iterate all packages in the transaction and list their
requirements, then for each of those requirements, find all packages that provide a
matching capability, add those packages to the transaction, and don't forget to add
the requirements those packages have themselves, back into the pile of (unmet)
requirements.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Exclusive Dependency Resolving</title>
+ <indexterm>
+ <primary>Dependency Resolving</primary>
+ <secondary>Inclusive</secondary>
+ </indexterm>
+ <para>
+ Iterate all the packages and for each of the requirements
found, find the best package that meets the requirement. This is also YUMs default
behavior. Anaconda uses YUM during the installation, and this is the behaviour of YUM used
during the installation.
+ </para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Inclusive">
+ <title>Inclusive Dependency Resolving</title>
+ <para>
+ Hypothetically, you could describe inclusive dependency as follows:
+ </para>
+ <para>
+ <screen>final_packages = []
+more_to_do = True
+while more_to_do:
+more_to_do = False
+for package in packages:
+ if package in final_packages:
+ continue
+
+ dependencies = find_package_dependencies()
+ for dependency in dependencies:
+ pulled_in_package = pull_in_dependency()
+ if pulled_in_package not in final_packages:
+ packages.append(pulled_in_package)
+ more_to_do = True</screen>
+ </para>
+ <para>
+ So, what does this mean? Basically, it means that if there is a
requirement for a capability, all packages providing that capability are being pulled in.
Now imagine package 'foo' requires capability 'web-client'. There's a
number of packages providing that capability, right? So you get Firefox, lynx, elinks,
konqueror, safari, Netscape, Internet Explorer, emacs, for free! All of those pull in
their own dependencies also, of course.
+ </para>
+ <note>
+ <para>
+ If you catch this before it catches you, you can prevent the packages
from being pulled in during dependency resolving by not making the package available in
the <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-Package_Sack" /> in
the first place, using the <literal>-firefox</literal> syntax in the kickstart
package manifest, and setting
<literal>kickstart_uses_pkgsack_excludes</literal> to 1.
+ </para>
+ </note>
+ <note>
+ <para>
+ You may have thought of it; pulling in packages this way may give you
a package set (or <emphasis>RPM payload</emphasis>) that has conflicting
packages. Imagine package <application>foo</application> requiring capability
<application>bar</application>, which is provided by two packages that
conflict with one another (either on explicit <literal>Conflicts:</literal>
RPM header or file level). Both will be pulled in, hence disabling you to install
everything (<literal>'*'</literal> or -previously-
<literal>@Everything</literal> in the kickstart package manifest).
+ </para>
+ </note>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Makes_Sense">
+ <title>When This Makes Sense</title>
+ <para>
+ If you are composing a large distribution of which 3 million users in
even so many different situations having so many different expectations and desires, you
will want this behaviour, since you won't be able to determine which one of the
packages for each capability someone in that group wants, and which one may not want. Or,
in case of upgrades, what the system needs. Shipping them all on the same media is the
best solution in these cases.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Does_Not_Make_Sense">
+ <title>When This Does Not Make Sense</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ When creating installation media to be installed
unattended, or to be used in conjunction with deployment strategies
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When creating installation media to be upgrading PCs you
have controlled from the beginning, such as in a company
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Installation for a small group of users or systems
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When creating minimal installation media, or media with a
minimal RPM payload.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When creating installation media that is to be used with
installing "Everything" in the RPM payload.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Dependency_Resolving-Exclusive">
+ <title>Exclusive Dependency Resolving</title>
+ <para>
+ Exclusive dependency resolving is what YUM does when you execute a
<application>yum install</application>. Unless you've specified one of the
packages satisfying any of the dependencies in the transaction, YUM is going to look up
the best match for you. This results in the installation of only one package providing the
requirement(s) of other packages, rather then all packages providing said requirement
being installed.
+ </para>
+ <para>
+ As an example, imagine you install a package foo which requires
capability web-client. Using exclusive dependency resolving, YUM would select one package
providing the web-client capability whereas inclusive dependency resolving would include
all packages providing the web-client capability.
+ </para>
+ <para>
+ During the installation procedure, one of the major features of
installation media, anaconda is going to use YUM dependency resolving to satisfy all the
dependencies.
+ </para>
+ <note>
+ <title>Installation Procedure !== Upgrade Procedure</title>
+ <para>
+ Note that an installation procedure is not the same as an upgrade
procedure. With an installation procedure for example, you have control over the
partitioning layout whereas with an upgrade procedure, you have none. More importantly,
during an upgrade procedure, the (already installed) system has an existing package set
which needs to be updated/upgraded and thus could possibly introduce dependency resolving
problems, because of third party packages installed on the system, or because the media
used to upgrade the system with does not contain the software packages needed to complete
the upgrade RPM transaction.
+ </para>
+ </note>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Copying_Arbitrary_Files_Onto_The_Media">
+ <title>Copying Arbitrary Files Onto the Media</title>
+ <para>
+ With <literal>--copy-dir</literal>, you can specify a path
Revisor should copy onto the media.
+ </para>
+ <formalpara>
+ <title>Installation Media</title>
+ <para>
+ In the case of installation media, the path specified with
<literal>--copy-dir</literal> will be copied recursively to the
<filename>files/</filename> sub-directory at the root of the ISO image (or the
first ISO image if you compose split media).
+ </para>
+ </formalpara>
+ <para>
+ A few use-case examples:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ If one kickstart profile is not enough for you to deploy the
product onto your systems, create a directory that holds multiple kickstart files and
specify the path to that directory using <literal>--copy-dir</literal>. The
kickstart files now end up available to the installation procedures as
<filename>cdrom:/files/*.ks</filename>, and can thus be used by specifying
them on the kernel cmdline (<code>ks=cdrom:/files/profile1.ks</code>), or,
when used in combination with <literal>--isolinux-cfg</literal> from the
<xref linkend="Revisor_Reference_Manual-Plugins-Upstream-Isolinux_Plugin"
endterm="Isolinux_Plugin" />, can be added as an option in the isolinux
menu.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If you have files or scripts that need to be copied onto, or run
on, the installed system before it attempts to reboot and operate normally, you can use
<literal>--copy-dir</literal> to make these files and scripts available during
the installation and copy or execute them from either <code>%pre</code> or
<code>%post</code> scripts.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <formalpara>
+ <title>Live Media</title>
+ <para>
+ In the case of live media, the path specified with
<literal>--copy-dir</literal> will be copied recursively onto the root
directory (<filename>/</filename>) of the live media filesystem (which is
probably loop-mounted onto <filename>/var/tmp/revisor/</filename>).
+ </para>
+ </formalpara>
+ <para>
+ If, for example, you want to copy a home directory onto the live media, and
the home directory you want to copy is at <filename>/home/user1/</filename> on
the composing system, you copy this directory so that the root of that new directory has a
sub-directory <filename>home/</filename> which in turn contains a
sub-directory <filename>user1/</filename>:
+ </para>
+ <para>
+ <screen>$ <userinput>mkdir -p
/tmp/something/home/</userinput>
+$ <userinput>cp -a /home/user1 /tmp/something/home/.</userinput>
+$ <userinput>revisor [options] --copy-dir
/tmp/something/</userinput></screen>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Cleaning_Up">
+ <title>Cleaning Up</title>
+ <para>
+ Revisor tends to clean up after itself by default. If a product compose
succeeds, you (probably) don't need to change this default behaviour. However, by
default, Revisor tends to leave the YUM cache directories untouched. This is to prevent
you from having to download all the packages a second, third or more times when you run
another compose.
+ </para>
+ <para>
+ To change this default behaviour, Revisor has an option
<literal>--clean-up</literal>. The default value for this option is
<literal>1</literal>, meaning Revisor will clean up it's temporary,
compose-specific files, but no files that could be re-used. Specifying
<literal>--clean-up=0</literal> will cause Revisor to leave everything behind
and not clean anything up at all. This is most ideal for troubleshooting purposes, where
one needs to examine the temporary, compose-specific files and see what went wrong. To
clean up everything however, because for example you might be low on disk-space, use
<literal>--clean-up=2</literal>. Revisor will then also clean up the files
that could be re-used.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Compose_Process_Details-Cleaning_Up-Exception-to-the-Rule">
+ <title>Exception to the Rule</title>
+ <para>
+ There's one exception to the rule of cleaning up.
<filename>/var/tmp/revisor/</filename>, or put more accurately, the path
specified as the <code>installroot</code> in the YUM configuration file
configured with the model used to compose the product, will not be cleaned up afterwards.
When composing live media, this directory may still be in use as a mount-point for the
live media filesystem. Removing this directory recursively in these cases would not make
sense.
+ </para>
+ </section>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Configuration.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Configuration.xml
new file mode 100644
index 0000000..647706f
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Configuration.xml
@@ -0,0 +1,280 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Configuration">
+ <title>Configuration</title>
+ <para>
+ Revisor configuration can be performed using <xref
linkend="Revisor_Reference_Manual-Configuration-Files" />, or through
<xref linkend="Revisor_Reference_Manual-Configuration-Command-line_Options"
/>.
+ </para>
+
+ <section id="Revisor_Reference_Manual-Configuration-Files">
+ <title>Configuration Files</title>
+ <para>
+ Revisor uses configuration files for a large part of it's operations.
These files mostly reside in <filename>/etc/revisor/</filename>. There is two
types of files Revisor uses:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>Revisor Configuration Files</title>
+ <para>
+ Revisor configuration files, such as
<filename>/etc/revisor/revisor.conf</filename>, contain information and
settings unique to Revisor. A Revisor configuration file is where you specify default
options, and include information on different products you want to compose.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>YUM Configuration Files</title>
+ <para>
+ YUM configuration files, such as the files in
<filename>/etc/revisor/conf.d/</filename>, contain configuration for YUM. To
be more precise, Revisor doesn't even handle the files (it let's YUM do so). The
files in <filename>/etc/revisor/conf.d/</filename> practically contain the
same information as <filename>/etc/yum.conf</filename> combined with the files
in <filename>/etc/yum.repos.d/</filename> (but not exactly the same
content!).
+ </para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Files-_etc_revisor_revisor.conf">
+
<title><filename>/etc/revisor/revisor.conf</filename></title>
+ <para>
+ The default Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. This configuration file
contains two sections:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+
<title><literal>[revisor]</literal></title>
+ <para>
+ The global section. Options specified in this section
apply to all the models defined in this configuration file.
+ </para>
+ </formalpara>
+ <para>
+ See also: <xref
linkend="Revisor_Reference_Manual-Configuration-Global_and_Model_Configuration"
/>
+ </para>
+ </listitem>
+ <listitem>
+ <formalpara>
+
<title><literal>[<replaceable>model</replaceable>]</literal></title>
+ <para>
+ Model configuration. One section per <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-model" />.
+ </para>
+ </formalpara>
+ <para>
+ See also: <xref
linkend="Revisor_Reference_Manual-Configuration-Global_and_Model_Configuration"
/>
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ Model sections basically define a single product. Amongst other things,
the distribution name, release version, architecture for the product to be composed and
what YUM configuration file to use, are (often) defined on a per-model basis. There is a
large number of settings available for models, and they are all related to how the product
is going to look like. The product name, the location of the RPM payload for installation
media, the ISO label, the YUM configuration file to use, are all model settings.
+ </para>
+ <para>
+ Using models, you can reproduce the outcome of the compose process, a
<emphasis>product</emphasis>, simply by not changing the model configuration
anymore. If you want something different, you can just add another model section, and name
it differently.
+ </para>
+ <para>
+ To see what models are available with the Revisor standard package, use:
+ </para>
+ <para>
+ <screen>$ <userinput>revisor
--list-models</userinput></screen>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Files-_etc_revisor_conf.d_">
+
<title><filename>/etc/revisor/conf.d/</filename></title>
+ <para>
+ The default YUM configuration files used by Revisor. In a model
configuration section, the <literal>main =</literal> setting points to one of
the YUM configuration files in <filename>/etc/revisor/conf.d/</filename>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Files-Updates">
+ <title>Updates to Configuration Files</title>
+ <para>
+ The Revisor packages are not allowed to overwrite files in
<filename>/etc/</filename>, and they should thus not do so. If an update to
Revisor is installed on your system, files with the extension
<literal>.rpmnew</literal> may be created --if you had changed anything in the
file before applying the update. Since this world isn't perfect, configuration errors
may exist in the configuration files shipped with Revisor. Please pay close attention to
updates to these configuration files by examining the
<literal>.rpmnew</literal> files.
+ </para>
+ <para>
+ You can use any file location (not just
<filename>/etc/revisor/</filename>) for your own custom configuration.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Files-Changing_Configuration_Files">
+ <title>Changing Configuration Files</title>
+ <para>
+ If you are creating your own models off of the ones that ship with
Revisor itself, please consider using an alternative configuration file (a file other then
<filename>/etc/revisor/revisor.conf</filename>, or copy the original file for
safekeeping. This way, you can always return to a working, sample configuration file and
test whether it is Revisor causing errors, or configuration mistakes.
+ </para>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Global_and_Model_Configuration">
+ <title>Global and Model Configuration</title>
+ <para>
+ The default Revisor configuration file,
<filename>/etc/revisor/revisor.conf</filename> consists of multiple sections
(the file is in .INI format). One is the <literal>[revisor]</literal> global
section, where you specify configuration options that apply to each other section or
<xref linkend="Revisor_Reference_Manual-Appendix-Terminology-model" />.
+ </para>
+ <para>
+ The options specified in the global and model configuration sections apply to
the Revisor compose in the following order:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ The options from the global section are read, tested and set.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The options from a model section are read, tested and set,
regardless of whether the global section had caused the setting to be set to a certain
value already.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ For example, if you know all the models in a configuration file are optical
live media products, the configuration sections could look like the following:
+ </para>
+ <para>
+ <screen>[revisor]
+# Optical live media for all models
+media_live_optical = 1
+
+[model1]
+main = /etc/revisor/conf.d/revisor-model1.conf
+description = The model1 product
+architecture = i386
+# This is already configured in the global section of
+# this configuration file and can thus be removed.
+#media_live_optical = 1</screen>
+ </para>
+ <note>
+ <title>When Running the GUI</title>
+ <para>
+ Note that when running Revisor in Graphical User Interface mode, you can
still change a lot of the settings supplied by Revisor through the configuration files
loaded. When you are running Revisor in GUI mode, the configuration files supply the
defaults.
+ </para>
+ </note>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories">
+ <title>YUM Repository Configuration</title>
+ <para>
+ The files in <filename>/etc/revisor/conf.d/</filename> are YUM
configuration files. Revisor directs YUM to use these files during the compose process,
and does not handle these files itself. This chapter lists a few tips and tricks.
+ </para>
+ <para>
+ Because these files are YUM Configuration files, you can configure anything
that YUM supports. See <application>man yum.conf</application> for more
details.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-releasever_and_basearch">
+ <title>$releasever and $basearch</title>
+ <para>
+ When configuring a repository URL, make sure you do not use
<replaceable>$releasever</replaceable> or
<replaceable>$basearch</replaceable> variables. Since Revisor allows
cross-composing distributions between different versions of the operating system, as well
as different architectures, these variables need to be expanded to the value intended.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Using_a_Local_Mirror">
+ <title>Using a Local Mirror</title>
+ <para>
+ If you have a local mirror of Fedora, you can use the
<literal>baseurl</literal> configuration directive in each repository
configuration section to tell YUM to use the local mirror.
+ </para>
+ <para>
+ Optionally, you can also disable the
<literal>mirrorlist</literal>, preferably by outcommenting it, so that YUM
will only use the local mirror.
+ </para>
+ <para>
+ The default <literal>baseurl</literal> uses
<
literal>http://download.fedoraproject.org/</literal>. This location may or
may not be suitable for you. If you have a local mirror, you might want to change this
setting here, or add your mirror to Fedora Project's Mirrorlist.
+ </para>
+ <note>
+ <title>Adding your local mirror to the Mirrorlist</title>
+ <para>
+ You can add your local mirror to the Mirrorlist, so that the Fedora
Project mirrorlist redirects you to your local mirror. Additionally, systems in your local
network(s) will be redirected to the local mirror. The local mirror does not have to be a
public mirror in order to do so. See <ulink
url="http://admin.fedoraproject.org/mirrormanager/" /> for more details.
+ </para>
+ </note>
+ <para>
+ Set each <literal>baseurl</literal> to the location of the
repository on the local mirror.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Using_Local_Files">
+ <title>Using Local Files</title>
+ <para>
+ If you have the repositories on your local filesystem, configure a
<literal>baseurl</literal> of
<filename>file://<replaceable>/path/to/repository/</replaceable></filename>.
+ </para>
+ <note>
+ <title>Make sure to supply the correct path</title>
+ <para>
+ Make sure to supply the correct path to the repository.
<filename>file://</filename> is the
"<emphasis>protocol</emphasis>" for the location, and the location
is
<filename><replaceable>/path/to/repository/</replaceable></filename>.
Put together, you have <emphasis>three</emphasis> slashes.
+ </para>
+ </note>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Using_a_DVD">
+ <title>Using a DVD</title>
+ <para>
+ A DVD does not contain enough packages to rebuild the installer images.
If you are using a DVD and you want to rebuild the installer images, you will need to have
a network connection and a mirror you can reach.
+ </para>
+ <para>
+ There is a list of required packages, but since the packages change per
release and may change in the middle of the release cycle as well, we cannot hand you a
list that just works.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Adding_Third_Party_Repositories">
+ <title>Adding Third Party Repositories</title>
+ <para>
+ When adding a third party repository, make sure you add the correct
release version as well as architecture to the Revisor YUM configuration file. Verify the
location for the <literal>baseurl</literal> and/or
<literal>mirrorlist</literal> you configure manually or through YUM. Make sure
you expand any <literal>$releasever</literal>,
<literal>$basearch</literal> and <literal>$arch</literal>
variables.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Creating_Your_Own_Repository">
+ <title>Creating Your Own Repository</title>
+ <para>
+ Creating your own repository is relatively simple. You take a directory,
dump some RPM packages in it, and run <application>createrepo</application>.
See <literal>man createrepo</literal> for more information.
+ </para>
+ <para>
+ People often wonder how Revisor handles comps.xml group files.
+ </para>
+ <para>
+ When you create your own repository, follow the directions in <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Adding_Third_Party_Repositories"
/> to add the repository configuration to Revisor's YUM configuration, since your
own repository is a third party repository as well.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Yum_Repositories-Troubleshooting">
+ <title>Testing & Troubleshooting the YUM
Configuration</title>
+ <para>
+ Before you use the (modified) configuration file, take it for a test
run.
+ </para>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Configuring_A_Proxy">
+ <title>Configuring A Proxy Server</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Configuration-Command-line_Options">
+ <title>Command-line Options</title>
+ <para>
+ With the command-line options available, you can configure options that
either override what is in the configuration file or have simply not been configured using
the configuration file. With the default configuration files that come with the
<application>revisor-cli</application> package for example, no media products
have been pre-configured in the default section. In the
<application>revisor-unity</application> package however, some default
configuration has been applied so that Fedora Unity Re-Spins actually create CD, DVD and
Rescue ISO images as well as the Installation Tree and include the sources.
+ </para>
+ <para>
+ Only some configuration options have CLI parameters. Use
<application>revisor --help</application> to see a complete list of
configuration options you can supply on the command line.
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Development.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Development.xml
new file mode 100644
index 0000000..9df83c1
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Development.xml
@@ -0,0 +1,220 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Development">
+ <title>Development</title>
+ <para>
+ This chapter sheds some light on development of Revisor, such as different
branches and maintenance policies, versioning schemas, etcetera.
+ </para>
+ <para>
+ This part of the documentation relies on whether you have
<application>sudo</application> set up properly. If you have not, you're
on your own.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Development-Running_Revisor_from_Source">
+ <title>Running Revisor from Source</title>
+ <para>
+ The latest code in GIT can be built into a RPM you can install but one of the
advantages of having the complete source tree is that you can run it directly from that
source tree so that when you pull in the next updates you do not have to rebuild the RPM.
Note that we do not bump the version number for every little change we make, and as such
the RPM built does not allow you to use <literal>rpm -Uvh</literal> or
<literal>rpm -Uvh --oldpackage</literal>. Of course, Revisor's Makefiles
also allow <application>make install</application>, but that leaves a number
of unmanaged files on your computer you would have to track down manually in order to
remove Revisor completely.
+ </para>
+ <warning>
+ <title>Cannot have Revisor RPMs installed</title>
+ <para>
+ When running revisor from within the source tree, you cannot have any of
the Revisor packages installed. Having Revisor RPM packages installed regardless will mess
up the GIT repository or source tree.
+ </para>
+ </warning>
+ <para>
+ To run Revisor from within the source tree, checkout the master branch, and
run the <filename>./switchhere</filename> script:
+ </para>
+ <para>
+ <screen>$
<userinput>./switchhere</userinput></screen>
+ </para>
+ <para>
+ The <filename>./switchhere</filename> script does the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Symlink <filename>/etc/revisor/</filename> to
<filename><replaceable>$PWD</replaceable>/conf/</filename> so that
<filename>/etc/revisor/revisor.conf</filename>, the primary configuration
file, and <filename>/etc/revisor/conf.d/</filename>, the configuration
directory, are valid (the symlink causes the actual file and directory to be found in
<filename><replaceable>$PWD</replaceable>/conf/</filename>)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Create the <filename>/usr/share/revisor/</filename>
directory so that a couple of symlinks can be created from within that directory:
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Revisor 2.1.0 (development version in branch master), this
includes:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/pixmaps/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Revisor 2.0.5 (branch F-7, F-8 or EL-5), this includes:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/glade/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/glade/pixmaps/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Revisor 2.1.0, also create symlinks from within the
appropriate
<filename>/usr/share/man/man<replaceable>$x</replaceable>/</filename>
directories to the source for these man pages in
<filename><replaceable>$PWD</replaceable>/doc/</filename>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ From this moment on, you should be able to run:
+ </para>
+ <para>
+ <screen>$
<userinput>./revisor.py</userinput></screen>
+ </para>
+ <note>
+ <title>Root privileges required</title>
+ <para>
+ Note that revisor needs root privileges to run, and that you'll need
to sudo or su-c to gain those. Use here whatever you find the most convenient; Revisor
though should have a nice error message when run without those privileges.
+ </para>
+ </note>
+
+ <section
id="Revisor_Reference_Manual-Development-Running_Revisor_from_Source-Required_Packages">
+ <title>Installing the Required Packages</title>
+ <para>
+ To be able to run Revisor from within the source tree, you'll need to
install the required packages for each component, of course.
+ </para>
+ <para>
+ To get a current list of those packages, use:
+ </para>
+ <para>
+ <screen>$ <userinput>rpmquery --specfile
--qf="%{REQUIRES}\n" revisor.spec | sort | uniq | xargs -n 1 repoquery
--requires --alldeps --resolve</userinput></screen>
+ </para>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Development-Building_Revisor_Packages">
+ <title>Building Revisor Packages</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Development-Tickets">
+ <title>Tickets</title>
+ <para>
+ bugzilla, trac
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Development-Adding_A_New_Spin">
+ <title>Adding a new spin or remix</title>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Add the appropriate models in the appropriate configuration file
for Revisor.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add the appropriate configuration file to the appropriate
automake Makefile
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Run autoreconf && ./configure &&
make rpm to verify the rpm building
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Create the model's YUM configuration files with the following
repositories:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ fedora, enabled, pointing to Everything
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fedora-source, disabled, pointing to Everything
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fedora-updates, enabled, pointing to the updates
repository
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fedora-updates-source, disabled, pointing to the
updates repository
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ anaconda-updates, enabled, pointing to the anaconda
updates repository
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ anaconda-updates-source, disabled, pointing to the
ananconda updates repository
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Development-Versioning_Schema">
+ <title>Versioning Schema</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Development-Release_Procedure">
+ <title>Release Procedure</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Features.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Features.xml
new file mode 100644
index 0000000..6321641
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Features.xml
@@ -0,0 +1,175 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Features">
+ <title>Features</title>
+ <para>
+ Revisor allows you to build and customize your own Remix, Re-Spin, Spin or even
your own distribution, based on Fedora and derivative distributions such as Red Hat
Enterprise Linux and CentOS.
+ </para>
+ <para>
+ Revisor builds installation media, live media, installation trees, cobbler
distro's and profiles, virtualization images and more.
+ </para>
+
+ <section id="Revisor_Reference_Manual-Features-Installation_Media">
+ <title>Installation Media</title>
+ <para>
+ Installation media is what you use to install a system with. The installation
media composed will allow you to go through the installation process, answering a number
of questions (either manually or through kickstart), and ends up in a system running the
distribution you install.
+ </para>
+ <para>
+ Composing installation media using the Revisor GUI allows you to choose the
media (CD, or DVD), the packages to be included on the media (also called
<emphasis>RPM payload</emphasis>).
+ </para>
+ <para>
+ Using the command-line interface, Revisor also allows you to choose DVD
Duallayer and single- or dual-layer Bluray.
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Installation_Trees">
+ <title>Installation Trees</title>
+ <para>
+ Installation trees are typically used in environments where a distribution
needs to be deployed over multiple systems, or is very volatile. Installation trees are
often made accessible through HTTP or FTP protocols, in one place, and do not have as much
overhead (in creating .iso files, and burning those to optical media to distribute them).
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Live_Media">
+ <title>Live Media</title>
+ <para>
+ Live media often is a perfect showcase for an Operating system, Desktop
Environment or any other thing you want to show. Also, since Live media is read-only, live
media perfectly allows for a kiosk system, a system that may change while it's
running, but restores all original settings when rebooted.
+ </para>
+ <para>
+ Live media is also installable. You start out with a system and boot it from
live media, then choose to install the live media. This however is inferior to real
installation media, but is convenient if you happen to like what you see when running from
live media.
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Reproducibility">
+ <title>Reproducibility</title>
+ <para>
+ Media composed with Revisor is extremely reproducible. Using
<literal>kickstart_exact_nevra</literal>, you can even select specific
versions of packages to be included on the product.
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Consistency">
+ <title>Consistency</title>
+ <para>
+ When composing different types of media, such as CDs and DVDs, Revisor
composes these discs in one run, making the different media completely consistent.
<application>pungi</application> would require you to run twice, once for CDs,
and once for DVDs. This is because <application>pungi</application> uses the
<literal>part /
<replaceable><size></replaceable></literal> kickstart
configuration directive to set the maximum size of the media, and has no option to
override the size on the command-line, nor to compose a certain set of media (it all
depends on the size).
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Flexibility">
+ <title>Flexibility</title>
+ <para>
+ Over the years, Revisor has been adopted to serve a large number of
use-cases, where use-cases stretch from media being composed as efficient as possible, as
robust as possible, specific deployment needs and expectations, and to match the Fedora
Project Release Engineering tools' behaviour. All this allows you to configure a lot,
and thus customize a lot, making Revisor more of a flexible framework.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Features-Graphical_User_Interface">
+ <title>Graphical User Interface</title>
+ <para>
+ Revisor has a Graphical User Interface or GUI, in addition to the Command
Line Interface or CLI, which makes Revisor more accessible to users then the other tools,
which are CLI only. Most people only know of Revisor through the GUI, and may think there
is no CLI to Revisor. Only when it comes down to many of the additional features that
Revisor has, and that do not fit in a simplified GUI, one gets down with it using the
CLI.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Features-Open_Development_Community">
+ <title>Open Development Community</title>
+ <para>
+ Revisor has one of those old-fashioned Free and Open Source Software
development communities, allowing anyone to make a contribution to Revisor. In fact,
Revisor has not bounced a single patch since the project started. Therefor, it improves
faster then any of the other compose tools, and is better adaptible to your needs and
expectations, because unlike the other utilities, Revisor is not limited to use-cases that
apply to Fedora Project Release Engineering.
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Features-Plugin_System">
+ <title>Plugin System</title>
+ <para>
+ Revisor has a plugin system so that you can easily extend Revisor. This
plugin system gives you full control over the Revisor procedures, and hands you off
anything Revisor knows about the compose process. There's are multiple plugins
available from upstream as well. To give you an example, the ability to replace
<filename>isolinux.cfg</filename> after the compose is done, is a plugin. See
<xref linkend="Revisor_Reference_Manual-Plugins" /> for more information.
+ </para>
+
+ <para>
+ Current plugins included with Revisor include:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Cobbler_Plugin" />
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Isolinux_Plugin" />
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Rebrand_Plugin" />
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Reference_Manual-Plugins-Upstream-Reuse_Installer_Images_Plugin"
/>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Features-Extraneous_Debugging">
+ <title>Extraneous Debugging</title>
+ <para>
+ Revisor has extraneous debugging, which enables you, as well as the
supporters and Revisor's developers, to trace down what happens exactly, and where
anything might go wrong.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Features-Using_YUM_Configuration_Files">
+ <title>Using YUM Configuration Files</title>
+ <para>
+ Revisor uses YUM configuration files, where everyone else is not. With using
YUM configuration files however, the control you have is nearly limitless. With all the
features in YUM already, using it's configuration file format and letting YUM itself
work with those allows Revisor to do a lot of cool things without doing anything itself:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>Excluding packages from repositories</title>
+ <para>
+ Excluding packages from repositories means a great deal. Not
having them exist in the <xref
linkend="Revisor_Reference_Manual-Appendix-Terminology-Package_Sack" />
ensures the package will not end up in the product. This may be what you want for maybe
just a few, or maybe an awful lot of packages.
+ </para>
+ </formalpara>
+ <para>
+ Using the alternative configuration file format, kickstart, in
use by every other compose tool, and the <literal>repo</literal> configuration
directive that is available with kickstart, you can exclude packages using the
<literal>--exclude=</literal> parameter to the
<literal>repo</literal> configuration directive. However, that parameter does
not allow wildcard matches.
+ </para>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Including only a certain (set of)
package(s)</title>
+ <para>
+ Including only a certain package, or certain set of packages
is valuable when a lot of packages exist in the repository configured, but you only need
one or two.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Concurrent use of baseurl(s) and the
mirrorlist</title>
+ <para>
+ Like during normal YUM operations, the baseurl(s) and the
mirrorlist configured for a repository are used concurrently. This is not possible with
the kickstart configuration directive <literal>repo</literal>, which takes
either <literal>--baseurl</literal> or
<literal>--mirrorlist</literal>, but not both.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Repository priorities</title>
+ <para>
+ Settings available with YUM are available within Revisor as
well, like repository priorities. Using repository priorities, you can have YUM decide to
pull a package from the repository with a higher priority (a lower priority number) rather
then a repository with a lower priority.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>YUM Plugins</title>
+ <para>
+ YUM plugins, such as
<application>yum-fastestmirror</application>,
<application>yum-fedorakmod</application>, are available, giving you even more
control over the behaviour of YUM.
+ </para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ </para>
+ </section>
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Frequently_Asked_Questions.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Frequently_Asked_Questions.xml
new file mode 100644
index 0000000..7e97e0e
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Frequently_Asked_Questions.xml
@@ -0,0 +1,54 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Frequently_Asked_Questions">
+ <title>Frequently Asked Questions</title>
+ <para>
+ para
+ </para>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-How_Does_Revisor_Handle_Comps">
+ <title>How Does Revisor Handle Comps?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-What_Are_Installer_Images">
+ <title>What Are Installer Images?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Pungi">
+ <title>What is the relationship between Revisor and Pungi?</title>
+ <para>
+ Where pungi builds a bunch of RPMs into ISO images and installation trees
through one single procedure, perfect for Release Engineering on something like the Fedora
Project, Revisor does it different entirely.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Livecd-tools">
+ <title>What is the relationship between Revisor and
livecd-tools?</title>
+ <para>
+ Revisor depends on livecd-tools for the composing of live media. Creating the
filesystem to install the packages to, turning that image file into a SquashFS file, and
applying the settings inside the chroot.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-Why_Rebuild_Installer_Images">
+ <title>Why Rebuild Installer Images?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Frequently_Asked_Questions-How_do_I_create_an_updates.img">
+ <title>How do I create an updates.img?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Installation.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Installation.xml
new file mode 100644
index 0000000..f56855f
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Installation.xml
@@ -0,0 +1,104 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Installation">
+ <title>Installation</title>
+ <para>
+ This chapter contains the installation instructions for Revisor.
+ </para>
+
+ <section id="Revisor_Reference_Manual-Installation-Packages">
+ <title>Packages</title>
+ <para>
+ You can install Revisor using RPM packages from the repositories already
configured on your system.
+ </para>
+
+ <formalpara
id="Revisor_Reference_Manual-Installation-Packages-revisor">
+ <title><application>revisor</application></title>
+ <para>
+ Shorthand package for the Revisor GUI.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Installation-Packages-revisor-cli">
+
<title><application>revisor-cli</application></title>
+ <para>
+ The CLI version of Revisor. This package is always installed, as it
contains the Python code for Revisor's core. Installing just this package will give
you the command-line version of Revisor, and prevents the graphical dependencies from the
<xref linkend="Revisor_Reference_Manual-Installation-Packages-revisor-gui"
/> package to be installed as well.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Reference_Manual-Installation-Packages-revisor-gui">
+
<title><application>revisor-gui</application></title>
+ <para>
+ The GUI version of Revisor. This is the actual package containing the
Graphical User Interface, as opposed to <xref
linkend="Revisor_Reference_Manual-Installation-Packages-revisor" />. Depends
on <xref linkend="Revisor_Reference_Manual-Installation-Packages-revisor-cli"
/>, and thus also installs the command-line version of Revisor.
+ </para>
+ </formalpara>
+
+ <section
id="Revisor_Reference_Manual-Installation-Packages-YUM-RHEL">
+ <title>Red Hat Enterprise Linux 5 or higher</title>
+ <para>
+ On Red Hat Enterprise Linux 5 or higher, and derivatives, install the
Extra Packages for Enterprise Linux (EPEL) repository.
+ </para>
+ <para>
+ Then, give the following command:
+ </para>
+ <para>
+ <screen># <userinput>yum install
revisor</userinput></screen>
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Installation-Packages-YUM-Fedora">
+ <title>Fedora 7 or higher</title>
+ <para>
+ On Fedora 7 or higher, and derivatives, no additional repository
configuration is required.
+ </para>
+ <para>
+ Give the following command:
+ </para>
+ <para>
+ <screen># <userinput>yum install
revisor</userinput></screen>
+ </para>
+ <note>
+ <title>About EOL Releases</title>
+ <para>
+ Please bear in mind that Fedora releases that are past the point of
End-Of-Life, approximatly 13 months after the initial release, are not supported anymore
for use with Revisor. Also, the version of Revisor running on these EOL versions of Fedora
are not supported anymore.
+ </para>
+ </note>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Installation-The_Latest_And_Greatest">
+ <title>The Latest and Greatest</title>
+ <para>
+ The latest and greatest is available from GIT, at <ulink
url="git://git.fedorahosted.org/revisor" />. To clone this repository, use:
+ </para>
+ <para>
+ <screen>$ <userinput>git clone
git://git.fedorahosted.org/revisor/</userinput></screen>
+ </para>
+ <para>
+ Using the GIT clone, you have the several options to start using the latest
and greatest:
+ </para>
+ <formalpara>
+ <title>Running directly from the source</title>
+ <para>
+ You can run directly from within the source tree. See <xref
linkend="Revisor_Reference_Manual-Development-Running_Revisor_from_Source" />
for more information on how to do so.
+ </para>
+ </formalpara>
+ <warning>
+ <title>Installed packages and running from source</title>
+ <para>
+ Do not run Revisor from source while RPM packages have been installed.
Files managed by a package will get created, moved and removed when using Revisor's
source tree, and updates to the installed RPM packages will destroy these changes.
+ </para>
+ </warning>
+ <formalpara>
+ <title>Building your own packages</title>
+ <para>
+ You can create your own packages, so that you have all the benefits of
RPM. See <xref
linkend="Revisor_Reference_Manual-Development-Building_Revisor_Packages" />
for more information on how to do so.
+ </para>
+ </formalpara>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Introduction.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Introduction.xml
new file mode 100644
index 0000000..561b37c
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Introduction.xml
@@ -0,0 +1,71 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Introduction">
+ <title>Introduction</title>
+ <para>
+ Revisor is a community product by Fedora Unity. Amongst other features, it allows
the creation of installation media and live media in the easiest possible manner, through
a click-and-go GUI. This chapter gives some insight on how and why Revisor was born, and
how the product evolved since.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Introduction-History_Of_Revisor">
+ <title>History of Revisor</title>
+ <para>
+ Revisor development started in December 2006, during the Fedora 7 development
cycle, in which -you might recall- the Fedora Core repository, maintained by Red Hat, and
Fedora Extras repository, mostly maintained by the community, were merged into one large
repository being maintained by both community members as well as Red Hat employees -which
are mostly community members hired by Red Hat -so community altogether. Before then Red
Hat employees maintained Fedora Core -as the set of packages upstream for Red Hat's
Enterprise product- and the community maintained a repository with additional software;
Fedora Extras. Red Hat composed the Fedora distribution every once in a while, but the
merge introduced the possibility for packages that were in Fedora Extras to be included in
the main distribution, and for the community to also (co-)maintain the (former) Fedora
Core packages that originally made up the distribution.
+ </para>
+ <para>
+ In addition to this huge merge of packages, Red Hat employees were also able
to release the entire build process to the community, meaning that from the moment the
source is committed up and until the release is announced, the entire process is open. Not
that is was all behind closed doors or proprietary or anything, the community just
couldn't really play with it as much. We now have koji (build system), mash
(repository compose from build system products), bodhi (updates release system),
livecd-tools (compose tool for live media) and pungi (compose tool for installation
media).
+ </para>
+ <para>
+ Composing media was an obscure process up and until the moment these tools
exposed the best way to compose (a set of) installation media. Fedora Unity had been
building and releasing so-called Re-Spins1 regularly, but they were built using a
not-so-very intelligent bash script. Like hundreds if not thousands of other parties that
needed to build their own media one way or the other, the entire process was based on the
best educated guess of what should happen. Luckily, in the FOSS world an educated guess is
often a very good guess, despite the fact that one keeps learning even years after the
original engagement.
+ </para>
+ <para>
+ When in December 2006 the compose tools hit a stage in which they were
released to the public, Fedora Unity was eager to get these tools and study them and use
them for composing their Re-Spins. Up and until then, Re-Spins were composed with the
aforementioned bash script that didn't do much but trigger the appropriate commands in
a sequence; There wasn't any dependency resolving between the packages included nor
did we know exactly how a release was supposed to be composed -it was our educated guess
of how it could happen. Although it often led to success, we've had many, many failed
Re-Spins as well. With a handful of volunteers, you can imagine the amount of frustration
that might give. Fedora Unity was eager to improve their Re-Spin process.
+ </para>
+ <para>
+ So, early February 2007, a number of Fedora Unity members attended “FUDCon
2007” in Boston, and presented a working GUI front-end to livecd-tools and pungi enabling
regular users to also re-compose or re-spin the installation media and live media they had
been getting from the Fedora Project. Revisor at this point just made it “as easy as
possible”. Besides the possibilities of pungi and livecd-tools themselves, the wizard
Revisor had apparently was very, very useful to mere mortals. From that point on, things
took off.
+ </para>
+ <para>
+ Fedora Unity decided Revisor could accomplish more then just being a
front-end to existing compose tools and enable someone to tweak a lot of settings as well.
In March 2007, Revisor was rebuild from the ground up in March 2007 to allow a more
flexible process, more dependent on the configuration directives it was given and less so
on the processes of the existing tools. When in San Diego at the Red Hat Summit (early May
2007), Robert 'Bob' Jensen and Jonathan Steffan gave a presentation on
“Customizing Fedora”, the responses were amazing. Since then Revisor has evolved from a
front-end to existing tools to the complete compose tool it is today, with lots of
configuration options for specific use-cases.
+ </para>
+ <para>
+ For users, Revisor is particularly useful because it has a GUI front-end
wizard, which, with the defaults settings, will just succeed in getting a user the media
he/she wants. If a user decides he needs little adjustment of the media, the GUI allows
for selecting the most common options. If a user decides he needs some less common
adjustments, the configuration options gives him very granular control -and as long as the
documentation on all the options is sufficient, users will be able to make those less
common adjustments.
+ </para>
+ <para>
+ For administrators on the other hand, Revisor is the tool that gives so much
granular control over what happens, that it can serve almost every specific use-case. In
this aspect, Revisor could potentially replace the compose tools administrators have been
developing themselves with a consistent and flexible program flow.
+ </para>
+ <para>
+ This document should enable you to study the process of composing
installation and live media, and comprehend the logic Revisor adds to that process.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Introduction-The_Installation_Media_Challenge">
+ <title>The Installation Media Challenge</title>
+ <para>
+ When Fedora Unity first started doing these so-called Re-Spins, the challenge
ahead could maybe be explained like this:
+ </para>
+ <para>
+ <emphasis>When a user downloads a Fedora release and installs the
distribution, the user will need to download and install a number of updates. The “older”
the release becomes, the more updates will be available, and the greater the total
download size of these updates the user will need to download on top of the download size
of the original release media.</emphasis>
+ </para>
+ <para>
+ “older” is in quotes on purpose, because really for an operating system -or
“distribution” if you will- being released every 6 months, “old” is quite a relative
concept. The number of updates available however, at any given time during the release
cycle, may range from 0 right after the release (which has never happened before), to the
total amount of packages installed on the user's system (often over 2000). You can
imagine the size of these updates ranging from 0 MB to an astonishing 2GB(!), only 6
months after the initial release.
+ </para>
+ <para>
+ Some of us do not have the bandwidth capacity or enough data transfer quota
to download this many extra, rather useless bits. In addition, some of us do not have an
Internet connection at all, and thus benefit getting the updates from Re-Spins directly.
+ </para>
+ <para>
+ The use of updates in Re-Spins has several more beneficial side-effects,
which we'll explain in more detail later on in this document. Long story short; If for
some reason the software used to compose the media (the release) with does not work for
your hardware or your specific needs, updated software incorporated in the composed
installer images might resolve that problem.
+ </para>
+ <para>
+ This is the original challenge the Fedora Unity team resolved a long time
ago, and is at the base of what Revisor does nowadays.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Introduction-The_Live_Media_Challenge">
+ <title>The Live Media Challenge</title>
+ <para>
+ Back in the day Fedora Core 5 was the most recent release, Fedora Unity
created so-called live media using Kadischi. In that time, live media could only have a
read-only root file system and was not as feature-rich as live media is today. However,
just before Revisor came to life, two applications were developed; pungi for creating
installation media, and livecd-tools for creating live media. These two applications did
their work well; The media composed for a release, including many different custom live
media spins were, and still are, created with these tools. Immediately, the Revisor
developers set themselves a target to provide a single interface to both of those tools.
+ </para>
+ </section>
+
+</chapter>
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Plugins.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Plugins.xml
new file mode 100644
index 0000000..122f25e
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Plugins.xml
@@ -0,0 +1,131 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Plugins">
+ <title>Plugins</title>
+ <para>
+ para
+ </para>
+
+ <section id="Revisor_Reference_Manual-Plugins-Upstream">
+ <title>Upstream Plugins</title>
+ <para>
+ Plugins available from upstream, maintained by upstream
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Cobbler_Plugin">
+ <title>Cobbler Plugin</title>
+ <para>
+ The Cobbler plugin is able to put the product composed into a Cobbler
environment, by handing off the built product to the existing Cobbler infrastructure as a
<emphasis>distro</emphasis>, and creating a
<emphasis>profile</emphasis>.
+ </para>
+ <para>
+ Using this module, one can automatically import the Revisor product into
a Cobbler environment, and immediately use the new Cobbler
<emphasis>profile</emphasis> to start deploying or automated testing, maybe.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Composer_Plugin">
+ <title>Composer Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Delta_Plugin">
+ <title>Delta Plugin</title>
+ <para>
+ A small change to a ISO image does not require you to download the
complete ISO image if you have a copy of the old ISO image.
+ </para>
+ <note>
+ <title>Only applicable to (...)</title>
+ <para>
+ The generation of Delta ISO images is only applicable to situations
in which the ISO image does not contain SquashFS images. SquashFS images are smaller, but
all SquashFS images are unique. Since the Delta principle is based on similarities, and no
two SquashFS images are alike, creating a Delta on two ISO images containing SquashFS
images will lead to a Delta pratically the same size as the SquashFS image. For Live Media
that compresses the ext3 filesystem image into a SquashFS image, since that SquashFS image
is probably over 97% of the size of the ISO image, creating Delta images for compressed
Live Media does not make sense. For installation media however, most RPMs would be similar
as well as (potentially) the installer images.
+ </para>
+ </note>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-GUI_Plugin">
+ <title>GUI (Graphical User Interface) Plugin</title>
+ <para>
+ Yes, the Graphical User Interface for Revisor is actually a plugin.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-HUB_Plugin">
+ <title>HUB Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Isolinux_Plugin">
+ <title>Isolinux Plugin</title>
+ <titleabbrev id="Isolinux_Plugin">Isolinux
Plugin</titleabbrev>
+ <para>
+ The isolinux plugin adds the
<literal>--isolinux-cfg</literal> command-line option to Revisor. Specify a
file here, and the original <filename>isolinux.cfg</filename> that is built as
part of the compose process is replaced by the
<filename>isolinux.cfg</filename> specified.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Jigdo_Plugin">
+ <title>Jigdo Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Mock_Plugin">
+ <title>Mock Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Rebrand_Plugin">
+ <title>Rebrand Plugin</title>
+ <para>
+ The rebrand plugin hooks in to Revisor at several different stages. The
goal of this plugin is to ensure no trademarked packages end up on the media. Trademarked
packages may include <application>fedora-logos</application>,
<application>redhat-logos</application>, and so forth.
+ </para>
+ <para>
+ The plugin adds a <literal>--rebrand</literal> option, to
which you can specify the name of your new product. When rebranding Fedora to Omega for
example, specifying <literal>--rebrand Omega</literal> would be sufficient to
make sure the product does not have any Fedora trademarks.
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Reuse_Installer_Images_Plugin">
+ <title>Reuse Installer Images Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Server_Plugin">
+ <title>Server Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-Virtualization_Plugin">
+ <title>Virtualization Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Plugins-Upstream-WUI_Plugin">
+ <title>WUI (Web-based User Interface) Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ </section>
+
+ <section id="Revisor_Reference_Manual-Plugins-Writing_Your_Own">
+ <title>Writing Your Own Plugins</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Testing.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Testing.xml
new file mode 100644
index 0000000..ea4ff00
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Testing.xml
@@ -0,0 +1,173 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Testing">
+ <title>Testing</title>
+ <para>
+ The following test cases describe different types of testing a new Revisor
release.
+ </para>
+
+ <section id="Revisor_Reference_Manual-Testing-Simple_Test_Cases">
+ <title>Simple Test Cases</title>
+ <para>
+ This section has a few simple test cases ensuring configuration shipped with
Revisor works as anticipated.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Testing-Simple_Test_cases-Packages">
+ <title>Packages</title>
+ <para>
+ Install the <application>revisor-cli</application>:
+ </para>
+ <para>
+ <screen># <userinput>yum --enablerepo=updates-testing install
revisor</userinput></screen>
+ </para>
+ <para>
+ Installed are all dependencies for the Revisor CLI interface. Make sure
<application>spin-kickstarts</application> is installed, a package for sample
kickstarts.
+ </para>
+ <para>
+ Starting Revisor as follows should not show any error messages related to
Revisor attempting to start up it's GUI interface:
+ </para>
+ <para>
+ <screen>#
<userinput>revisor</userinput></screen>
+ </para>
+
+ <formalpara>
+ <title>Configuration Files</title>
+ <para>
+ The following configuration files should exist:
+ </para>
+ </formalpara>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <filename>/etc/revisor/revisor.conf</filename>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ Each section should have a configuration file listed as
<literal>main</literal>.
+ </para>
+ <para>
+ And, of course, every configuration file listed in each section. In this
case, the following snippet is easy enough:
+ </para>
+ <para>
+ <screen>$ <userinput>i=0; \
+configfiles="`grep ^main /etc/revisor/revisor.conf | \
+ sed -r -e 's/^main.*=\s*(.*)/\1/g'`"
+
+for configfile in $configfiles; do \
+ [ ! -f $file ] && i=1; \
+done; \
+echo $i</userinput></screen>
+ </para>
+ <para>
+ Another way to test the configuration file is to execute:
+ </para>
+ <para>
+ <screen>$ <userinput>revisor --list-models
>/dev/null</userinput></screen>
+ </para>
+ <para>
+ If everything is well, since <literal>STDOUT</literal> is
redirected to <filename>/dev/null</filename>, you should see no messages at
all.
+ </para>
+
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Testing-Simple_Test_Cases-Configuration_Files">
+ <title>Configuration Files</title>
+ <para>
+ The main Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. The file lists a series of
models, each having their own YUM configuration file in
<filename>/etc/revisor/conf.d/</filename>.
+ </para>
+ <formalpara>
+ <title>Testing</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For each model in
<filename>/etc/revisor/revisor.conf</filename>, the
<code>main</code> setting for that model should point to a valid file.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each YUM configuration file should work. To verify, run
the following command for each configuration file:
+ </para>
+ <para>
+ <screen>$ yum -c
<replaceable>$file</replaceable> list kernel</screen>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>Known Errors</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Revisor has baseurls in YUM repositories set to <ulink
url="http://localrepo" />. This URL will not be retrievable for many
people, but allows the developers to quickly change mirrors.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Repositories that are unavailable at the moment of
testing will throw errors Revisor can't do anything about.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the directories
<filename>revisor-yumcache/</filename> and
<filename>revisor/</filename> in <filename>/var/tmp/</filename>,
the default working directory, are not writeable for the user then YUM will throw
permission denied errors.
+ </para>
+ <para>
+ Remove <filename>/var/tmp/revisor/</filename>
and <filename>/var/tmp/revisor-yumcache/</filename> or run the command with
root permissions.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Testing-Simple_Test_Cases-Compose_Results">
+ <title>Requirements for Compose Results</title>
+ <para>
+ Although heavily dependent on Anaconda for this part, these are still
requirements
+ </para>
+
+ <formalpara>
+ <title>ld-linux.so.2</title>
+ <para>
+ In the <filename>initrd.img</filename> of the composed
product, if 32-bit, <filename>/lib/ld-linux.so.2</filename> (or any other
version) should link to <filename>/lib/ld-2.9.so</filename> (or any other
version). If <filename>/lib/ld-linux.so.2</filename> links to itself, the
media will fail to install.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>How to test</title>
+ <para>
+ In a terminal, type the following command:
+ </para>
+ </formalpara>
+ <para>
+ <screen>$ <userinput>lsinitrd /path/to/initrd | grep
ld-linux</userinput></screen>
+ </para>
+ <para>
+ See also: <ulink
url="https://www.redhat.com/archives/anaconda-devel-list/2009-Februa...
/>
+ </para>
+
+ </section>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Testing-Complex_Test_Cases">
+ <title>Complex Test Cases</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Testing-Specific_Test_Cases">
+ <title>Specific Test Cases</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Tips_and_Tricks.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Tips_and_Tricks.xml
new file mode 100644
index 0000000..8b785ee
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Tips_and_Tricks.xml
@@ -0,0 +1,47 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Tips_and_Tricks">
+ <title>Tips and Tricks</title>
+ <para>
+ para
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Tips_and_Tricks-The_spin-kickstarts_Package">
+ <title>The spin-kickstarts Package</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tips_and_Tricks-Even_More_Debugging">
+ <title>Even More Debugging</title>
+ <para>
+ something about using -x to buildinstall scripts
+ </para>
+ </section>
+
+ <section id="Revisor_Reference_Manual-Tips_and_Tricks-ksvalidator">
+ <title>Kickstart Validator</title>
+ <para>
+ something about using -x to buildinstall scripts
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tips_and_Tricks-Using_Mirrormanager_For_Mirror_Redirection">
+ <title>Using Mirrormanager for Mirror Redirection</title>
+ <para>
+ Something about using Mirrormanager to redirect you to the local mirror (so
you do not have to edit YUM configuration files).
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tips_and_Tricks-The_localrepo_DNS_Alias">
+ <title>Using The localrepo DNS Alias</title>
+ <para>
+ Something about using the localrepo DNS alias to point to your local mirror
(either through real DNS or through /etc/hosts), so you do not have to edit the YUM
configuration files.
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Tweaking_The_Build_Process.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Tweaking_The_Build_Process.xml
new file mode 100644
index 0000000..4979285
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Tweaking_The_Build_Process.xml
@@ -0,0 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Tweaking_The_Build_Process">
+ <title>Tweaking the build process</title>
+ <para>
+ para
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Reusing_Existing_Installer_Images">
+ <title>Reusing Existing Installer Images</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Building_The_Installer_Images_In_Mock">
+ <title>Building The Installer Images in Mock</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Omitting-isomd5sum">
+ <title>Omitting isomd5sums</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Tweaking_The_Build_Process-Omitting-sha1sums">
+ <title>Omitting SHA1SUMS</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual-Using_Kickstart.xml
b/doc/Reference_Manual/en-US/Reference_Manual-Using_Kickstart.xml
new file mode 100644
index 0000000..f3e6ab2
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual-Using_Kickstart.xml
@@ -0,0 +1,118 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Reference_Manual-Using_Kickstart">
+ <title>Using Kickstart</title>
+ <para>
+ Kickstart is a configuration file format for automating installation procedures.
Or at least, it was, originally. Nowadays, kickstart files are used as input to the
compose tools, including Revisor.
+ </para>
+ <para>
+ Revisor again is unique in that it does not require a kickstart file for input.
The other tools only take kickstart configuration files. Revisor though allows most of
what is in a kickstart file to be configured interactively in Graphical User Interface
mode.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Using_Kickstart-How_Kickstart_Is_Used">
+ <title>How Kickstart Is Used</title>
+ <para>
+ There's two cases in which a kickstart file is used differently. One is
during the compose of installation media, and the other of course is during the compose of
live media, or virtualization media.
+ </para>
+
+ <section
id="Revisor_Reference_Manual-Using_Kickstart-How_Kickstart_Is_Used-Installation_Media">
+ <title>Installation Media</title>
+ <para>
+ In the case of installation media, the following settings are used:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <formalpara>
+
<title><literal>repo</literal></title>
+ <para>
+ The <literal>repo</literal> command in
kickstart is used when Revisor is configured to use the repositories configured in the
kickstart file only. Use <literal>kickstart_repos = 1</literal> to enable this
feature, or set the appropriate checkbox in the Revisor GUI.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+
<title><literal>%packages</literal></title>
+ <para>
+ The <literal>%packages</literal> section in
kickstart is used to determine the RPM payload on the installation media. It can include
groups and packages, and exclude packages. It accepts wildcards, both in includes and
excludes of packages (but not groups).
+ </para>
+ </formalpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <note>
+ <title>@core and @base</title>
+ <para>
+ By default, groups @core and @base are included in the package
manifest. You can specify @base to not be included, by using <literal>%packages
--nobase</literal>, but @core cannot be excluded using a kickstart package
manifest.
+ </para>
+ </note>
+ <para>
+ Using <literal>kickstart_exact</literal>, you can exclude
@core and @base so that you need to explicitly select them in the kickstart package
manifest.
+ </para>
+ <para>
+ Using <literal>kickstart_exact_nevra</literal> ...
+ </para>
+ </section>
+ </section>
+
+ <section
id="Revisor_Reference_Manual-Using_Kickstart-The_Kickstart_Package_Manifest">
+ <title>The Kickstart Package Manifest</title>
+ <para>
+ para
+ </para>
+
+ <formalpara>
+ <title>Group @core</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Group @base</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Including groups of packages</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Including a single package</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Excluding a single package</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Using wildcard matches</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <section
id="Revisor_Reference_Manual-Using_Kickstart-Using_Kickstart_With_Package_NEVRA">
+ <title>Using Kickstart with Package NEVRA</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual.xml
b/doc/Reference_Manual/en-US/Reference_Manual.xml
index 757504d..7962278 100644
--- a/doc/Reference_Manual/en-US/Reference_Manual.xml
+++ b/doc/Reference_Manual/en-US/Reference_Manual.xml
@@ -6,18 +6,18 @@
<xi:include href="Book_Info.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Preface.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Introduction.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Features.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Installation.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Using_Kickstart.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Compose_Process_Details.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Plugins.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Tweaking_The_Build_Process.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Tips_and_Tricks.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Frequently_Asked_Questions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Testing.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Development.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Reference_Manual-Introduction.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Reference_Manual-Features.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Reference_Manual-Installation.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Reference_Manual-Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Reference_Manual-Using_Kickstart.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Reference_Manual-Compose_Process_Details.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Reference_Manual-Plugins.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include
href="Revisor_Reference_Manual-Tweaking_The_Build_Process.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Reference_Manual-Tips_and_Tricks.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include
href="Revisor_Reference_Manual-Frequently_Asked_Questions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Reference_Manual-Testing.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Reference_Manual-Development.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Revision_History.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<index />
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Compose_Process_Details.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Compose_Process_Details.xml
deleted file mode 100644
index 64515ff..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Compose_Process_Details.xml
+++ /dev/null
@@ -1,431 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Compose_Process_Details">
- <title>Compose Process Details</title>
- <para>
- This chapter lists the details of the compose process as well as dives deep into
the features of Revisor.
- </para>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Overview">
- <title>Overview</title>
- <titleabbrev
id="Compose_Process_Details-Overview">Overview</titleabbrev>
- <para>
- Of course, the compose process for installation media is a little different
then the compose process for live media.
- </para>
- <para>
- When composing, Revisor starts out doing the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Revisor initiates and loads plugins, options, and defaults. At
this point, Revisor has a so-called <emphasis>ConfigStore</emphasis> that
holds all options Revisor knows about.
- </para>
- </listitem>
- <listitem>
- <para>
- Revisor reads the options from the command-line.
- </para>
- </listitem>
- <listitem>
- <para>
- Revisor reads the configuration file specified with the
<code>--config</code> command-line parameter, or uses it's builtin
default, <filename>/etc/revisor/revisor.conf</filename>.
- </para>
- </listitem>
- <listitem>
- <para>
- Revisor reads the global <code>[revisor]</code>
section for all settings available in it's
<emphasis>ConfigStore</emphasis> and sets those configured in the global
section. Remember that if an option is not available in the
<emphasis>ConfigStore</emphasis> but is configured in the global configuration
section, it is ignored.
- </para>
- </listitem>
- <listitem>
- <para>
- If a model is specified in the configuration file's global
section <code>[revisor]</code>, Revisor will set that model to be used and
loads it.
- </para>
- </listitem>
- <listitem>
- <para>
- If a model has been specified on the command-line, with option
<code>--model</code>, Revisor loads that model.
- </para>
- </listitem>
- <listitem>
- <para>
- When loading the model, Revisor again iterates over all the
settings that are in the <emphasis>ConfigStore</emphasis>, checks if the
setting has been configured in the model section, and adjusts the setting in the
<emphasis>ConfigStore</emphasis> if necessary. Again remember that if the
<emphasis>ConfigStore</emphasis> does not know about one or the other option
already, that setting is ignored.
- </para>
- </listitem>
- <listitem>
- <para>
- Now that the defaults and configuration file settings have been
applied to the <emphasis>ConfigStore</emphasis>, it is time for Revisor to
look at the options specified on the command-line to see if you wanted to override
anything.
- </para>
- </listitem>
- <listitem>
- <para>
- While loading each configuration setting available in the global
<code>[revisor]</code>, model-specific sections and/or command-line, Revisor
checks every settings against a function that is specifically written to check such
setting. For example, the label of an ISO cannot be longer then 32 characters.
- </para>
- </listitem>
- <listitem>
- <para>
- Especially in CLI mode, these settings build up the task list for
Revisor. If there's nothing to do, Revisor will throw an error explaining what's
missing. If there's things to do that cannot be done in one run, Revisor will throw an
error explaining that.
- </para>
- </listitem>
- <listitem>
- <para>
- In Graphical User Interface mode however, if the settings loaded
so far are all OK, the GUI will start. Since you can still adjust a few settings from
within the GUI, the settings loaded so far will be the defaults for configuration settings
that have a dialog for you to adjust them with, throughout the rest of the process.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Installation_Media">
- <title>Installation Media</title>
- <para>
- As we've explained before, composing installation media is a little
different then composing live media. That's not just because installation media should
start an installation procedure and live media should show you a nice, shiny,
fully-functional Desktop.
- </para>
- <para>
- For one, installation media allows split media. This means that Revisor can
span the payload of the product over multiple ISO images or multiple discs, if you will.
When composing installation media, Revisor basically does the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Of course, Revisor goes through the loading of configuration
options mentioned in the <xref
linkend="Revisor_Documentation-Compose_Process_Details-Overview"
endterm="Compose_Process_Details-Overview" />.
- </para>
- </listitem>
- <listitem>
- <para>
- When you're done specifying options in the GUI, or when
Revisor thinks it can go ahead using the options specified in CLI mode, it takes the list
of packages selected from either the GUI or the kickstart
<code>%packages</code> manifest.
- </para>
- <para>
- Not getting too deep into details here, yet, because some of
these things are routines shared with other composing modes, but here's a few
additional considerations Revisor makes when doing the package selection.
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Normally, a kickstart
<code>%packages</code> manifest only allows you to select package
<emphasis>names</emphasis>. With Revisor though, you can select exact package
<emphasis>NEVRA</emphasis> to select a certain version or architecture for the
package that you want. Additionally, if a package is not available, Revisor searches the
<emphasis>Provides</emphasis> of the available packages.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Live_Media">
- <title>Live Media</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Respin_Mode">
- <title>Respin Mode</title>
- <para>
- Revisor has a respin mode that in some aspects differs from the regular
routines. It is intended to reflect behaviour of tools in use by the Fedora Project
Release Engineering team as closely as possible.
- </para>
- <para>
- Re-Spin mode only affects installation media products.
- </para>
- <para>
- In Re-Spin mode, the way the RPM payload is determined from kickstart differs
from Revisor's normal procedures. See <xref
linkend="Revisor_Documentation-Using_Kickstart" /> for more details on using
a kickstart package manifest.
- </para>
- <para>
- A kickstart file's so-called <xref
linkend="Revisor_Documentation-Appendix-Terminology-package_manifest" />
usually looks like:
- </para>
- <para>
- <screen>%packages
-@group1
-@group2 --nodefaults
-@group3 --optional
-package1
-package2
--package3
-%end</screen>
- </para>
- <para>
- Which tells us the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Include all mandatory and default packages from group1
- </para>
- </listitem>
- <listitem>
- <para>
- Include all mandatory packages from group2
- </para>
- </listitem>
- <listitem>
- <para>
- Include all mandatory, default and optional packages from group3
- </para>
- </listitem>
- <listitem>
- <para>
- Include package1, and package2
- </para>
- </listitem>
- <listitem>
- <para>
- Exclude package3
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Depending on how you use this instructions or information, there is a slight
difference in the package set that ends up on the media you compose.
- </para>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Respin_Mode-Selecting_Groups">
- <title>Selecting Groups</title>
- <para>
- Selecting groups has the following logic: When you load a repository you
may also load the groups file (often referred to as 'comps' or
'comps.xml'). This comps file is an XML file with categories, groups (per
category), and per group:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- a list of mandatory packages. If you select or include the
group, these packages come with it.
- </para>
- </listitem>
- <listitem>
- <para>
- a list of default packages. If you select or include the
group, these packages will come with it as a default. If you only want the mandatory,
minimum set of packages for this group, in a kickstart package manifest append
<code>--nodefaults</code> to the group line or in the Revisor GUI,
right-click on the group and choose <emphasis>Deselect all
packages</emphasis>.
- </para>
- </listitem>
- <listitem>
- <para>
- a list of optional packages. If you select a group you have
not yet selected these packages. To select the optional packages of a group, in a
kickstart package manifest append <code>--optional</code> to the group line or
in the Revisor GUI, right-click on the group and choose <emphasis>Select all
optional packages</emphasis>.
- </para>
- </listitem>
- <listitem>
- <para>
- a list of conditionals. If you select this group, these
conditionals are thrown into the package sack and transaction information and include or
exclude other packages. Suppose you select the '@nl-support' or “Dutch Support”
group from the Languages or Localization category, you would end up with support for the
Dutch language in all applications that have that kind of support.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Respin_Mode-Select_Matching_Packages">
- <title>Select Matching Packages</title>
- <para>
- This is the logic Revisor applies when running in Re-Spin mode (on the
CLI, specify <code>--respin</code>). It imitates the behavior pungi has, and
thus enables you to copy that behavior. Note that <code>--respin</code> has
other implications as well.
- </para>
- <para>
- First of all, it iterates the groups in the kickstart package manifest.
For each group, it appends the names of the mandatory packages to a list, and depending on
the additional parameters specified with that group (<code>--nodefaults</code>
or <code>--optional</code>), appends the names of the other packages in that
group as well.
- </para>
- <para>
- Then it iterates over the package names in the package manifest. These
package names are appended to the same list of package names too. This includes package
'names' with some sort of wildcard (?, or *).
- </para>
- <para>
- Then it iterates over all the excluded packages, appending each of those
to the YUM configuration exclude list.
- </para>
- <para>
- Now that Revisor has a very simple, flat list of package names, it uses
YUM's internal matching logic 5 to get what packages in the repositories matched
exactly (by name), matched (by wildcard) and did not match at all. Revisor then selects
the exact matches and matches, adding them to the transaction.
- </para>
- </section>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving">
- <title>Dependency Resolving</title>
- <indexterm>
- <primary>Dependency Resolving</primary>
- </indexterm>
- <para>
- Dependency resolving is the area where some of the efficiency Revisor can
gain for you comes from. While of course there is specific reasons to do things one way,
or the other, most people I speak to about Revisor, it is not very clear why, or what
Revisor does in this area. First of all, there's two ways of resolving dependencies:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
- <title>Inclusive Dependency Resolving</title>
- <indexterm>
- <primary>Dependency Resolving</primary>
- <secondary>Inclusive</secondary>
- </indexterm>
- <para>
- Iterate all packages in the transaction and list their
requirements, then for each of those requirements, find all packages that provide a
matching capability, add those packages to the transaction, and don't forget to add
the requirements those packages have themselves, back into the pile of (unmet)
requirements.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>Exclusive Dependency Resolving</title>
- <indexterm>
- <primary>Dependency Resolving</primary>
- <secondary>Inclusive</secondary>
- </indexterm>
- <para>
- Iterate all the packages and for each of the requirements
found, find the best package that meets the requirement. This is also YUMs default
behavior. Anaconda uses YUM during the installation, and this is the behaviour of YUM used
during the installation.
- </para>
- </formalpara>
- </listitem>
- </orderedlist>
- </para>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Inclusive">
- <title>Inclusive Dependency Resolving</title>
- <para>
- Hypothetically, you could describe inclusive dependency as follows:
- </para>
- <para>
- <screen>final_packages = []
-more_to_do = True
-while more_to_do:
-more_to_do = False
-for package in packages:
- if package in final_packages:
- continue
-
- dependencies = find_package_dependencies()
- for dependency in dependencies:
- pulled_in_package = pull_in_dependency()
- if pulled_in_package not in final_packages:
- packages.append(pulled_in_package)
- more_to_do = True</screen>
- </para>
- <para>
- So, what does this mean? Basically, it means that if there is a
requirement for a capability, all packages providing that capability are being pulled in.
Now imagine package 'foo' requires capability 'web-client'. There's a
number of packages providing that capability, right? So you get Firefox, lynx, elinks,
konqueror, safari, Netscape, Internet Explorer, emacs, for free! All of those pull in
their own dependencies also, of course.
- </para>
- <note>
- <para>
- If you catch this before it catches you, you can prevent the packages
from being pulled in during dependency resolving by not making the package available in
the <xref linkend="Revisor_Documentation-Appendix-Terminology-Package_Sack"
/> in the first place, using the <literal>-firefox</literal> syntax in the
kickstart package manifest, and setting
<literal>kickstart_uses_pkgsack_excludes</literal> to 1.
- </para>
- </note>
- <note>
- <para>
- You may have thought of it; pulling in packages this way may give you
a package set (or <emphasis>RPM payload</emphasis>) that has conflicting
packages. Imagine package <application>foo</application> requiring capability
<application>bar</application>, which is provided by two packages that
conflict with one another (either on explicit <literal>Conflicts:</literal>
RPM header or file level). Both will be pulled in, hence disabling you to install
everything (<literal>'*'</literal> or -previously-
<literal>@Everything</literal> in the kickstart package manifest).
- </para>
- </note>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Makes_Sense">
- <title>When This Makes Sense</title>
- <para>
- If you are composing a large distribution of which 3 million users in
even so many different situations having so many different expectations and desires, you
will want this behaviour, since you won't be able to determine which one of the
packages for each capability someone in that group wants, and which one may not want. Or,
in case of upgrades, what the system needs. Shipping them all on the same media is the
best solution in these cases.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Does_Not_Make_Sense">
- <title>When This Does Not Make Sense</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- When creating installation media to be installed
unattended, or to be used in conjunction with deployment strategies
- </para>
- </listitem>
- <listitem>
- <para>
- When creating installation media to be upgrading PCs you
have controlled from the beginning, such as in a company
- </para>
- </listitem>
- <listitem>
- <para>
- Installation for a small group of users or systems
- </para>
- </listitem>
- <listitem>
- <para>
- When creating minimal installation media, or media with a
minimal RPM payload.
- </para>
- </listitem>
- <listitem>
- <para>
- When creating installation media that is to be used with
installing "Everything" in the RPM payload.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Exclusive">
- <title>Exclusive Dependency Resolving</title>
- <para>
- Exclusive dependency resolving is what YUM does when you execute a
<application>yum install</application>. Unless you've specified one of the
packages satisfying any of the dependencies in the transaction, YUM is going to look up
the best match for you. This results in the installation of only one package providing the
requirement(s) of other packages, rather then all packages providing said requirement
being installed.
- </para>
- <para>
- As an example, imagine you install a package foo which requires
capability web-client. Using exclusive dependency resolving, YUM would select one package
providing the web-client capability whereas inclusive dependency resolving would include
all packages providing the web-client capability.
- </para>
- <para>
- During the installation procedure, one of the major features of
installation media, anaconda is going to use YUM dependency resolving to satisfy all the
dependencies.
- </para>
- <note>
- <title>Installation Procedure !== Upgrade Procedure</title>
- <para>
- Note that an installation procedure is not the same as an upgrade
procedure. With an installation procedure for example, you have control over the
partitioning layout whereas with an upgrade procedure, you have none. More importantly,
during an upgrade procedure, the (already installed) system has an existing package set
which needs to be updated/upgraded and thus could possibly introduce dependency resolving
problems, because of third party packages installed on the system, or because the media
used to upgrade the system with does not contain the software packages needed to complete
the upgrade RPM transaction.
- </para>
- </note>
- </section>
-
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Copying_Arbitrary_Files_Onto_The_Media">
- <title>Copying Arbitrary Files Onto the Media</title>
- <para>
- With <literal>--copy-dir</literal>, you can specify a path
Revisor should copy onto the media.
- </para>
- <formalpara>
- <title>Installation Media</title>
- <para>
- In the case of installation media, the path specified with
<literal>--copy-dir</literal> will be copied recursively to the
<filename>files/</filename> sub-directory at the root of the ISO image (or the
first ISO image if you compose split media).
- </para>
- </formalpara>
- <para>
- A few use-case examples:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- If one kickstart profile is not enough for you to deploy the
product onto your systems, create a directory that holds multiple kickstart files and
specify the path to that directory using <literal>--copy-dir</literal>. The
kickstart files now end up available to the installation procedures as
<filename>cdrom:/files/*.ks</filename>, and can thus be used by specifying
them on the kernel cmdline (<code>ks=cdrom:/files/profile1.ks</code>), or,
when used in combination with <literal>--isolinux-cfg</literal> from the
<xref linkend="Revisor_Documentation-Plugins-Upstream-Isolinux_Plugin"
endterm="Isolinux_Plugin" />, can be added as an option in the isolinux
menu.
- </para>
- </listitem>
- <listitem>
- <para>
- If you have files or scripts that need to be copied onto, or run
on, the installed system before it attempts to reboot and operate normally, you can use
<literal>--copy-dir</literal> to make these files and scripts available during
the installation and copy or execute them from either <code>%pre</code> or
<code>%post</code> scripts.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <formalpara>
- <title>Live Media</title>
- <para>
- In the case of live media, the path specified with
<literal>--copy-dir</literal> will be copied recursively onto the root
directory (<filename>/</filename>) of the live media filesystem (which is
probably loop-mounted onto <filename>/var/tmp/revisor/</filename>).
- </para>
- </formalpara>
- <para>
- If, for example, you want to copy a home directory onto the live media, and
the home directory you want to copy is at <filename>/home/user1/</filename> on
the composing system, you copy this directory so that the root of that new directory has a
sub-directory <filename>home/</filename> which in turn contains a
sub-directory <filename>user1/</filename>:
- </para>
- <para>
- <screen>$ <userinput>mkdir -p
/tmp/something/home/</userinput>
-$ <userinput>cp -a /home/user1 /tmp/something/home/.</userinput>
-$ <userinput>revisor [options] --copy-dir
/tmp/something/</userinput></screen>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Cleaning_Up">
- <title>Cleaning Up</title>
- <para>
- Revisor tends to clean up after itself by default. If a product compose
succeeds, you (probably) don't need to change this default behaviour. However, by
default, Revisor tends to leave the YUM cache directories untouched. This is to prevent
you from having to download all the packages a second, third or more times when you run
another compose.
- </para>
- <para>
- To change this default behaviour, Revisor has an option
<literal>--clean-up</literal>. The default value for this option is
<literal>1</literal>, meaning Revisor will clean up it's temporary,
compose-specific files, but no files that could be re-used. Specifying
<literal>--clean-up=0</literal> will cause Revisor to leave everything behind
and not clean anything up at all. This is most ideal for troubleshooting purposes, where
one needs to examine the temporary, compose-specific files and see what went wrong. To
clean up everything however, because for example you might be low on disk-space, use
<literal>--clean-up=2</literal>. Revisor will then also clean up the files
that could be re-used.
- </para>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Cleaning_Up-Exception-to-the-Rule">
- <title>Exception to the Rule</title>
- <para>
- There's one exception to the rule of cleaning up.
<filename>/var/tmp/revisor/</filename>, or put more accurately, the path
specified as the <code>installroot</code> in the YUM configuration file
configured with the model used to compose the product, will not be cleaned up afterwards.
When composing live media, this directory may still be in use as a mount-point for the
live media filesystem. Removing this directory recursively in these cases would not make
sense.
- </para>
- </section>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Configuration.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Configuration.xml
deleted file mode 100644
index 9d435bf..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Configuration.xml
+++ /dev/null
@@ -1,280 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Configuration">
- <title>Configuration</title>
- <para>
- Revisor configuration can be performed using <xref
linkend="Revisor_Documentation-Configuration-Files" />, or through <xref
linkend="Revisor_Documentation-Configuration-Command-line_Options" />.
- </para>
-
- <section id="Revisor_Documentation-Configuration-Files">
- <title>Configuration Files</title>
- <para>
- Revisor uses configuration files for a large part of it's operations.
These files mostly reside in <filename>/etc/revisor/</filename>. There is two
types of files Revisor uses:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
- <title>Revisor Configuration Files</title>
- <para>
- Revisor configuration files, such as
<filename>/etc/revisor/revisor.conf</filename>, contain information and
settings unique to Revisor. A Revisor configuration file is where you specify default
options, and include information on different products you want to compose.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>YUM Configuration Files</title>
- <para>
- YUM configuration files, such as the files in
<filename>/etc/revisor/conf.d/</filename>, contain configuration for YUM. To
be more precise, Revisor doesn't even handle the files (it let's YUM do so). The
files in <filename>/etc/revisor/conf.d/</filename> practically contain the
same information as <filename>/etc/yum.conf</filename> combined with the files
in <filename>/etc/yum.repos.d/</filename> (but not exactly the same
content!).
- </para>
- </formalpara>
- </listitem>
- </orderedlist>
- </para>
-
- <section
id="Revisor_Documentation-Configuration-Files-_etc_revisor_revisor.conf">
-
<title><filename>/etc/revisor/revisor.conf</filename></title>
- <para>
- The default Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. This configuration file
contains two sections:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
-
<title><literal>[revisor]</literal></title>
- <para>
- The global section. Options specified in this section
apply to all the models defined in this configuration file.
- </para>
- </formalpara>
- <para>
- See also: <xref
linkend="Revisor_Documentation-Configuration-Global_and_Model_Configuration"
/>
- </para>
- </listitem>
- <listitem>
- <formalpara>
-
<title><literal>[<replaceable>model</replaceable>]</literal></title>
- <para>
- Model configuration. One section per <xref
linkend="Revisor_Documentation-Appendix-Terminology-model" />.
- </para>
- </formalpara>
- <para>
- See also: <xref
linkend="Revisor_Documentation-Configuration-Global_and_Model_Configuration"
/>
- </para>
- </listitem>
- </orderedlist>
- </para>
- <para>
- Model sections basically define a single product. Amongst other things,
the distribution name, release version, architecture for the product to be composed and
what YUM configuration file to use, are (often) defined on a per-model basis. There is a
large number of settings available for models, and they are all related to how the product
is going to look like. The product name, the location of the RPM payload for installation
media, the ISO label, the YUM configuration file to use, are all model settings.
- </para>
- <para>
- Using models, you can reproduce the outcome of the compose process, a
<emphasis>product</emphasis>, simply by not changing the model configuration
anymore. If you want something different, you can just add another model section, and name
it differently.
- </para>
- <para>
- To see what models are available with the Revisor standard package, use:
- </para>
- <para>
- <screen>$ <userinput>revisor
--list-models</userinput></screen>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Files-_etc_revisor_conf.d_">
-
<title><filename>/etc/revisor/conf.d/</filename></title>
- <para>
- The default YUM configuration files used by Revisor. In a model
configuration section, the <literal>main =</literal> setting points to one of
the YUM configuration files in <filename>/etc/revisor/conf.d/</filename>
- </para>
- </section>
-
- <section id="Revisor_Documentation-Configuration-Files-Updates">
- <title>Updates to Configuration Files</title>
- <para>
- The Revisor packages are not allowed to overwrite files in
<filename>/etc/</filename>, and they should thus not do so. If an update to
Revisor is installed on your system, files with the extension
<literal>.rpmnew</literal> may be created --if you had changed anything in the
file before applying the update. Since this world isn't perfect, configuration errors
may exist in the configuration files shipped with Revisor. Please pay close attention to
updates to these configuration files by examining the
<literal>.rpmnew</literal> files.
- </para>
- <para>
- You can use any file location (not just
<filename>/etc/revisor/</filename>) for your own custom configuration.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Files-Changing_Configuration_Files">
- <title>Changing Configuration Files</title>
- <para>
- If you are creating your own models off of the ones that ship with
Revisor itself, please consider using an alternative configuration file (a file other then
<filename>/etc/revisor/revisor.conf</filename>, or copy the original file for
safekeeping. This way, you can always return to a working, sample configuration file and
test whether it is Revisor causing errors, or configuration mistakes.
- </para>
- </section>
-
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Global_and_Model_Configuration">
- <title>Global and Model Configuration</title>
- <para>
- The default Revisor configuration file,
<filename>/etc/revisor/revisor.conf</filename> consists of multiple sections
(the file is in .INI format). One is the <literal>[revisor]</literal> global
section, where you specify configuration options that apply to each other section or
<xref linkend="Revisor_Documentation-Appendix-Terminology-model" />.
- </para>
- <para>
- The options specified in the global and model configuration sections apply to
the Revisor compose in the following order:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <para>
- The options from the global section are read, tested and set.
- </para>
- </listitem>
- <listitem>
- <para>
- The options from a model section are read, tested and set,
regardless of whether the global section had caused the setting to be set to a certain
value already.
- </para>
- </listitem>
- </orderedlist>
- </para>
- <para>
- For example, if you know all the models in a configuration file are optical
live media products, the configuration sections could look like the following:
- </para>
- <para>
- <screen>[revisor]
-# Optical live media for all models
-media_live_optical = 1
-
-[model1]
-main = /etc/revisor/conf.d/revisor-model1.conf
-description = The model1 product
-architecture = i386
-# This is already configured in the global section of
-# this configuration file and can thus be removed.
-#media_live_optical = 1</screen>
- </para>
- <note>
- <title>When Running the GUI</title>
- <para>
- Note that when running Revisor in Graphical User Interface mode, you can
still change a lot of the settings supplied by Revisor through the configuration files
loaded. When you are running Revisor in GUI mode, the configuration files supply the
defaults.
- </para>
- </note>
- </section>
-
- <section id="Revisor_Documentation-Configuration-Yum_Repositories">
- <title>YUM Repository Configuration</title>
- <para>
- The files in <filename>/etc/revisor/conf.d/</filename> are YUM
configuration files. Revisor directs YUM to use these files during the compose process,
and does not handle these files itself. This chapter lists a few tips and tricks.
- </para>
- <para>
- Because these files are YUM Configuration files, you can configure anything
that YUM supports. See <application>man yum.conf</application> for more
details.
- </para>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-releasever_and_basearch">
- <title>$releasever and $basearch</title>
- <para>
- When configuring a repository URL, make sure you do not use
<replaceable>$releasever</replaceable> or
<replaceable>$basearch</replaceable> variables. Since Revisor allows
cross-composing distributions between different versions of the operating system, as well
as different architectures, these variables need to be expanded to the value intended.
- </para>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Using_a_Local_Mirror">
- <title>Using a Local Mirror</title>
- <para>
- If you have a local mirror of Fedora, you can use the
<literal>baseurl</literal> configuration directive in each repository
configuration section to tell YUM to use the local mirror.
- </para>
- <para>
- Optionally, you can also disable the
<literal>mirrorlist</literal>, preferably by outcommenting it, so that YUM
will only use the local mirror.
- </para>
- <para>
- The default <literal>baseurl</literal> uses
<
literal>http://download.fedoraproject.org/</literal>. This location may or
may not be suitable for you. If you have a local mirror, you might want to change this
setting here, or add your mirror to Fedora Project's Mirrorlist.
- </para>
- <note>
- <title>Adding your local mirror to the Mirrorlist</title>
- <para>
- You can add your local mirror to the Mirrorlist, so that the Fedora
Project mirrorlist redirects you to your local mirror. Additionally, systems in your local
network(s) will be redirected to the local mirror. The local mirror does not have to be a
public mirror in order to do so. See <ulink
url="http://admin.fedoraproject.org/mirrormanager/" /> for more details.
- </para>
- </note>
- <para>
- Set each <literal>baseurl</literal> to the location of the
repository on the local mirror.
- </para>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Using_Local_Files">
- <title>Using Local Files</title>
- <para>
- If you have the repositories on your local filesystem, configure a
<literal>baseurl</literal> of
<filename>file://<replaceable>/path/to/repository/</replaceable></filename>.
- </para>
- <note>
- <title>Make sure to supply the correct path</title>
- <para>
- Make sure to supply the correct path to the repository.
<filename>file://</filename> is the
"<emphasis>protocol</emphasis>" for the location, and the location
is
<filename><replaceable>/path/to/repository/</replaceable></filename>.
Put together, you have <emphasis>three</emphasis> slashes.
- </para>
- </note>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Using_a_DVD">
- <title>Using a DVD</title>
- <para>
- A DVD does not contain enough packages to rebuild the installer images.
If you are using a DVD and you want to rebuild the installer images, you will need to have
a network connection and a mirror you can reach.
- </para>
- <para>
- There is a list of required packages, but since the packages change per
release and may change in the middle of the release cycle as well, we cannot hand you a
list that just works.
- </para>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Adding_Third_Party_Repositories">
- <title>Adding Third Party Repositories</title>
- <para>
- When adding a third party repository, make sure you add the correct
release version as well as architecture to the Revisor YUM configuration file. Verify the
location for the <literal>baseurl</literal> and/or
<literal>mirrorlist</literal> you configure manually or through YUM. Make sure
you expand any <literal>$releasever</literal>,
<literal>$basearch</literal> and <literal>$arch</literal>
variables.
- </para>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Creating_Your_Own_Repository">
- <title>Creating Your Own Repository</title>
- <para>
- Creating your own repository is relatively simple. You take a directory,
dump some RPM packages in it, and run <application>createrepo</application>.
See <literal>man createrepo</literal> for more information.
- </para>
- <para>
- People often wonder how Revisor handles comps.xml group files.
- </para>
- <para>
- When you create your own repository, follow the directions in <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Adding_Third_Party_Repositories"
/> to add the repository configuration to Revisor's YUM configuration, since your
own repository is a third party repository as well.
- </para>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting">
- <title>Testing & Troubleshooting the YUM
Configuration</title>
- <para>
- Before you use the (modified) configuration file, take it for a test
run.
- </para>
- </section>
-
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Configuring_A_Proxy">
- <title>Configuring A Proxy Server</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Command-line_Options">
- <title>Command-line Options</title>
- <para>
- With the command-line options available, you can configure options that
either override what is in the configuration file or have simply not been configured using
the configuration file. With the default configuration files that come with the
<application>revisor-cli</application> package for example, no media products
have been pre-configured in the default section. In the
<application>revisor-unity</application> package however, some default
configuration has been applied so that Fedora Unity Re-Spins actually create CD, DVD and
Rescue ISO images as well as the Installation Tree and include the sources.
- </para>
- <para>
- Only some configuration options have CLI parameters. Use
<application>revisor --help</application> to see a complete list of
configuration options you can supply on the command line.
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Development.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Development.xml
deleted file mode 100644
index 02407c1..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Development.xml
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Development">
- <title>Development</title>
- <para>
- This chapter sheds some light on development of Revisor, such as different
branches and maintenance policies, versioning schemas, etcetera.
- </para>
- <para>
- This part of the documentation relies on whether you have
<application>sudo</application> set up properly. If you have not, you're
on your own.
- </para>
-
- <section
id="Revisor_Documentation-Development-Running_Revisor_from_Source">
- <title>Running Revisor from Source</title>
- <para>
- The latest code in GIT can be built into a RPM you can install but one of the
advantages of having the complete source tree is that you can run it directly from that
source tree so that when you pull in the next updates you do not have to rebuild the RPM.
Note that we do not bump the version number for every little change we make, and as such
the RPM built does not allow you to use <literal>rpm -Uvh</literal> or
<literal>rpm -Uvh --oldpackage</literal>. Of course, Revisor's Makefiles
also allow <application>make install</application>, but that leaves a number
of unmanaged files on your computer you would have to track down manually in order to
remove Revisor completely.
- </para>
- <warning>
- <title>Cannot have Revisor RPMs installed</title>
- <para>
- When running revisor from within the source tree, you cannot have any of
the Revisor packages installed. Having Revisor RPM packages installed regardless will mess
up the GIT repository or source tree.
- </para>
- </warning>
- <para>
- To run Revisor from within the source tree, checkout the master branch, and
run the <filename>./switchhere</filename> script:
- </para>
- <para>
- <screen>$
<userinput>./switchhere</userinput></screen>
- </para>
- <para>
- The <filename>./switchhere</filename> script does the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Symlink <filename>/etc/revisor/</filename> to
<filename><replaceable>$PWD</replaceable>/conf/</filename> so that
<filename>/etc/revisor/revisor.conf</filename>, the primary configuration
file, and <filename>/etc/revisor/conf.d/</filename>, the configuration
directory, are valid (the symlink causes the actual file and directory to be found in
<filename><replaceable>$PWD</replaceable>/conf/</filename>)
- </para>
- </listitem>
- <listitem>
- <para>
- Create the <filename>/usr/share/revisor/</filename>
directory so that a couple of symlinks can be created from within that directory:
- </para>
- </listitem>
- <listitem>
- <para>
- In Revisor 2.1.0 (development version in branch master), this
includes:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/pixmaps/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- In Revisor 2.0.5 (branch F-7, F-8 or EL-5), this includes:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/glade/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/glade/pixmaps/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- In Revisor 2.1.0, also create symlinks from within the
appropriate
<filename>/usr/share/man/man<replaceable>$x</replaceable>/</filename>
directories to the source for these man pages in
<filename><replaceable>$PWD</replaceable>/doc/</filename>.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- From this moment on, you should be able to run:
- </para>
- <para>
- <screen>$
<userinput>./revisor.py</userinput></screen>
- </para>
- <note>
- <title>Root privileges required</title>
- <para>
- Note that revisor needs root privileges to run, and that you'll need
to sudo or su-c to gain those. Use here whatever you find the most convenient; Revisor
though should have a nice error message when run without those privileges.
- </para>
- </note>
-
- <section
id="Revisor_Documentation-Development-Running_Revisor_from_Source-Required_Packages">
- <title>Installing the Required Packages</title>
- <para>
- To be able to run Revisor from within the source tree, you'll need to
install the required packages for each component, of course.
- </para>
- <para>
- To get a current list of those packages, use:
- </para>
- <para>
- <screen>$ <userinput>rpmquery --specfile
--qf="%{REQUIRES}\n" revisor.spec | sort | uniq | xargs -n 1 repoquery
--requires --alldeps --resolve</userinput></screen>
- </para>
- </section>
-
- </section>
-
- <section
id="Revisor_Documentation-Development-Building_Revisor_Packages">
- <title>Building Revisor Packages</title>
- <para>
- para
- </para>
- </section>
-
- <section id="Revisor_Documentation-Development-Tickets">
- <title>Tickets</title>
- <para>
- bugzilla, trac
- </para>
- </section>
-
- <section id="Revisor_Documentation-Development-Adding_A_New_Spin">
- <title>Adding a new spin or remix</title>
- <para>
- <orderedlist>
- <listitem>
- <para>
- Add the appropriate models in the appropriate configuration file
for Revisor.
- </para>
- </listitem>
- <listitem>
- <para>
- Add the appropriate configuration file to the appropriate
automake Makefile
- </para>
- </listitem>
- <listitem>
- <para>
- Run autoreconf && ./configure &&
make rpm to verify the rpm building
- </para>
- </listitem>
- <listitem>
- <para>
- Create the model's YUM configuration files with the following
repositories:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- fedora, enabled, pointing to Everything
- </para>
- </listitem>
- <listitem>
- <para>
- fedora-source, disabled, pointing to Everything
- </para>
- </listitem>
- <listitem>
- <para>
- fedora-updates, enabled, pointing to the updates
repository
- </para>
- </listitem>
- <listitem>
- <para>
- fedora-updates-source, disabled, pointing to the
updates repository
- </para>
- </listitem>
- <listitem>
- <para>
- anaconda-updates, enabled, pointing to the anaconda
updates repository
- </para>
- </listitem>
- <listitem>
- <para>
- anaconda-updates-source, disabled, pointing to the
ananconda updates repository
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- </orderedlist>
- </para>
- </section>
-
- <section id="Revisor_Documentation-Development-Versioning_Schema">
- <title>Versioning Schema</title>
- <para>
- para
- </para>
- </section>
-
- <section id="Revisor_Documentation-Development-Release_Procedure">
- <title>Release Procedure</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Features.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Features.xml
deleted file mode 100644
index 6583398..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Features.xml
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Features">
- <title>Features</title>
- <para>
- Revisor allows you to build and customize your own Remix, Re-Spin, Spin or even
your own distribution, based on Fedora and derivative distributions such as Red Hat
Enterprise Linux and CentOS.
- </para>
- <para>
- Revisor builds installation media, live media, installation trees, cobbler
distro's and profiles, virtualization images and more.
- </para>
-
- <section id="Revisor_Documentation-Features-Installation_Media">
- <title>Installation Media</title>
- <para>
- Installation media is what you use to install a system with. The installation
media composed will allow you to go through the installation process, answering a number
of questions (either manually or through kickstart), and ends up in a system running the
distribution you install.
- </para>
- <para>
- Composing installation media using the Revisor GUI allows you to choose the
media (CD, or DVD), the packages to be included on the media (also called
<emphasis>RPM payload</emphasis>).
- </para>
- <para>
- Using the command-line interface, Revisor also allows you to choose DVD
Duallayer and single- or dual-layer Bluray.
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Installation_Trees">
- <title>Installation Trees</title>
- <para>
- Installation trees are typically used in environments where a distribution
needs to be deployed over multiple systems, or is very volatile. Installation trees are
often made accessible through HTTP or FTP protocols, in one place, and do not have as much
overhead (in creating .iso files, and burning those to optical media to distribute them).
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Live_Media">
- <title>Live Media</title>
- <para>
- Live media often is a perfect showcase for an Operating system, Desktop
Environment or any other thing you want to show. Also, since Live media is read-only, live
media perfectly allows for a kiosk system, a system that may change while it's
running, but restores all original settings when rebooted.
- </para>
- <para>
- Live media is also installable. You start out with a system and boot it from
live media, then choose to install the live media. This however is inferior to real
installation media, but is convenient if you happen to like what you see when running from
live media.
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Reproducibility">
- <title>Reproducibility</title>
- <para>
- Media composed with Revisor is extremely reproducible. Using
<literal>kickstart_exact_nevra</literal>, you can even select specific
versions of packages to be included on the product.
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Consistency">
- <title>Consistency</title>
- <para>
- When composing different types of media, such as CDs and DVDs, Revisor
composes these discs in one run, making the different media completely consistent.
<application>pungi</application> would require you to run twice, once for CDs,
and once for DVDs. This is because <application>pungi</application> uses the
<literal>part /
<replaceable><size></replaceable></literal> kickstart
configuration directive to set the maximum size of the media, and has no option to
override the size on the command-line, nor to compose a certain set of media (it all
depends on the size).
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Flexibility">
- <title>Flexibility</title>
- <para>
- Over the years, Revisor has been adopted to serve a large number of
use-cases, where use-cases stretch from media being composed as efficient as possible, as
robust as possible, specific deployment needs and expectations, and to match the Fedora
Project Release Engineering tools' behaviour. All this allows you to configure a lot,
and thus customize a lot, making Revisor more of a flexible framework.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Features-Graphical_User_Interface">
- <title>Graphical User Interface</title>
- <para>
- Revisor has a Graphical User Interface or GUI, in addition to the Command
Line Interface or CLI, which makes Revisor more accessible to users then the other tools,
which are CLI only. Most people only know of Revisor through the GUI, and may think there
is no CLI to Revisor. Only when it comes down to many of the additional features that
Revisor has, and that do not fit in a simplified GUI, one gets down with it using the
CLI.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Features-Open_Development_Community">
- <title>Open Development Community</title>
- <para>
- Revisor has one of those old-fashioned Free and Open Source Software
development communities, allowing anyone to make a contribution to Revisor. In fact,
Revisor has not bounced a single patch since the project started. Therefor, it improves
faster then any of the other compose tools, and is better adaptible to your needs and
expectations, because unlike the other utilities, Revisor is not limited to use-cases that
apply to Fedora Project Release Engineering.
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Plugin_System">
- <title>Plugin System</title>
- <para>
- Revisor has a plugin system so that you can easily extend Revisor. This
plugin system gives you full control over the Revisor procedures, and hands you off
anything Revisor knows about the compose process. There's are multiple plugins
available from upstream as well. To give you an example, the ability to replace
<filename>isolinux.cfg</filename> after the compose is done, is a plugin. See
<xref linkend="Revisor_Documentation-Plugins" /> for more information.
- </para>
-
- <para>
- Current plugins included with Revisor include:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <xref
linkend="Revisor_Documentation-Plugins-Upstream-Cobbler_Plugin" />
- </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="Revisor_Documentation-Plugins-Upstream-Isolinux_Plugin" />
- </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="Revisor_Documentation-Plugins-Upstream-Rebrand_Plugin" />
- </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="Revisor_Documentation-Plugins-Upstream-Reuse_Installer_Images_Plugin"
/>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Extraneous_Debugging">
- <title>Extraneous Debugging</title>
- <para>
- Revisor has extraneous debugging, which enables you, as well as the
supporters and Revisor's developers, to trace down what happens exactly, and where
anything might go wrong.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Features-Using_YUM_Configuration_Files">
- <title>Using YUM Configuration Files</title>
- <para>
- Revisor uses YUM configuration files, where everyone else is not. With using
YUM configuration files however, the control you have is nearly limitless. With all the
features in YUM already, using it's configuration file format and letting YUM itself
work with those allows Revisor to do a lot of cool things without doing anything itself:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
- <title>Excluding packages from repositories</title>
- <para>
- Excluding packages from repositories means a great deal. Not
having them exist in the <xref
linkend="Revisor_Documentation-Appendix-Terminology-Package_Sack" /> ensures
the package will not end up in the product. This may be what you want for maybe just a
few, or maybe an awful lot of packages.
- </para>
- </formalpara>
- <para>
- Using the alternative configuration file format, kickstart, in
use by every other compose tool, and the <literal>repo</literal> configuration
directive that is available with kickstart, you can exclude packages using the
<literal>--exclude=</literal> parameter to the
<literal>repo</literal> configuration directive. However, that parameter does
not allow wildcard matches.
- </para>
- </listitem>
- <listitem>
- <formalpara>
- <title>Including only a certain (set of)
package(s)</title>
- <para>
- Including only a certain package, or certain set of packages
is valuable when a lot of packages exist in the repository configured, but you only need
one or two.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>Concurrent use of baseurl(s) and the
mirrorlist</title>
- <para>
- Like during normal YUM operations, the baseurl(s) and the
mirrorlist configured for a repository are used concurrently. This is not possible with
the kickstart configuration directive <literal>repo</literal>, which takes
either <literal>--baseurl</literal> or
<literal>--mirrorlist</literal>, but not both.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>Repository priorities</title>
- <para>
- Settings available with YUM are available within Revisor as
well, like repository priorities. Using repository priorities, you can have YUM decide to
pull a package from the repository with a higher priority (a lower priority number) rather
then a repository with a lower priority.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>YUM Plugins</title>
- <para>
- YUM plugins, such as
<application>yum-fastestmirror</application>,
<application>yum-fedorakmod</application>, are available, giving you even more
control over the behaviour of YUM.
- </para>
- </formalpara>
- </listitem>
- </orderedlist>
- </para>
- </section>
-</chapter>
-
diff --git
a/doc/Reference_Manual/en-US/Revisor_Documentation-Frequently_Asked_Questions.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Frequently_Asked_Questions.xml
deleted file mode 100644
index 489d42a..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Frequently_Asked_Questions.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Frequently_Asked_Questions">
- <title>Frequently Asked Questions</title>
- <para>
- para
- </para>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-How_Does_Revisor_Handle_Comps">
- <title>How Does Revisor Handle Comps?</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-What_Are_Installer_Images">
- <title>What Are Installer Images?</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Pungi">
- <title>What is the relationship between Revisor and Pungi?</title>
- <para>
- Where pungi builds a bunch of RPMs into ISO images and installation trees
through one single procedure, perfect for Release Engineering on something like the Fedora
Project, Revisor does it different entirely.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Livecd-tools">
- <title>What is the relationship between Revisor and
livecd-tools?</title>
- <para>
- Revisor depends on livecd-tools for the composing of live media. Creating the
filesystem to install the packages to, turning that image file into a SquashFS file, and
applying the settings inside the chroot.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-Why_Rebuild_Installer_Images">
- <title>Why Rebuild Installer Images?</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-How_do_I_create_an_updates.img">
- <title>How do I create an updates.img?</title>
- <para>
- para
- </para>
- </formalpara>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Installation.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Installation.xml
deleted file mode 100644
index 9997088..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Installation.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Installation">
- <title>Installation</title>
- <para>
- This chapter contains the installation instructions for Revisor.
- </para>
-
- <section id="Revisor_Documentation-Installation-Packages">
- <title>Packages</title>
- <para>
- You can install Revisor using RPM packages from the repositories already
configured on your system.
- </para>
-
- <formalpara
id="Revisor_Documentation-Installation-Packages-revisor">
- <title><application>revisor</application></title>
- <para>
- Shorthand package for the Revisor GUI.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Installation-Packages-revisor-cli">
-
<title><application>revisor-cli</application></title>
- <para>
- The CLI version of Revisor. This package is always installed, as it
contains the Python code for Revisor's core. Installing just this package will give
you the command-line version of Revisor, and prevents the graphical dependencies from the
<xref linkend="Revisor_Documentation-Installation-Packages-revisor-gui" />
package to be installed as well.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Installation-Packages-revisor-gui">
-
<title><application>revisor-gui</application></title>
- <para>
- The GUI version of Revisor. This is the actual package containing the
Graphical User Interface, as opposed to <xref
linkend="Revisor_Documentation-Installation-Packages-revisor" />. Depends on
<xref linkend="Revisor_Documentation-Installation-Packages-revisor-cli"
/>, and thus also installs the command-line version of Revisor.
- </para>
- </formalpara>
-
- <section
id="Revisor_Documentation-Installation-Packages-YUM-RHEL">
- <title>Red Hat Enterprise Linux 5 or higher</title>
- <para>
- On Red Hat Enterprise Linux 5 or higher, and derivatives, install the
Extra Packages for Enterprise Linux (EPEL) repository.
- </para>
- <para>
- Then, give the following command:
- </para>
- <para>
- <screen># <userinput>yum install
revisor</userinput></screen>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Installation-Packages-YUM-Fedora">
- <title>Fedora 7 or higher</title>
- <para>
- On Fedora 7 or higher, and derivatives, no additional repository
configuration is required.
- </para>
- <para>
- Give the following command:
- </para>
- <para>
- <screen># <userinput>yum install
revisor</userinput></screen>
- </para>
- <note>
- <title>About EOL Releases</title>
- <para>
- Please bear in mind that Fedora releases that are past the point of
End-Of-Life, approximatly 13 months after the initial release, are not supported anymore
for use with Revisor. Also, the version of Revisor running on these EOL versions of Fedora
are not supported anymore.
- </para>
- </note>
- </section>
-
- </section>
-
- <section
id="Revisor_Documentation-Installation-The_Latest_And_Greatest">
- <title>The Latest and Greatest</title>
- <para>
- The latest and greatest is available from GIT, at <ulink
url="git://git.fedorahosted.org/revisor" />. To clone this repository, use:
- </para>
- <para>
- <screen>$ <userinput>git clone
git://git.fedorahosted.org/revisor/</userinput></screen>
- </para>
- <para>
- Using the GIT clone, you have the several options to start using the latest
and greatest:
- </para>
- <formalpara>
- <title>Running directly from the source</title>
- <para>
- You can run directly from within the source tree. See <xref
linkend="Revisor_Documentation-Development-Running_Revisor_from_Source" />
for more information on how to do so.
- </para>
- </formalpara>
- <warning>
- <title>Installed packages and running from source</title>
- <para>
- Do not run Revisor from source while RPM packages have been installed.
Files managed by a package will get created, moved and removed when using Revisor's
source tree, and updates to the installed RPM packages will destroy these changes.
- </para>
- </warning>
- <formalpara>
- <title>Building your own packages</title>
- <para>
- You can create your own packages, so that you have all the benefits of
RPM. See <xref
linkend="Revisor_Documentation-Development-Building_Revisor_Packages" /> for
more information on how to do so.
- </para>
- </formalpara>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Introduction.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Introduction.xml
deleted file mode 100644
index 465fbf2..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Introduction.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Introduction">
- <title>Introduction</title>
- <para>
- Revisor is a community product by Fedora Unity. Amongst other features, it allows
the creation of installation media and live media in the easiest possible manner, through
a click-and-go GUI. This chapter gives some insight on how and why Revisor was born, and
how the product evolved since.
- </para>
-
- <section id="Revisor_Documentation-Introduction-History_Of_Revisor">
- <title>History of Revisor</title>
- <para>
- Revisor development started in December 2006, during the Fedora 7 development
cycle, in which -you might recall- the Fedora Core repository, maintained by Red Hat, and
Fedora Extras repository, mostly maintained by the community, were merged into one large
repository being maintained by both community members as well as Red Hat employees -which
are mostly community members hired by Red Hat -so community altogether. Before then Red
Hat employees maintained Fedora Core -as the set of packages upstream for Red Hat's
Enterprise product- and the community maintained a repository with additional software;
Fedora Extras. Red Hat composed the Fedora distribution every once in a while, but the
merge introduced the possibility for packages that were in Fedora Extras to be included in
the main distribution, and for the community to also (co-)maintain the (former) Fedora
Core packages that originally made up the distribution.
- </para>
- <para>
- In addition to this huge merge of packages, Red Hat employees were also able
to release the entire build process to the community, meaning that from the moment the
source is committed up and until the release is announced, the entire process is open. Not
that is was all behind closed doors or proprietary or anything, the community just
couldn't really play with it as much. We now have koji (build system), mash
(repository compose from build system products), bodhi (updates release system),
livecd-tools (compose tool for live media) and pungi (compose tool for installation
media).
- </para>
- <para>
- Composing media was an obscure process up and until the moment these tools
exposed the best way to compose (a set of) installation media. Fedora Unity had been
building and releasing so-called Re-Spins1 regularly, but they were built using a
not-so-very intelligent bash script. Like hundreds if not thousands of other parties that
needed to build their own media one way or the other, the entire process was based on the
best educated guess of what should happen. Luckily, in the FOSS world an educated guess is
often a very good guess, despite the fact that one keeps learning even years after the
original engagement.
- </para>
- <para>
- When in December 2006 the compose tools hit a stage in which they were
released to the public, Fedora Unity was eager to get these tools and study them and use
them for composing their Re-Spins. Up and until then, Re-Spins were composed with the
aforementioned bash script that didn't do much but trigger the appropriate commands in
a sequence; There wasn't any dependency resolving between the packages included nor
did we know exactly how a release was supposed to be composed -it was our educated guess
of how it could happen. Although it often led to success, we've had many, many failed
Re-Spins as well. With a handful of volunteers, you can imagine the amount of frustration
that might give. Fedora Unity was eager to improve their Re-Spin process.
- </para>
- <para>
- So, early February 2007, a number of Fedora Unity members attended “FUDCon
2007” in Boston, and presented a working GUI front-end to livecd-tools and pungi enabling
regular users to also re-compose or re-spin the installation media and live media they had
been getting from the Fedora Project. Revisor at this point just made it “as easy as
possible”. Besides the possibilities of pungi and livecd-tools themselves, the wizard
Revisor had apparently was very, very useful to mere mortals. From that point on, things
took off.
- </para>
- <para>
- Fedora Unity decided Revisor could accomplish more then just being a
front-end to existing compose tools and enable someone to tweak a lot of settings as well.
In March 2007, Revisor was rebuild from the ground up in March 2007 to allow a more
flexible process, more dependent on the configuration directives it was given and less so
on the processes of the existing tools. When in San Diego at the Red Hat Summit (early May
2007), Robert 'Bob' Jensen and Jonathan Steffan gave a presentation on
“Customizing Fedora”, the responses were amazing. Since then Revisor has evolved from a
front-end to existing tools to the complete compose tool it is today, with lots of
configuration options for specific use-cases.
- </para>
- <para>
- For users, Revisor is particularly useful because it has a GUI front-end
wizard, which, with the defaults settings, will just succeed in getting a user the media
he/she wants. If a user decides he needs little adjustment of the media, the GUI allows
for selecting the most common options. If a user decides he needs some less common
adjustments, the configuration options gives him very granular control -and as long as the
documentation on all the options is sufficient, users will be able to make those less
common adjustments.
- </para>
- <para>
- For administrators on the other hand, Revisor is the tool that gives so much
granular control over what happens, that it can serve almost every specific use-case. In
this aspect, Revisor could potentially replace the compose tools administrators have been
developing themselves with a consistent and flexible program flow.
- </para>
- <para>
- This document should enable you to study the process of composing
installation and live media, and comprehend the logic Revisor adds to that process.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Introduction-The_Installation_Media_Challenge">
- <title>The Installation Media Challenge</title>
- <para>
- When Fedora Unity first started doing these so-called Re-Spins, the challenge
ahead could maybe be explained like this:
- </para>
- <para>
- <emphasis>When a user downloads a Fedora release and installs the
distribution, the user will need to download and install a number of updates. The “older”
the release becomes, the more updates will be available, and the greater the total
download size of these updates the user will need to download on top of the download size
of the original release media.</emphasis>
- </para>
- <para>
- “older” is in quotes on purpose, because really for an operating system -or
“distribution” if you will- being released every 6 months, “old” is quite a relative
concept. The number of updates available however, at any given time during the release
cycle, may range from 0 right after the release (which has never happened before), to the
total amount of packages installed on the user's system (often over 2000). You can
imagine the size of these updates ranging from 0 MB to an astonishing 2GB(!), only 6
months after the initial release.
- </para>
- <para>
- Some of us do not have the bandwidth capacity or enough data transfer quota
to download this many extra, rather useless bits. In addition, some of us do not have an
Internet connection at all, and thus benefit getting the updates from Re-Spins directly.
- </para>
- <para>
- The use of updates in Re-Spins has several more beneficial side-effects,
which we'll explain in more detail later on in this document. Long story short; If for
some reason the software used to compose the media (the release) with does not work for
your hardware or your specific needs, updated software incorporated in the composed
installer images might resolve that problem.
- </para>
- <para>
- This is the original challenge the Fedora Unity team resolved a long time
ago, and is at the base of what Revisor does nowadays.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Introduction-The_Live_Media_Challenge">
- <title>The Live Media Challenge</title>
- <para>
- Back in the day Fedora Core 5 was the most recent release, Fedora Unity
created so-called live media using Kadischi. In that time, live media could only have a
read-only root file system and was not as feature-rich as live media is today. However,
just before Revisor came to life, two applications were developed; pungi for creating
installation media, and livecd-tools for creating live media. These two applications did
their work well; The media composed for a release, including many different custom live
media spins were, and still are, created with these tools. Immediately, the Revisor
developers set themselves a target to provide a single interface to both of those tools.
- </para>
- </section>
-
-</chapter>
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Plugins.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Plugins.xml
deleted file mode 100644
index adcca82..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Plugins.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Plugins">
- <title>Plugins</title>
- <para>
- para
- </para>
-
- <section id="Revisor_Documentation-Plugins-Upstream">
- <title>Upstream Plugins</title>
- <para>
- Plugins available from upstream, maintained by upstream
- </para>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Cobbler_Plugin">
- <title>Cobbler Plugin</title>
- <para>
- The Cobbler plugin is able to put the product composed into a Cobbler
environment, by handing off the built product to the existing Cobbler infrastructure as a
<emphasis>distro</emphasis>, and creating a
<emphasis>profile</emphasis>.
- </para>
- <para>
- Using this module, one can automatically import the Revisor product into
a Cobbler environment, and immediately use the new Cobbler
<emphasis>profile</emphasis> to start deploying or automated testing, maybe.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Composer_Plugin">
- <title>Composer Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Delta_Plugin">
- <title>Delta Plugin</title>
- <para>
- A small change to a ISO image does not require you to download the
complete ISO image if you have a copy of the old ISO image.
- </para>
- <note>
- <title>Only applicable to (...)</title>
- <para>
- The generation of Delta ISO images is only applicable to situations
in which the ISO image does not contain SquashFS images. SquashFS images are smaller, but
all SquashFS images are unique. Since the Delta principle is based on similarities, and no
two SquashFS images are alike, creating a Delta on two ISO images containing SquashFS
images will lead to a Delta pratically the same size as the SquashFS image. For Live Media
that compresses the ext3 filesystem image into a SquashFS image, since that SquashFS image
is probably over 97% of the size of the ISO image, creating Delta images for compressed
Live Media does not make sense. For installation media however, most RPMs would be similar
as well as (potentially) the installer images.
- </para>
- </note>
- </section>
-
- <section id="Revisor_Documentation-Plugins-Upstream-GUI_Plugin">
- <title>GUI (Graphical User Interface) Plugin</title>
- <para>
- Yes, the Graphical User Interface for Revisor is actually a plugin.
- </para>
- </section>
-
- <section id="Revisor_Documentation-Plugins-Upstream-HUB_Plugin">
- <title>HUB Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Isolinux_Plugin">
- <title>Isolinux Plugin</title>
- <titleabbrev id="Isolinux_Plugin">Isolinux
Plugin</titleabbrev>
- <para>
- The isolinux plugin adds the
<literal>--isolinux-cfg</literal> command-line option to Revisor. Specify a
file here, and the original <filename>isolinux.cfg</filename> that is built as
part of the compose process is replaced by the
<filename>isolinux.cfg</filename> specified.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Jigdo_Plugin">
- <title>Jigdo Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Mock_Plugin">
- <title>Mock Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Rebrand_Plugin">
- <title>Rebrand Plugin</title>
- <para>
- The rebrand plugin hooks in to Revisor at several different stages. The
goal of this plugin is to ensure no trademarked packages end up on the media. Trademarked
packages may include <application>fedora-logos</application>,
<application>redhat-logos</application>, and so forth.
- </para>
- <para>
- The plugin adds a <literal>--rebrand</literal> option, to
which you can specify the name of your new product. When rebranding Fedora to Omega for
example, specifying <literal>--rebrand Omega</literal> would be sufficient to
make sure the product does not have any Fedora trademarks.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Reuse_Installer_Images_Plugin">
- <title>Reuse Installer Images Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Server_Plugin">
- <title>Server Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Virtualization_Plugin">
- <title>Virtualization Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section id="Revisor_Documentation-Plugins-Upstream-WUI_Plugin">
- <title>WUI (Web-based User Interface) Plugin</title>
- <para>
- para
- </para>
- </section>
-
- </section>
-
- <section id="Revisor_Documentation-Plugins-Writing_Your_Own">
- <title>Writing Your Own Plugins</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Testing.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Testing.xml
deleted file mode 100644
index 2450faf..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Testing.xml
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Testing">
- <title>Testing</title>
- <para>
- The following test cases describe different types of testing a new Revisor
release.
- </para>
-
- <section id="Revisor_Documentation-Testing-Simple_Test_Cases">
- <title>Simple Test Cases</title>
- <para>
- This section has a few simple test cases ensuring configuration shipped with
Revisor works as anticipated.
- </para>
-
- <section
id="Revisor_Documentation-Testing-Simple_Test_cases-Packages">
- <title>Packages</title>
- <para>
- Install the <application>revisor-cli</application>:
- </para>
- <para>
- <screen># <userinput>yum --enablerepo=updates-testing install
revisor</userinput></screen>
- </para>
- <para>
- Installed are all dependencies for the Revisor CLI interface. Make sure
<application>spin-kickstarts</application> is installed, a package for sample
kickstarts.
- </para>
- <para>
- Starting Revisor as follows should not show any error messages related to
Revisor attempting to start up it's GUI interface:
- </para>
- <para>
- <screen>#
<userinput>revisor</userinput></screen>
- </para>
-
- <formalpara>
- <title>Configuration Files</title>
- <para>
- The following configuration files should exist:
- </para>
- </formalpara>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>/etc/revisor/revisor.conf</filename>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Each section should have a configuration file listed as
<literal>main</literal>.
- </para>
- <para>
- And, of course, every configuration file listed in each section. In this
case, the following snippet is easy enough:
- </para>
- <para>
- <screen>$ <userinput>i=0; \
-configfiles="`grep ^main /etc/revisor/revisor.conf | \
- sed -r -e 's/^main.*=\s*(.*)/\1/g'`"
-
-for configfile in $configfiles; do \
- [ ! -f $file ] && i=1; \
-done; \
-echo $i</userinput></screen>
- </para>
- <para>
- Another way to test the configuration file is to execute:
- </para>
- <para>
- <screen>$ <userinput>revisor --list-models
>/dev/null</userinput></screen>
- </para>
- <para>
- If everything is well, since <literal>STDOUT</literal> is
redirected to <filename>/dev/null</filename>, you should see no messages at
all.
- </para>
-
- </section>
-
- <section
id="Revisor_Documentation-Testing-Simple_Test_Cases-Configuration_Files">
- <title>Configuration Files</title>
- <para>
- The main Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. The file lists a series of
models, each having their own YUM configuration file in
<filename>/etc/revisor/conf.d/</filename>.
- </para>
- <formalpara>
- <title>Testing</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- For each model in
<filename>/etc/revisor/revisor.conf</filename>, the
<code>main</code> setting for that model should point to a valid file.
- </para>
- </listitem>
- <listitem>
- <para>
- Each YUM configuration file should work. To verify, run
the following command for each configuration file:
- </para>
- <para>
- <screen>$ yum -c
<replaceable>$file</replaceable> list kernel</screen>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </formalpara>
- <formalpara>
- <title>Known Errors</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Revisor has baseurls in YUM repositories set to <ulink
url="http://localrepo" />. This URL will not be retrievable for many
people, but allows the developers to quickly change mirrors.
- </para>
- </listitem>
- <listitem>
- <para>
- Repositories that are unavailable at the moment of
testing will throw errors Revisor can't do anything about.
- </para>
- </listitem>
- <listitem>
- <para>
- If the directories
<filename>revisor-yumcache/</filename> and
<filename>revisor/</filename> in <filename>/var/tmp/</filename>,
the default working directory, are not writeable for the user then YUM will throw
permission denied errors.
- </para>
- <para>
- Remove <filename>/var/tmp/revisor/</filename>
and <filename>/var/tmp/revisor-yumcache/</filename> or run the command with
root permissions.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </formalpara>
- </section>
-
- <section
id="Revisor_Documentation-Testing-Simple_Test_Cases-Compose_Results">
- <title>Requirements for Compose Results</title>
- <para>
- Although heavily dependent on Anaconda for this part, these are still
requirements
- </para>
-
- <formalpara>
- <title>ld-linux.so.2</title>
- <para>
- In the <filename>initrd.img</filename> of the composed
product, if 32-bit, <filename>/lib/ld-linux.so.2</filename> (or any other
version) should link to <filename>/lib/ld-2.9.so</filename> (or any other
version). If <filename>/lib/ld-linux.so.2</filename> links to itself, the
media will fail to install.
- </para>
- </formalpara>
- <formalpara>
- <title>How to test</title>
- <para>
- In a terminal, type the following command:
- </para>
- </formalpara>
- <para>
- <screen>$ <userinput>lsinitrd /path/to/initrd | grep
ld-linux</userinput></screen>
- </para>
- <para>
- See also: <ulink
url="https://www.redhat.com/archives/anaconda-devel-list/2009-Februa...
/>
- </para>
-
- </section>
- </section>
-
- <section id="Revisor_Documentation-Testing-Complex_Test_Cases">
- <title>Complex Test Cases</title>
- <para>
- para
- </para>
- </section>
-
- <section id="Revisor_Documentation-Testing-Specific_Test_Cases">
- <title>Specific Test Cases</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Tips_and_Tricks.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Tips_and_Tricks.xml
deleted file mode 100644
index 488a957..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Tips_and_Tricks.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Tips_and_Tricks">
- <title>Tips and Tricks</title>
- <para>
- para
- </para>
-
- <section
id="Revisor_Documentation-Tips_and_Tricks-The_spin-kickstarts_Package">
- <title>The spin-kickstarts Package</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tips_and_Tricks-Even_More_Debugging">
- <title>Even More Debugging</title>
- <para>
- something about using -x to buildinstall scripts
- </para>
- </section>
-
- <section id="Revisor_Documentation-Tips_and_Tricks-ksvalidator">
- <title>Kickstart Validator</title>
- <para>
- something about using -x to buildinstall scripts
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tips_and_Tricks-Using_Mirrormanager_For_Mirror_Redirection">
- <title>Using Mirrormanager for Mirror Redirection</title>
- <para>
- Something about using Mirrormanager to redirect you to the local mirror (so
you do not have to edit YUM configuration files).
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tips_and_Tricks-The_localrepo_DNS_Alias">
- <title>Using The localrepo DNS Alias</title>
- <para>
- Something about using the localrepo DNS alias to point to your local mirror
(either through real DNS or through /etc/hosts), so you do not have to edit the YUM
configuration files.
- </para>
- </section>
-
-</chapter>
-
diff --git
a/doc/Reference_Manual/en-US/Revisor_Documentation-Tweaking_The_Build_Process.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Tweaking_The_Build_Process.xml
deleted file mode 100644
index d095289..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Tweaking_The_Build_Process.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Tweaking_The_Build_Process">
- <title>Tweaking the build process</title>
- <para>
- para
- </para>
-
- <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Reusing_Existing_Installer_Images">
- <title>Reusing Existing Installer Images</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Building_The_Installer_Images_In_Mock">
- <title>Building The Installer Images in Mock</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Omitting-isomd5sum">
- <title>Omitting isomd5sums</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Omitting-sha1sums">
- <title>Omitting SHA1SUMS</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Using_Kickstart.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Using_Kickstart.xml
deleted file mode 100644
index 7575bea..0000000
--- a/doc/Reference_Manual/en-US/Revisor_Documentation-Using_Kickstart.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Using_Kickstart">
- <title>Using Kickstart</title>
- <para>
- Kickstart is a configuration file format for automating installation procedures.
Or at least, it was, originally. Nowadays, kickstart files are used as input to the
compose tools, including Revisor.
- </para>
- <para>
- Revisor again is unique in that it does not require a kickstart file for input.
The other tools only take kickstart configuration files. Revisor though allows most of
what is in a kickstart file to be configured interactively in Graphical User Interface
mode.
- </para>
-
- <section
id="Revisor_Documentation-Using_Kickstart-How_Kickstart_Is_Used">
- <title>How Kickstart Is Used</title>
- <para>
- There's two cases in which a kickstart file is used differently. One is
during the compose of installation media, and the other of course is during the compose of
live media, or virtualization media.
- </para>
-
- <section
id="Revisor_Documentation-Using_Kickstart-How_Kickstart_Is_Used-Installation_Media">
- <title>Installation Media</title>
- <para>
- In the case of installation media, the following settings are used:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <formalpara>
-
<title><literal>repo</literal></title>
- <para>
- The <literal>repo</literal> command in
kickstart is used when Revisor is configured to use the repositories configured in the
kickstart file only. Use <literal>kickstart_repos = 1</literal> to enable this
feature, or set the appropriate checkbox in the Revisor GUI.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
-
<title><literal>%packages</literal></title>
- <para>
- The <literal>%packages</literal> section in
kickstart is used to determine the RPM payload on the installation media. It can include
groups and packages, and exclude packages. It accepts wildcards, both in includes and
excludes of packages (but not groups).
- </para>
- </formalpara>
- </listitem>
- </itemizedlist>
- </para>
- <note>
- <title>@core and @base</title>
- <para>
- By default, groups @core and @base are included in the package
manifest. You can specify @base to not be included, by using <literal>%packages
--nobase</literal>, but @core cannot be excluded using a kickstart package
manifest.
- </para>
- </note>
- <para>
- Using <literal>kickstart_exact</literal>, you can exclude
@core and @base so that you need to explicitly select them in the kickstart package
manifest.
- </para>
- <para>
- Using <literal>kickstart_exact_nevra</literal> ...
- </para>
- </section>
- </section>
-
- <section
id="Revisor_Documentation-Using_Kickstart-The_Kickstart_Package_Manifest">
- <title>The Kickstart Package Manifest</title>
- <para>
- para
- </para>
-
- <formalpara>
- <title>Group @core</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Group @base</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Including groups of packages</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Including a single package</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Excluding a single package</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Using wildcard matches</title>
- <para>
- para
- </para>
- </formalpara>
-
- <section
id="Revisor_Documentation-Using_Kickstart-Using_Kickstart_With_Package_NEVRA">
- <title>Using Kickstart with Package NEVRA</title>
- <para>
- para
- </para>
- </section>
-
- </section>
-
-</chapter>
-
commit 255cd905e75847bdbe4cd8dcc8fe39b98eb7389d
Author: Jeroen van Meeuwen (Fedora Unity) <kanarip(a)fedoraunity.org>
Date: Thu Jun 18 15:59:24 2009 +0200
Rename to reference manual
diff --git a/doc/Reference_Manual/en-US/Appendix.xml
b/doc/Reference_Manual/en-US/Appendix.xml
new file mode 100644
index 0000000..01258fb
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Appendix.xml
@@ -0,0 +1,475 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<part id="Revisor_Documentation-Appendices">
+ <title>Appendices</title>
+
+ <appendix id="Revisor_Documentation-Appendix-Terminology"
label="A">
+ <title>Terminology</title>
+ <formalpara
id="Revisor_Documentation-Appendix-Terminology-model">
+ <title>Model</title>
+ <indexterm>
+ <primary>model</primary>
+ </indexterm>
+ <para>
+ A model in Revisor describes a product.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Documentation-Appendix-Terminology-package_manifest">
+ <title>Package Manifest</title>
+ <indexterm>
+ <primary>Package Manifest</primary>
+ </indexterm>
+ <para>
+ A package manifest is the list of groups and packages to include or
exclude from a transaction, in a kickstart configuration file.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Documentation-Appendix-Terminology-Remix">
+ <title>Remix</title>
+ <indexterm>
+ <primary>Remix</primary>
+ </indexterm>
+ <para>
+ A Fedora Remix is a product based on Fedora, with Fedora packages and
optionally, other packages as well, such as those from third-party repositories.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Documentation-Appendix-Terminology-Re-Spin">
+ <title>Re-Spin</title>
+ <indexterm>
+ <primary>Re-Spin</primary>
+ <secondary>Fedora Unity Re-Spin</secondary>
+ </indexterm>
+ <para>
+ A Fedora Re-Spin is a product that is composed for the single purpose of
including updated software packages into the product. It uses the same compose procedure
as the media that the Fedora Project composes and releases, but includes updates.
+ </para>
+ </formalpara>
+ <para>
+ Fedora Unity releases Fedora Re-Spins every so often, twice or trice per
release.
+ </para>
+
+ <formalpara
id="Revisor_Documentation-Appendix-Terminology-Spin">
+ <title>Spin</title>
+ <indexterm>
+ <primary>Spin</primary>
+ </indexterm>
+ <para>
+ A Fedora Spin is a custom set of software packages, often for a specific
audience. Spins include a KDE Spin, which contains KDE software packages rather then the
Desktop spin, which is based around GNOME. Similarly, there are XFCE, LXDE, Sugar,
Education, Games and Developer Spins.
+ </para>
+ </formalpara>
+ <para>
+ Fedora Spins have gone through the Spins Process (<ulink
url="http://fedoraproject.org/wiki/Spins_Process" />), and have been approved
trademark usage by the Fedora Project Board.
+ </para>
+
+ <formalpara
id="Revisor_Documentation-Appendix-Terminology-Package_Sack">
+ <title>Package Sack</title>
+ <indexterm>
+ <primary>Package Sack</primary>
+ </indexterm>
+ <para>
+ When YUM creates a list of packages available from the repositories
configured, including package metadata such as dependencies and provided capabilities for
each package, YUM creates a PackageSack. It's basically a large bag with all Package
Objects, filtered by compatible architectures for the configured architecture.
+ </para>
+ </formalpara>
+ </appendix>
+
+ <appendix id="Revisor_Documentation-Appendix-Configuration_Reference"
label="B">
+ <title>Configuration Reference</title>
+ <para>
+ This is the configuration reference for Revisor. Options are listed in
alphabetical order.
+ </para>
+
+ <section
id="Revisor_Documentation-Appendix-Configuration_Reference-Media_Options">
+ <title>Configuration Options</title>
+ <para>
+ <table>
+ <title>Configuration Options</title>
+ <tgroup cols="4" title="Configuration
Options">
+ <colspec colname="column1" colwidth="1*"
/>
+ <colspec colname="column25" colwidth="4*"
/>
+ <colspec colname="column67" colwidth="2*"
/>
+ <colspec colname="column89" colwidth="2*"
/>
+ <thead>
+ <row>
+ <entry namest="column1"
nameend="column89" align="center">Configuration
Options</entry>
+ </row>
+ <row>
+ <entry namest="column1"
nameend="column25">Configuration Directive</entry>
+ <entry namest="column67"
nameend="column89">CLI Option</entry>
+ </row>
+ <row>
+ <entry
namest="column1"> </entry>
+ <entry namest="column25">Possible
Values</entry>
+ <entry>Default</entry>
+ <entry>Context</entry>
+ </row>
+ <row>
+ <entry
namest="column1"> </entry>
+ <entry namest="column25"
nameend="column67">Description</entry>
+ <entry
namest="column89"> </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>answer_yes</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>-y</literal>,
<literal>--yes</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Answer <emphasis>yes</emphasis> to all
questions.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>clean_up</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--clean-up</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0, 1,
2</entry>
+ <entry>1</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Should Revisor not clean up at all (0), clean up it's
temporary build data (1), or everything -this includes the yum cache (2).</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>copy_dir</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--copy-dir</literal></entry>
+ </row>
+ <row>
+ <entry
namest="column25"><code>[dir]</code></entry>
+ <entry>False</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">A directory tree to copy onto the media created. In the
case of installation media, the contents of the directory specified are copied onto
<code>cdrom:/files/</code>. In the case of live media, the contents of the
directory specified are copied onto the root filesystem of the live system.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>copy_local</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--copy-local</literal></entry>
+ </row>
+ <row>
+ <entry
namest="column25"> </entry>
+ <entry>False</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Tell Revisor to copy files, even when they are local. This
applies to relative corner-cases where the repositories or the
<code>destination_directory</code> is mounted over NFS, and some actions
cannot be performed.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>debuglevel</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>-d</literal>,
<literal>--debug</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0 -
9</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">The level of debugging. 0 is the lowest debug level,
whereas 9 is the highest. Revisor turns up the volume quickly. The logfile on debug level
9 may very easily become 20-30MB.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>destination_directory</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--destination-directory</literal></entry>
+ </row>
+ <row>
+ <entry
namest="column25"><code>/srv/revisor/</code></entry>
+
<entry><code>[path]</code></entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">The destination directory for the product. Revisor creates
a sub-directory with the name of the model used, and places the product in that
directory.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>getsource</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--source</literal></entry>
+ </row>
+ <row>
+ <entry
namest="column25"> </entry>
+ <entry>False</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to obtain the source along with the binary RPMs
used. This is False by default, and therefor the source is not included by default. Note
that if you are distributing your product to third parties, you need to be able to provide
the sources along with the binary product.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>include_bootiso</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal> </literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to include the relatively large boot.iso on the
optical installation media created. Setting this to 0 will still include boot.iso in the
installation tree created (if configured with
<code>media_installation_tree</code><footnote><para>Note that the
installation tree is always created. See <xref
linkend="Revisor_Documentation-Compose_Process_Details" /> for more
details.</para></footnote>)</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>kickstart_default</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--kickstart-default</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to set the isolinux.cfg entry that makes the
installer use the kickstart included on the media, as a default.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>kickstart_exact</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--kickstart-exact</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Tells Revisor to ignore @core and @base groups (like with
<code>%packages --nobase</code>) and only add what is in the package
manifest.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>kickstart_exact_nevra</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--kickstart-exact-nevra</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Tells Revisor to only add what is in the package manifest.
In addition, if the transaction changes (because of dependency resolving, for example),
Revisor will stop composing.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>kickstart_file</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--kickstart</literal></entry>
+ </row>
+ <row>
+ <entry
namest="column25"><code>[file]</code></entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">What kickstart file to use. When in CLI mode, this is a
mandatory setting.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>kickstart_include</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--kickstart-include</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to include the kickstart on the media so that the
installer may find it as <filename>cdrom:/ks.cfg</filename>.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>kickstart_save</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--kickstart-save</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Where to save the resulting kickstart. In GUI mode, when
changes to the package set can be applied, saves those changes out into a new kickstart
file.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>media_installation_bluray_duallayer</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--install-bluray-dl</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to create Bluray Duallayer installation media
(47GiB).</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>media_installation_bluray</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--install-bluray</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to create Bluray installation media
(23GiB).</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>media_installation_bluray_duallayer</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--install-bluray-dl</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to create Bluray Duallayer installation media
(47GiB).</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>media_installation_cd</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--install-cd</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to create CD installation media
(685MiB).</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>media_installation_dvd</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--install-dvd</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to create DVD installation media
(4.3GiB).</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>media_installation_dvd_duallayer</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--install-dvd-dl</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to create DVD Duallayer installation media
(8.0GiB).</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>media_installation_tree</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--install-tree</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to create a an installation
tree<footnote><para>Note that the installation tree is always created. See
<xref linkend="Revisor_Documentation-Compose_Process_Details" /> for more
details.</para></footnote> (for publication over HTTP or FTP, or through
Cobbler). No size limit.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>media_installation_unified</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--install-unified</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to create a unified ISO, installation media (no
size limit).</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>media_live_optical</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--live-optical</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether to create Optical Live media (size
unknown).</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>model</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--model</literal></entry>
+ </row>
+ <row>
+ <entry
namest="column25"> </entry>
+
<entry><code>[model]</code></entry>
+ <entry>global</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">The model to use.</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>report_sizes</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--report_sizes</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0,
1</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Report the sizes of RPM packages used. Lists the biggest
packages in the transaction</entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>mode_respin</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>--respin</literal></entry>
+ </row>
+ <row>
+ <entry
namest="column25"> </entry>
+ <entry>False</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">Whether Revisor should operate in
<emphasis>respin</emphasis> mode. See also <xref
linkend="Revisor_Documentation-Compose_Process_Details-Respin_Mode"
/></entry>
+ </row>
+
+ <row>
+ <entry namest="column1"
nameend="column25"><literal>working_directory</literal></entry>
+ <entry namest="column67"
nameend="column89"><literal>-d</literal>,
<literal>--debug</literal></entry>
+ </row>
+ <row>
+ <entry namest="column25">0 -
9</entry>
+ <entry>0</entry>
+ <entry>global, model</entry>
+ </row>
+ <row>
+ <entry namest="column25"
nameend="column89">The level of debugging. 0 is the lowest debug level,
whereas 9 is the highest. Revisor turns up the volume quickly. The logfile on debug level
9 may very easily become 20-30MB.</entry>
+ </row>
+
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+
+ </section>
+
+ </appendix>
+
+</part>
diff --git a/doc/Reference_Manual/en-US/Author_Group.xml
b/doc/Reference_Manual/en-US/Author_Group.xml
new file mode 100644
index 0000000..37b4bf5
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Author_Group.xml
@@ -0,0 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+ <author>
+ <firstname>Jeroen</firstname>
+ <surname>van Meeuwen</surname>
+ <lineage>RHCE</lineage>
+ <affiliation>
+ <orgname>Fedora Project</orgname>
+ <orgdiv>Contributor</orgdiv>
+ </affiliation>
+ <email>kanarip(a)fedoraproject.org</email>
+ </author>
+</authorgroup>
diff --git a/doc/Reference_Manual/en-US/Book_Info.xml
b/doc/Reference_Manual/en-US/Book_Info.xml
new file mode 100644
index 0000000..0b84805
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Book_Info.xml
@@ -0,0 +1,37 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<bookinfo id="Revisor_Documentation-Documentation">
+ <title>Reference Manual</title>
+ <subtitle>Revisor Complete Installation, Configuration and Tweaking
Reference</subtitle>
+ <productname>Revisor</productname>
+ <productnumber>2.1.5</productnumber>
+
+<!--
+ <edition>0</edition>
+ <pubsnumber>0</pubsnumber>
+//-->
+ <abstract>
+ <para>
+ This is Revisors upstream documentation.
+ </para>
+ </abstract>
+ <corpauthor>
+ <inlinemediaobject>
+ <imageobject>
+ <imagedata format='SVG'
fileref="Common_Content/images/title_logo.svg" />
+ </imageobject>
+ <textobject><phrase>Logo</phrase></textobject>
+ </inlinemediaobject>
+ </corpauthor>
+ <copyright>
+ <year>&YEAR;</year>
+ <holder>&HOLDER;</holder>
+ </copyright>
+ <xi:include href="Common_Content/Legal_Notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Author_Group.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+
+
+
diff --git a/doc/Reference_Manual/en-US/Preface.xml
b/doc/Reference_Manual/en-US/Preface.xml
new file mode 100644
index 0000000..02af0ea
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Preface.xml
@@ -0,0 +1,56 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<preface id="Revisor_Documentation-Preface">
+ <title>Preface</title>
+ <para>
+ This is the documentation for Revisor, a utility to create and customize your own
Linux distribution based on Fedora, Red Hat Enterprise Linux or CentOS.
+ </para>
+
+ <section id="Revisor_Documentation-Preface-About_The_Contributors">
+ <title>About the Contributors</title>
+ <formalpara>
+ <title>Author</title>
+ <para>
+ <emphasis>Jeroen van Meeuwen</emphasis> (RHCE, LPIC-2, MCP,
CCNA) is currently a Senior System Engineer, specialized in Linux systems and Systems
Architecture, working for Operator Groep Delft in The Netherlands. His experience with
computers goes back to the early '90s, with a Philips P2000T being over a decade old,
little tapes containing programs but most importantly games, and 16K memory cartridges.
Since 1998, he has been involved with Red Hat Linux (5.2 at that time), and was an early
adopter of Fedora Core Linux in November 2003, until his first real contributions to Free
and Open Source Software were made in 2005.
+ </para>
+ </formalpara>
+ <para>
+ As a contributor to Free and Open Source Software within the Fedora
community, amongst other programs, Jeroen has developed Revisor, a Python framework to
build distributions with. With regards to Configuration Management, Jeroen currently
maintains or co-maintains -amongst other packages- the entire stack of packages related to
Puppet
+ </para>
+
+ <formalpara>
+ <title>Contributors</title>
+ <para>
+ <emphasis>Jonathan Steffan</emphasis> is a community
volunteer based in Colorado, USA, and has a long standing record within Fedora for
packaging Zope (Web Application Server), Plone (Open Source Content Management System),
providing compat-python2.4 packages for Fedora 7 and 8, and voluntarily administering the
Fedora Unity servers, Zope and Plone instances, creating and further developing Revisor
and pyJigdo.
+ </para>
+ </formalpara>
+ </section>
+
+ <section id="Revisor_Documentation-Preface-About_Fedora_Unity">
+ <title>About Fedora Unity</title>
+ <para>
+ The Fedora Unity Project consists of a group of concerned peers from within
the Fedora community that strive to bring the best possible solutions to the community, in
a consistent manner. This, amongst other things, resulted in extensive documentation on
various topics often referred to on the Web, published under the Open Documentation
License v1.0.
+ </para>
+ <para>
+ The Fedora Unity Project is a different project then the official Fedora
Project. The people behind the Fedora Unity Project often contribute to the Fedora Project
directly as well, but there's little to no bureaucracy in the Fedora Unity Project.
Why do you think these Re-Spins are not released by the Fedora Project itself?
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Preface-About_This_Document">
+ <title>About this Document</title>
+ <para>
+ This document is licensed under the Open Publication License version 1.0,
which is available at <ulink
url="http://www.opencontent.org/openpub/" />.
You can get the latest version from <ulink
url="http://kanarip.fedorapeople.org/Revisor_Documentation/en-US/pdf...
/> (PDF), and it's sources live at <ulink
url="http://git.fedorahosted.org/git/?p=revisor;a=tree;f=doc" />.
+ </para>
+ </section>
+
+ <xi:include href="Common_Content/Conventions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="Feedback.xml"
xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:fallback
xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:include href="Common_Content/Feedback.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ </xi:fallback>
+ </xi:include>
+
+</preface>
diff --git a/doc/Reference_Manual/en-US/Reference_Manual.ent
b/doc/Reference_Manual/en-US/Reference_Manual.ent
new file mode 100644
index 0000000..9edfaea
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual.ent
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Revisor">
+<!ENTITY BOOKID "Reference Manual">
+<!ENTITY YEAR "2007 - 2009">
+<!ENTITY HOLDER "Jeroen van Meeuwen">
+
diff --git a/doc/Reference_Manual/en-US/Reference_Manual.xml
b/doc/Reference_Manual/en-US/Reference_Manual.xml
new file mode 100644
index 0000000..757504d
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Reference_Manual.xml
@@ -0,0 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+ <xi:include href="Book_Info.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Preface.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="Revisor_Documentation-Introduction.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Features.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Installation.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Using_Kickstart.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Compose_Process_Details.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Plugins.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Tweaking_The_Build_Process.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Tips_and_Tricks.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Frequently_Asked_Questions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Testing.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Development.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="Revision_History.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <index />
+ <xi:include href="Appendix.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+</book>
+
diff --git a/doc/Reference_Manual/en-US/Revision_History.xml
b/doc/Reference_Manual/en-US/Revision_History.xml
new file mode 100644
index 0000000..68432a0
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revision_History.xml
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+ <title>Revision History</title>
+ <simpara>
+ <revhistory>
+ <revision>
+ <revnumber>1.0</revnumber>
+ <date></date>
+ <author>
+ <firstname></firstname>
+ <surname></surname>
+ <email></email>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member></member>
+ </simplelist>
+ </revdescription>
+ </revision>
+ </revhistory>
+ </simpara>
+</appendix>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Compose_Process_Details.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Compose_Process_Details.xml
new file mode 100644
index 0000000..64515ff
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Compose_Process_Details.xml
@@ -0,0 +1,431 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Compose_Process_Details">
+ <title>Compose Process Details</title>
+ <para>
+ This chapter lists the details of the compose process as well as dives deep into
the features of Revisor.
+ </para>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Overview">
+ <title>Overview</title>
+ <titleabbrev
id="Compose_Process_Details-Overview">Overview</titleabbrev>
+ <para>
+ Of course, the compose process for installation media is a little different
then the compose process for live media.
+ </para>
+ <para>
+ When composing, Revisor starts out doing the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Revisor initiates and loads plugins, options, and defaults. At
this point, Revisor has a so-called <emphasis>ConfigStore</emphasis> that
holds all options Revisor knows about.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Revisor reads the options from the command-line.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Revisor reads the configuration file specified with the
<code>--config</code> command-line parameter, or uses it's builtin
default, <filename>/etc/revisor/revisor.conf</filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Revisor reads the global <code>[revisor]</code>
section for all settings available in it's
<emphasis>ConfigStore</emphasis> and sets those configured in the global
section. Remember that if an option is not available in the
<emphasis>ConfigStore</emphasis> but is configured in the global configuration
section, it is ignored.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If a model is specified in the configuration file's global
section <code>[revisor]</code>, Revisor will set that model to be used and
loads it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If a model has been specified on the command-line, with option
<code>--model</code>, Revisor loads that model.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When loading the model, Revisor again iterates over all the
settings that are in the <emphasis>ConfigStore</emphasis>, checks if the
setting has been configured in the model section, and adjusts the setting in the
<emphasis>ConfigStore</emphasis> if necessary. Again remember that if the
<emphasis>ConfigStore</emphasis> does not know about one or the other option
already, that setting is ignored.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Now that the defaults and configuration file settings have been
applied to the <emphasis>ConfigStore</emphasis>, it is time for Revisor to
look at the options specified on the command-line to see if you wanted to override
anything.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ While loading each configuration setting available in the global
<code>[revisor]</code>, model-specific sections and/or command-line, Revisor
checks every settings against a function that is specifically written to check such
setting. For example, the label of an ISO cannot be longer then 32 characters.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Especially in CLI mode, these settings build up the task list for
Revisor. If there's nothing to do, Revisor will throw an error explaining what's
missing. If there's things to do that cannot be done in one run, Revisor will throw an
error explaining that.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Graphical User Interface mode however, if the settings loaded
so far are all OK, the GUI will start. Since you can still adjust a few settings from
within the GUI, the settings loaded so far will be the defaults for configuration settings
that have a dialog for you to adjust them with, throughout the rest of the process.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Installation_Media">
+ <title>Installation Media</title>
+ <para>
+ As we've explained before, composing installation media is a little
different then composing live media. That's not just because installation media should
start an installation procedure and live media should show you a nice, shiny,
fully-functional Desktop.
+ </para>
+ <para>
+ For one, installation media allows split media. This means that Revisor can
span the payload of the product over multiple ISO images or multiple discs, if you will.
When composing installation media, Revisor basically does the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Of course, Revisor goes through the loading of configuration
options mentioned in the <xref
linkend="Revisor_Documentation-Compose_Process_Details-Overview"
endterm="Compose_Process_Details-Overview" />.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When you're done specifying options in the GUI, or when
Revisor thinks it can go ahead using the options specified in CLI mode, it takes the list
of packages selected from either the GUI or the kickstart
<code>%packages</code> manifest.
+ </para>
+ <para>
+ Not getting too deep into details here, yet, because some of
these things are routines shared with other composing modes, but here's a few
additional considerations Revisor makes when doing the package selection.
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Normally, a kickstart
<code>%packages</code> manifest only allows you to select package
<emphasis>names</emphasis>. With Revisor though, you can select exact package
<emphasis>NEVRA</emphasis> to select a certain version or architecture for the
package that you want. Additionally, if a package is not available, Revisor searches the
<emphasis>Provides</emphasis> of the available packages.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Live_Media">
+ <title>Live Media</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Respin_Mode">
+ <title>Respin Mode</title>
+ <para>
+ Revisor has a respin mode that in some aspects differs from the regular
routines. It is intended to reflect behaviour of tools in use by the Fedora Project
Release Engineering team as closely as possible.
+ </para>
+ <para>
+ Re-Spin mode only affects installation media products.
+ </para>
+ <para>
+ In Re-Spin mode, the way the RPM payload is determined from kickstart differs
from Revisor's normal procedures. See <xref
linkend="Revisor_Documentation-Using_Kickstart" /> for more details on using
a kickstart package manifest.
+ </para>
+ <para>
+ A kickstart file's so-called <xref
linkend="Revisor_Documentation-Appendix-Terminology-package_manifest" />
usually looks like:
+ </para>
+ <para>
+ <screen>%packages
+@group1
+@group2 --nodefaults
+@group3 --optional
+package1
+package2
+-package3
+%end</screen>
+ </para>
+ <para>
+ Which tells us the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Include all mandatory and default packages from group1
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Include all mandatory packages from group2
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Include all mandatory, default and optional packages from group3
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Include package1, and package2
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Exclude package3
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ Depending on how you use this instructions or information, there is a slight
difference in the package set that ends up on the media you compose.
+ </para>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Respin_Mode-Selecting_Groups">
+ <title>Selecting Groups</title>
+ <para>
+ Selecting groups has the following logic: When you load a repository you
may also load the groups file (often referred to as 'comps' or
'comps.xml'). This comps file is an XML file with categories, groups (per
category), and per group:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ a list of mandatory packages. If you select or include the
group, these packages come with it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a list of default packages. If you select or include the
group, these packages will come with it as a default. If you only want the mandatory,
minimum set of packages for this group, in a kickstart package manifest append
<code>--nodefaults</code> to the group line or in the Revisor GUI,
right-click on the group and choose <emphasis>Deselect all
packages</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a list of optional packages. If you select a group you have
not yet selected these packages. To select the optional packages of a group, in a
kickstart package manifest append <code>--optional</code> to the group line or
in the Revisor GUI, right-click on the group and choose <emphasis>Select all
optional packages</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a list of conditionals. If you select this group, these
conditionals are thrown into the package sack and transaction information and include or
exclude other packages. Suppose you select the '@nl-support' or “Dutch Support”
group from the Languages or Localization category, you would end up with support for the
Dutch language in all applications that have that kind of support.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Respin_Mode-Select_Matching_Packages">
+ <title>Select Matching Packages</title>
+ <para>
+ This is the logic Revisor applies when running in Re-Spin mode (on the
CLI, specify <code>--respin</code>). It imitates the behavior pungi has, and
thus enables you to copy that behavior. Note that <code>--respin</code> has
other implications as well.
+ </para>
+ <para>
+ First of all, it iterates the groups in the kickstart package manifest.
For each group, it appends the names of the mandatory packages to a list, and depending on
the additional parameters specified with that group (<code>--nodefaults</code>
or <code>--optional</code>), appends the names of the other packages in that
group as well.
+ </para>
+ <para>
+ Then it iterates over the package names in the package manifest. These
package names are appended to the same list of package names too. This includes package
'names' with some sort of wildcard (?, or *).
+ </para>
+ <para>
+ Then it iterates over all the excluded packages, appending each of those
to the YUM configuration exclude list.
+ </para>
+ <para>
+ Now that Revisor has a very simple, flat list of package names, it uses
YUM's internal matching logic 5 to get what packages in the repositories matched
exactly (by name), matched (by wildcard) and did not match at all. Revisor then selects
the exact matches and matches, adding them to the transaction.
+ </para>
+ </section>
+ </section>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving">
+ <title>Dependency Resolving</title>
+ <indexterm>
+ <primary>Dependency Resolving</primary>
+ </indexterm>
+ <para>
+ Dependency resolving is the area where some of the efficiency Revisor can
gain for you comes from. While of course there is specific reasons to do things one way,
or the other, most people I speak to about Revisor, it is not very clear why, or what
Revisor does in this area. First of all, there's two ways of resolving dependencies:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>Inclusive Dependency Resolving</title>
+ <indexterm>
+ <primary>Dependency Resolving</primary>
+ <secondary>Inclusive</secondary>
+ </indexterm>
+ <para>
+ Iterate all packages in the transaction and list their
requirements, then for each of those requirements, find all packages that provide a
matching capability, add those packages to the transaction, and don't forget to add
the requirements those packages have themselves, back into the pile of (unmet)
requirements.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Exclusive Dependency Resolving</title>
+ <indexterm>
+ <primary>Dependency Resolving</primary>
+ <secondary>Inclusive</secondary>
+ </indexterm>
+ <para>
+ Iterate all the packages and for each of the requirements
found, find the best package that meets the requirement. This is also YUMs default
behavior. Anaconda uses YUM during the installation, and this is the behaviour of YUM used
during the installation.
+ </para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Inclusive">
+ <title>Inclusive Dependency Resolving</title>
+ <para>
+ Hypothetically, you could describe inclusive dependency as follows:
+ </para>
+ <para>
+ <screen>final_packages = []
+more_to_do = True
+while more_to_do:
+more_to_do = False
+for package in packages:
+ if package in final_packages:
+ continue
+
+ dependencies = find_package_dependencies()
+ for dependency in dependencies:
+ pulled_in_package = pull_in_dependency()
+ if pulled_in_package not in final_packages:
+ packages.append(pulled_in_package)
+ more_to_do = True</screen>
+ </para>
+ <para>
+ So, what does this mean? Basically, it means that if there is a
requirement for a capability, all packages providing that capability are being pulled in.
Now imagine package 'foo' requires capability 'web-client'. There's a
number of packages providing that capability, right? So you get Firefox, lynx, elinks,
konqueror, safari, Netscape, Internet Explorer, emacs, for free! All of those pull in
their own dependencies also, of course.
+ </para>
+ <note>
+ <para>
+ If you catch this before it catches you, you can prevent the packages
from being pulled in during dependency resolving by not making the package available in
the <xref linkend="Revisor_Documentation-Appendix-Terminology-Package_Sack"
/> in the first place, using the <literal>-firefox</literal> syntax in the
kickstart package manifest, and setting
<literal>kickstart_uses_pkgsack_excludes</literal> to 1.
+ </para>
+ </note>
+ <note>
+ <para>
+ You may have thought of it; pulling in packages this way may give you
a package set (or <emphasis>RPM payload</emphasis>) that has conflicting
packages. Imagine package <application>foo</application> requiring capability
<application>bar</application>, which is provided by two packages that
conflict with one another (either on explicit <literal>Conflicts:</literal>
RPM header or file level). Both will be pulled in, hence disabling you to install
everything (<literal>'*'</literal> or -previously-
<literal>@Everything</literal> in the kickstart package manifest).
+ </para>
+ </note>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Makes_Sense">
+ <title>When This Makes Sense</title>
+ <para>
+ If you are composing a large distribution of which 3 million users in
even so many different situations having so many different expectations and desires, you
will want this behaviour, since you won't be able to determine which one of the
packages for each capability someone in that group wants, and which one may not want. Or,
in case of upgrades, what the system needs. Shipping them all on the same media is the
best solution in these cases.
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Does_Not_Make_Sense">
+ <title>When This Does Not Make Sense</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ When creating installation media to be installed
unattended, or to be used in conjunction with deployment strategies
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When creating installation media to be upgrading PCs you
have controlled from the beginning, such as in a company
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Installation for a small group of users or systems
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When creating minimal installation media, or media with a
minimal RPM payload.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When creating installation media that is to be used with
installing "Everything" in the RPM payload.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+ </section>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Exclusive">
+ <title>Exclusive Dependency Resolving</title>
+ <para>
+ Exclusive dependency resolving is what YUM does when you execute a
<application>yum install</application>. Unless you've specified one of the
packages satisfying any of the dependencies in the transaction, YUM is going to look up
the best match for you. This results in the installation of only one package providing the
requirement(s) of other packages, rather then all packages providing said requirement
being installed.
+ </para>
+ <para>
+ As an example, imagine you install a package foo which requires
capability web-client. Using exclusive dependency resolving, YUM would select one package
providing the web-client capability whereas inclusive dependency resolving would include
all packages providing the web-client capability.
+ </para>
+ <para>
+ During the installation procedure, one of the major features of
installation media, anaconda is going to use YUM dependency resolving to satisfy all the
dependencies.
+ </para>
+ <note>
+ <title>Installation Procedure !== Upgrade Procedure</title>
+ <para>
+ Note that an installation procedure is not the same as an upgrade
procedure. With an installation procedure for example, you have control over the
partitioning layout whereas with an upgrade procedure, you have none. More importantly,
during an upgrade procedure, the (already installed) system has an existing package set
which needs to be updated/upgraded and thus could possibly introduce dependency resolving
problems, because of third party packages installed on the system, or because the media
used to upgrade the system with does not contain the software packages needed to complete
the upgrade RPM transaction.
+ </para>
+ </note>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Copying_Arbitrary_Files_Onto_The_Media">
+ <title>Copying Arbitrary Files Onto the Media</title>
+ <para>
+ With <literal>--copy-dir</literal>, you can specify a path
Revisor should copy onto the media.
+ </para>
+ <formalpara>
+ <title>Installation Media</title>
+ <para>
+ In the case of installation media, the path specified with
<literal>--copy-dir</literal> will be copied recursively to the
<filename>files/</filename> sub-directory at the root of the ISO image (or the
first ISO image if you compose split media).
+ </para>
+ </formalpara>
+ <para>
+ A few use-case examples:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ If one kickstart profile is not enough for you to deploy the
product onto your systems, create a directory that holds multiple kickstart files and
specify the path to that directory using <literal>--copy-dir</literal>. The
kickstart files now end up available to the installation procedures as
<filename>cdrom:/files/*.ks</filename>, and can thus be used by specifying
them on the kernel cmdline (<code>ks=cdrom:/files/profile1.ks</code>), or,
when used in combination with <literal>--isolinux-cfg</literal> from the
<xref linkend="Revisor_Documentation-Plugins-Upstream-Isolinux_Plugin"
endterm="Isolinux_Plugin" />, can be added as an option in the isolinux
menu.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If you have files or scripts that need to be copied onto, or run
on, the installed system before it attempts to reboot and operate normally, you can use
<literal>--copy-dir</literal> to make these files and scripts available during
the installation and copy or execute them from either <code>%pre</code> or
<code>%post</code> scripts.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <formalpara>
+ <title>Live Media</title>
+ <para>
+ In the case of live media, the path specified with
<literal>--copy-dir</literal> will be copied recursively onto the root
directory (<filename>/</filename>) of the live media filesystem (which is
probably loop-mounted onto <filename>/var/tmp/revisor/</filename>).
+ </para>
+ </formalpara>
+ <para>
+ If, for example, you want to copy a home directory onto the live media, and
the home directory you want to copy is at <filename>/home/user1/</filename> on
the composing system, you copy this directory so that the root of that new directory has a
sub-directory <filename>home/</filename> which in turn contains a
sub-directory <filename>user1/</filename>:
+ </para>
+ <para>
+ <screen>$ <userinput>mkdir -p
/tmp/something/home/</userinput>
+$ <userinput>cp -a /home/user1 /tmp/something/home/.</userinput>
+$ <userinput>revisor [options] --copy-dir
/tmp/something/</userinput></screen>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Cleaning_Up">
+ <title>Cleaning Up</title>
+ <para>
+ Revisor tends to clean up after itself by default. If a product compose
succeeds, you (probably) don't need to change this default behaviour. However, by
default, Revisor tends to leave the YUM cache directories untouched. This is to prevent
you from having to download all the packages a second, third or more times when you run
another compose.
+ </para>
+ <para>
+ To change this default behaviour, Revisor has an option
<literal>--clean-up</literal>. The default value for this option is
<literal>1</literal>, meaning Revisor will clean up it's temporary,
compose-specific files, but no files that could be re-used. Specifying
<literal>--clean-up=0</literal> will cause Revisor to leave everything behind
and not clean anything up at all. This is most ideal for troubleshooting purposes, where
one needs to examine the temporary, compose-specific files and see what went wrong. To
clean up everything however, because for example you might be low on disk-space, use
<literal>--clean-up=2</literal>. Revisor will then also clean up the files
that could be re-used.
+ </para>
+
+ <section
id="Revisor_Documentation-Compose_Process_Details-Cleaning_Up-Exception-to-the-Rule">
+ <title>Exception to the Rule</title>
+ <para>
+ There's one exception to the rule of cleaning up.
<filename>/var/tmp/revisor/</filename>, or put more accurately, the path
specified as the <code>installroot</code> in the YUM configuration file
configured with the model used to compose the product, will not be cleaned up afterwards.
When composing live media, this directory may still be in use as a mount-point for the
live media filesystem. Removing this directory recursively in these cases would not make
sense.
+ </para>
+ </section>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Configuration.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Configuration.xml
new file mode 100644
index 0000000..9d435bf
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Configuration.xml
@@ -0,0 +1,280 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Configuration">
+ <title>Configuration</title>
+ <para>
+ Revisor configuration can be performed using <xref
linkend="Revisor_Documentation-Configuration-Files" />, or through <xref
linkend="Revisor_Documentation-Configuration-Command-line_Options" />.
+ </para>
+
+ <section id="Revisor_Documentation-Configuration-Files">
+ <title>Configuration Files</title>
+ <para>
+ Revisor uses configuration files for a large part of it's operations.
These files mostly reside in <filename>/etc/revisor/</filename>. There is two
types of files Revisor uses:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>Revisor Configuration Files</title>
+ <para>
+ Revisor configuration files, such as
<filename>/etc/revisor/revisor.conf</filename>, contain information and
settings unique to Revisor. A Revisor configuration file is where you specify default
options, and include information on different products you want to compose.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>YUM Configuration Files</title>
+ <para>
+ YUM configuration files, such as the files in
<filename>/etc/revisor/conf.d/</filename>, contain configuration for YUM. To
be more precise, Revisor doesn't even handle the files (it let's YUM do so). The
files in <filename>/etc/revisor/conf.d/</filename> practically contain the
same information as <filename>/etc/yum.conf</filename> combined with the files
in <filename>/etc/yum.repos.d/</filename> (but not exactly the same
content!).
+ </para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <section
id="Revisor_Documentation-Configuration-Files-_etc_revisor_revisor.conf">
+
<title><filename>/etc/revisor/revisor.conf</filename></title>
+ <para>
+ The default Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. This configuration file
contains two sections:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+
<title><literal>[revisor]</literal></title>
+ <para>
+ The global section. Options specified in this section
apply to all the models defined in this configuration file.
+ </para>
+ </formalpara>
+ <para>
+ See also: <xref
linkend="Revisor_Documentation-Configuration-Global_and_Model_Configuration"
/>
+ </para>
+ </listitem>
+ <listitem>
+ <formalpara>
+
<title><literal>[<replaceable>model</replaceable>]</literal></title>
+ <para>
+ Model configuration. One section per <xref
linkend="Revisor_Documentation-Appendix-Terminology-model" />.
+ </para>
+ </formalpara>
+ <para>
+ See also: <xref
linkend="Revisor_Documentation-Configuration-Global_and_Model_Configuration"
/>
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ Model sections basically define a single product. Amongst other things,
the distribution name, release version, architecture for the product to be composed and
what YUM configuration file to use, are (often) defined on a per-model basis. There is a
large number of settings available for models, and they are all related to how the product
is going to look like. The product name, the location of the RPM payload for installation
media, the ISO label, the YUM configuration file to use, are all model settings.
+ </para>
+ <para>
+ Using models, you can reproduce the outcome of the compose process, a
<emphasis>product</emphasis>, simply by not changing the model configuration
anymore. If you want something different, you can just add another model section, and name
it differently.
+ </para>
+ <para>
+ To see what models are available with the Revisor standard package, use:
+ </para>
+ <para>
+ <screen>$ <userinput>revisor
--list-models</userinput></screen>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Files-_etc_revisor_conf.d_">
+
<title><filename>/etc/revisor/conf.d/</filename></title>
+ <para>
+ The default YUM configuration files used by Revisor. In a model
configuration section, the <literal>main =</literal> setting points to one of
the YUM configuration files in <filename>/etc/revisor/conf.d/</filename>
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Configuration-Files-Updates">
+ <title>Updates to Configuration Files</title>
+ <para>
+ The Revisor packages are not allowed to overwrite files in
<filename>/etc/</filename>, and they should thus not do so. If an update to
Revisor is installed on your system, files with the extension
<literal>.rpmnew</literal> may be created --if you had changed anything in the
file before applying the update. Since this world isn't perfect, configuration errors
may exist in the configuration files shipped with Revisor. Please pay close attention to
updates to these configuration files by examining the
<literal>.rpmnew</literal> files.
+ </para>
+ <para>
+ You can use any file location (not just
<filename>/etc/revisor/</filename>) for your own custom configuration.
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Files-Changing_Configuration_Files">
+ <title>Changing Configuration Files</title>
+ <para>
+ If you are creating your own models off of the ones that ship with
Revisor itself, please consider using an alternative configuration file (a file other then
<filename>/etc/revisor/revisor.conf</filename>, or copy the original file for
safekeeping. This way, you can always return to a working, sample configuration file and
test whether it is Revisor causing errors, or configuration mistakes.
+ </para>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Global_and_Model_Configuration">
+ <title>Global and Model Configuration</title>
+ <para>
+ The default Revisor configuration file,
<filename>/etc/revisor/revisor.conf</filename> consists of multiple sections
(the file is in .INI format). One is the <literal>[revisor]</literal> global
section, where you specify configuration options that apply to each other section or
<xref linkend="Revisor_Documentation-Appendix-Terminology-model" />.
+ </para>
+ <para>
+ The options specified in the global and model configuration sections apply to
the Revisor compose in the following order:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ The options from the global section are read, tested and set.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The options from a model section are read, tested and set,
regardless of whether the global section had caused the setting to be set to a certain
value already.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ For example, if you know all the models in a configuration file are optical
live media products, the configuration sections could look like the following:
+ </para>
+ <para>
+ <screen>[revisor]
+# Optical live media for all models
+media_live_optical = 1
+
+[model1]
+main = /etc/revisor/conf.d/revisor-model1.conf
+description = The model1 product
+architecture = i386
+# This is already configured in the global section of
+# this configuration file and can thus be removed.
+#media_live_optical = 1</screen>
+ </para>
+ <note>
+ <title>When Running the GUI</title>
+ <para>
+ Note that when running Revisor in Graphical User Interface mode, you can
still change a lot of the settings supplied by Revisor through the configuration files
loaded. When you are running Revisor in GUI mode, the configuration files supply the
defaults.
+ </para>
+ </note>
+ </section>
+
+ <section id="Revisor_Documentation-Configuration-Yum_Repositories">
+ <title>YUM Repository Configuration</title>
+ <para>
+ The files in <filename>/etc/revisor/conf.d/</filename> are YUM
configuration files. Revisor directs YUM to use these files during the compose process,
and does not handle these files itself. This chapter lists a few tips and tricks.
+ </para>
+ <para>
+ Because these files are YUM Configuration files, you can configure anything
that YUM supports. See <application>man yum.conf</application> for more
details.
+ </para>
+
+ <section
id="Revisor_Documentation-Configuration-Yum_Repositories-releasever_and_basearch">
+ <title>$releasever and $basearch</title>
+ <para>
+ When configuring a repository URL, make sure you do not use
<replaceable>$releasever</replaceable> or
<replaceable>$basearch</replaceable> variables. Since Revisor allows
cross-composing distributions between different versions of the operating system, as well
as different architectures, these variables need to be expanded to the value intended.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Using_a_Local_Mirror">
+ <title>Using a Local Mirror</title>
+ <para>
+ If you have a local mirror of Fedora, you can use the
<literal>baseurl</literal> configuration directive in each repository
configuration section to tell YUM to use the local mirror.
+ </para>
+ <para>
+ Optionally, you can also disable the
<literal>mirrorlist</literal>, preferably by outcommenting it, so that YUM
will only use the local mirror.
+ </para>
+ <para>
+ The default <literal>baseurl</literal> uses
<
literal>http://download.fedoraproject.org/</literal>. This location may or
may not be suitable for you. If you have a local mirror, you might want to change this
setting here, or add your mirror to Fedora Project's Mirrorlist.
+ </para>
+ <note>
+ <title>Adding your local mirror to the Mirrorlist</title>
+ <para>
+ You can add your local mirror to the Mirrorlist, so that the Fedora
Project mirrorlist redirects you to your local mirror. Additionally, systems in your local
network(s) will be redirected to the local mirror. The local mirror does not have to be a
public mirror in order to do so. See <ulink
url="http://admin.fedoraproject.org/mirrormanager/" /> for more details.
+ </para>
+ </note>
+ <para>
+ Set each <literal>baseurl</literal> to the location of the
repository on the local mirror.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Using_Local_Files">
+ <title>Using Local Files</title>
+ <para>
+ If you have the repositories on your local filesystem, configure a
<literal>baseurl</literal> of
<filename>file://<replaceable>/path/to/repository/</replaceable></filename>.
+ </para>
+ <note>
+ <title>Make sure to supply the correct path</title>
+ <para>
+ Make sure to supply the correct path to the repository.
<filename>file://</filename> is the
"<emphasis>protocol</emphasis>" for the location, and the location
is
<filename><replaceable>/path/to/repository/</replaceable></filename>.
Put together, you have <emphasis>three</emphasis> slashes.
+ </para>
+ </note>
+ <para>
+ See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Using_a_DVD">
+ <title>Using a DVD</title>
+ <para>
+ A DVD does not contain enough packages to rebuild the installer images.
If you are using a DVD and you want to rebuild the installer images, you will need to have
a network connection and a mirror you can reach.
+ </para>
+ <para>
+ There is a list of required packages, but since the packages change per
release and may change in the middle of the release cycle as well, we cannot hand you a
list that just works.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Adding_Third_Party_Repositories">
+ <title>Adding Third Party Repositories</title>
+ <para>
+ When adding a third party repository, make sure you add the correct
release version as well as architecture to the Revisor YUM configuration file. Verify the
location for the <literal>baseurl</literal> and/or
<literal>mirrorlist</literal> you configure manually or through YUM. Make sure
you expand any <literal>$releasever</literal>,
<literal>$basearch</literal> and <literal>$arch</literal>
variables.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Creating_Your_Own_Repository">
+ <title>Creating Your Own Repository</title>
+ <para>
+ Creating your own repository is relatively simple. You take a directory,
dump some RPM packages in it, and run <application>createrepo</application>.
See <literal>man createrepo</literal> for more information.
+ </para>
+ <para>
+ People often wonder how Revisor handles comps.xml group files.
+ </para>
+ <para>
+ When you create your own repository, follow the directions in <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Adding_Third_Party_Repositories"
/> to add the repository configuration to Revisor's YUM configuration, since your
own repository is a third party repository as well.
+ </para>
+ <para>
+ See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting">
+ <title>Testing & Troubleshooting the YUM
Configuration</title>
+ <para>
+ Before you use the (modified) configuration file, take it for a test
run.
+ </para>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Configuring_A_Proxy">
+ <title>Configuring A Proxy Server</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Configuration-Command-line_Options">
+ <title>Command-line Options</title>
+ <para>
+ With the command-line options available, you can configure options that
either override what is in the configuration file or have simply not been configured using
the configuration file. With the default configuration files that come with the
<application>revisor-cli</application> package for example, no media products
have been pre-configured in the default section. In the
<application>revisor-unity</application> package however, some default
configuration has been applied so that Fedora Unity Re-Spins actually create CD, DVD and
Rescue ISO images as well as the Installation Tree and include the sources.
+ </para>
+ <para>
+ Only some configuration options have CLI parameters. Use
<application>revisor --help</application> to see a complete list of
configuration options you can supply on the command line.
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Development.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Development.xml
new file mode 100644
index 0000000..02407c1
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Development.xml
@@ -0,0 +1,220 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Development">
+ <title>Development</title>
+ <para>
+ This chapter sheds some light on development of Revisor, such as different
branches and maintenance policies, versioning schemas, etcetera.
+ </para>
+ <para>
+ This part of the documentation relies on whether you have
<application>sudo</application> set up properly. If you have not, you're
on your own.
+ </para>
+
+ <section
id="Revisor_Documentation-Development-Running_Revisor_from_Source">
+ <title>Running Revisor from Source</title>
+ <para>
+ The latest code in GIT can be built into a RPM you can install but one of the
advantages of having the complete source tree is that you can run it directly from that
source tree so that when you pull in the next updates you do not have to rebuild the RPM.
Note that we do not bump the version number for every little change we make, and as such
the RPM built does not allow you to use <literal>rpm -Uvh</literal> or
<literal>rpm -Uvh --oldpackage</literal>. Of course, Revisor's Makefiles
also allow <application>make install</application>, but that leaves a number
of unmanaged files on your computer you would have to track down manually in order to
remove Revisor completely.
+ </para>
+ <warning>
+ <title>Cannot have Revisor RPMs installed</title>
+ <para>
+ When running revisor from within the source tree, you cannot have any of
the Revisor packages installed. Having Revisor RPM packages installed regardless will mess
up the GIT repository or source tree.
+ </para>
+ </warning>
+ <para>
+ To run Revisor from within the source tree, checkout the master branch, and
run the <filename>./switchhere</filename> script:
+ </para>
+ <para>
+ <screen>$
<userinput>./switchhere</userinput></screen>
+ </para>
+ <para>
+ The <filename>./switchhere</filename> script does the following:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Symlink <filename>/etc/revisor/</filename> to
<filename><replaceable>$PWD</replaceable>/conf/</filename> so that
<filename>/etc/revisor/revisor.conf</filename>, the primary configuration
file, and <filename>/etc/revisor/conf.d/</filename>, the configuration
directory, are valid (the symlink causes the actual file and directory to be found in
<filename><replaceable>$PWD</replaceable>/conf/</filename>)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Create the <filename>/usr/share/revisor/</filename>
directory so that a couple of symlinks can be created from within that directory:
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Revisor 2.1.0 (development version in branch master), this
includes:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/pixmaps/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Revisor 2.0.5 (branch F-7, F-8 or EL-5), this includes:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/glade/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/glade/pixmaps/</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In Revisor 2.1.0, also create symlinks from within the
appropriate
<filename>/usr/share/man/man<replaceable>$x</replaceable>/</filename>
directories to the source for these man pages in
<filename><replaceable>$PWD</replaceable>/doc/</filename>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ From this moment on, you should be able to run:
+ </para>
+ <para>
+ <screen>$
<userinput>./revisor.py</userinput></screen>
+ </para>
+ <note>
+ <title>Root privileges required</title>
+ <para>
+ Note that revisor needs root privileges to run, and that you'll need
to sudo or su-c to gain those. Use here whatever you find the most convenient; Revisor
though should have a nice error message when run without those privileges.
+ </para>
+ </note>
+
+ <section
id="Revisor_Documentation-Development-Running_Revisor_from_Source-Required_Packages">
+ <title>Installing the Required Packages</title>
+ <para>
+ To be able to run Revisor from within the source tree, you'll need to
install the required packages for each component, of course.
+ </para>
+ <para>
+ To get a current list of those packages, use:
+ </para>
+ <para>
+ <screen>$ <userinput>rpmquery --specfile
--qf="%{REQUIRES}\n" revisor.spec | sort | uniq | xargs -n 1 repoquery
--requires --alldeps --resolve</userinput></screen>
+ </para>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Documentation-Development-Building_Revisor_Packages">
+ <title>Building Revisor Packages</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Development-Tickets">
+ <title>Tickets</title>
+ <para>
+ bugzilla, trac
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Development-Adding_A_New_Spin">
+ <title>Adding a new spin or remix</title>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Add the appropriate models in the appropriate configuration file
for Revisor.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add the appropriate configuration file to the appropriate
automake Makefile
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Run autoreconf && ./configure &&
make rpm to verify the rpm building
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Create the model's YUM configuration files with the following
repositories:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ fedora, enabled, pointing to Everything
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fedora-source, disabled, pointing to Everything
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fedora-updates, enabled, pointing to the updates
repository
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fedora-updates-source, disabled, pointing to the
updates repository
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ anaconda-updates, enabled, pointing to the anaconda
updates repository
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ anaconda-updates-source, disabled, pointing to the
ananconda updates repository
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Development-Versioning_Schema">
+ <title>Versioning Schema</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Development-Release_Procedure">
+ <title>Release Procedure</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Features.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Features.xml
new file mode 100644
index 0000000..6583398
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Features.xml
@@ -0,0 +1,175 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Features">
+ <title>Features</title>
+ <para>
+ Revisor allows you to build and customize your own Remix, Re-Spin, Spin or even
your own distribution, based on Fedora and derivative distributions such as Red Hat
Enterprise Linux and CentOS.
+ </para>
+ <para>
+ Revisor builds installation media, live media, installation trees, cobbler
distro's and profiles, virtualization images and more.
+ </para>
+
+ <section id="Revisor_Documentation-Features-Installation_Media">
+ <title>Installation Media</title>
+ <para>
+ Installation media is what you use to install a system with. The installation
media composed will allow you to go through the installation process, answering a number
of questions (either manually or through kickstart), and ends up in a system running the
distribution you install.
+ </para>
+ <para>
+ Composing installation media using the Revisor GUI allows you to choose the
media (CD, or DVD), the packages to be included on the media (also called
<emphasis>RPM payload</emphasis>).
+ </para>
+ <para>
+ Using the command-line interface, Revisor also allows you to choose DVD
Duallayer and single- or dual-layer Bluray.
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Features-Installation_Trees">
+ <title>Installation Trees</title>
+ <para>
+ Installation trees are typically used in environments where a distribution
needs to be deployed over multiple systems, or is very volatile. Installation trees are
often made accessible through HTTP or FTP protocols, in one place, and do not have as much
overhead (in creating .iso files, and burning those to optical media to distribute them).
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Features-Live_Media">
+ <title>Live Media</title>
+ <para>
+ Live media often is a perfect showcase for an Operating system, Desktop
Environment or any other thing you want to show. Also, since Live media is read-only, live
media perfectly allows for a kiosk system, a system that may change while it's
running, but restores all original settings when rebooted.
+ </para>
+ <para>
+ Live media is also installable. You start out with a system and boot it from
live media, then choose to install the live media. This however is inferior to real
installation media, but is convenient if you happen to like what you see when running from
live media.
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Features-Reproducibility">
+ <title>Reproducibility</title>
+ <para>
+ Media composed with Revisor is extremely reproducible. Using
<literal>kickstart_exact_nevra</literal>, you can even select specific
versions of packages to be included on the product.
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Features-Consistency">
+ <title>Consistency</title>
+ <para>
+ When composing different types of media, such as CDs and DVDs, Revisor
composes these discs in one run, making the different media completely consistent.
<application>pungi</application> would require you to run twice, once for CDs,
and once for DVDs. This is because <application>pungi</application> uses the
<literal>part /
<replaceable><size></replaceable></literal> kickstart
configuration directive to set the maximum size of the media, and has no option to
override the size on the command-line, nor to compose a certain set of media (it all
depends on the size).
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Features-Flexibility">
+ <title>Flexibility</title>
+ <para>
+ Over the years, Revisor has been adopted to serve a large number of
use-cases, where use-cases stretch from media being composed as efficient as possible, as
robust as possible, specific deployment needs and expectations, and to match the Fedora
Project Release Engineering tools' behaviour. All this allows you to configure a lot,
and thus customize a lot, making Revisor more of a flexible framework.
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Features-Graphical_User_Interface">
+ <title>Graphical User Interface</title>
+ <para>
+ Revisor has a Graphical User Interface or GUI, in addition to the Command
Line Interface or CLI, which makes Revisor more accessible to users then the other tools,
which are CLI only. Most people only know of Revisor through the GUI, and may think there
is no CLI to Revisor. Only when it comes down to many of the additional features that
Revisor has, and that do not fit in a simplified GUI, one gets down with it using the
CLI.
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Features-Open_Development_Community">
+ <title>Open Development Community</title>
+ <para>
+ Revisor has one of those old-fashioned Free and Open Source Software
development communities, allowing anyone to make a contribution to Revisor. In fact,
Revisor has not bounced a single patch since the project started. Therefor, it improves
faster then any of the other compose tools, and is better adaptible to your needs and
expectations, because unlike the other utilities, Revisor is not limited to use-cases that
apply to Fedora Project Release Engineering.
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Features-Plugin_System">
+ <title>Plugin System</title>
+ <para>
+ Revisor has a plugin system so that you can easily extend Revisor. This
plugin system gives you full control over the Revisor procedures, and hands you off
anything Revisor knows about the compose process. There's are multiple plugins
available from upstream as well. To give you an example, the ability to replace
<filename>isolinux.cfg</filename> after the compose is done, is a plugin. See
<xref linkend="Revisor_Documentation-Plugins" /> for more information.
+ </para>
+
+ <para>
+ Current plugins included with Revisor include:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Documentation-Plugins-Upstream-Cobbler_Plugin" />
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Documentation-Plugins-Upstream-Isolinux_Plugin" />
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Documentation-Plugins-Upstream-Rebrand_Plugin" />
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="Revisor_Documentation-Plugins-Upstream-Reuse_Installer_Images_Plugin"
/>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Features-Extraneous_Debugging">
+ <title>Extraneous Debugging</title>
+ <para>
+ Revisor has extraneous debugging, which enables you, as well as the
supporters and Revisor's developers, to trace down what happens exactly, and where
anything might go wrong.
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Features-Using_YUM_Configuration_Files">
+ <title>Using YUM Configuration Files</title>
+ <para>
+ Revisor uses YUM configuration files, where everyone else is not. With using
YUM configuration files however, the control you have is nearly limitless. With all the
features in YUM already, using it's configuration file format and letting YUM itself
work with those allows Revisor to do a lot of cool things without doing anything itself:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>Excluding packages from repositories</title>
+ <para>
+ Excluding packages from repositories means a great deal. Not
having them exist in the <xref
linkend="Revisor_Documentation-Appendix-Terminology-Package_Sack" /> ensures
the package will not end up in the product. This may be what you want for maybe just a
few, or maybe an awful lot of packages.
+ </para>
+ </formalpara>
+ <para>
+ Using the alternative configuration file format, kickstart, in
use by every other compose tool, and the <literal>repo</literal> configuration
directive that is available with kickstart, you can exclude packages using the
<literal>--exclude=</literal> parameter to the
<literal>repo</literal> configuration directive. However, that parameter does
not allow wildcard matches.
+ </para>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Including only a certain (set of)
package(s)</title>
+ <para>
+ Including only a certain package, or certain set of packages
is valuable when a lot of packages exist in the repository configured, but you only need
one or two.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Concurrent use of baseurl(s) and the
mirrorlist</title>
+ <para>
+ Like during normal YUM operations, the baseurl(s) and the
mirrorlist configured for a repository are used concurrently. This is not possible with
the kickstart configuration directive <literal>repo</literal>, which takes
either <literal>--baseurl</literal> or
<literal>--mirrorlist</literal>, but not both.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Repository priorities</title>
+ <para>
+ Settings available with YUM are available within Revisor as
well, like repository priorities. Using repository priorities, you can have YUM decide to
pull a package from the repository with a higher priority (a lower priority number) rather
then a repository with a lower priority.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>YUM Plugins</title>
+ <para>
+ YUM plugins, such as
<application>yum-fastestmirror</application>,
<application>yum-fedorakmod</application>, are available, giving you even more
control over the behaviour of YUM.
+ </para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ </para>
+ </section>
+</chapter>
+
diff --git
a/doc/Reference_Manual/en-US/Revisor_Documentation-Frequently_Asked_Questions.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Frequently_Asked_Questions.xml
new file mode 100644
index 0000000..489d42a
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Frequently_Asked_Questions.xml
@@ -0,0 +1,54 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Frequently_Asked_Questions">
+ <title>Frequently Asked Questions</title>
+ <para>
+ para
+ </para>
+
+ <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-How_Does_Revisor_Handle_Comps">
+ <title>How Does Revisor Handle Comps?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-What_Are_Installer_Images">
+ <title>What Are Installer Images?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Pungi">
+ <title>What is the relationship between Revisor and Pungi?</title>
+ <para>
+ Where pungi builds a bunch of RPMs into ISO images and installation trees
through one single procedure, perfect for Release Engineering on something like the Fedora
Project, Revisor does it different entirely.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Livecd-tools">
+ <title>What is the relationship between Revisor and
livecd-tools?</title>
+ <para>
+ Revisor depends on livecd-tools for the composing of live media. Creating the
filesystem to install the packages to, turning that image file into a SquashFS file, and
applying the settings inside the chroot.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-Why_Rebuild_Installer_Images">
+ <title>Why Rebuild Installer Images?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-How_do_I_create_an_updates.img">
+ <title>How do I create an updates.img?</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Installation.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Installation.xml
new file mode 100644
index 0000000..9997088
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Installation.xml
@@ -0,0 +1,104 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Installation">
+ <title>Installation</title>
+ <para>
+ This chapter contains the installation instructions for Revisor.
+ </para>
+
+ <section id="Revisor_Documentation-Installation-Packages">
+ <title>Packages</title>
+ <para>
+ You can install Revisor using RPM packages from the repositories already
configured on your system.
+ </para>
+
+ <formalpara
id="Revisor_Documentation-Installation-Packages-revisor">
+ <title><application>revisor</application></title>
+ <para>
+ Shorthand package for the Revisor GUI.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Documentation-Installation-Packages-revisor-cli">
+
<title><application>revisor-cli</application></title>
+ <para>
+ The CLI version of Revisor. This package is always installed, as it
contains the Python code for Revisor's core. Installing just this package will give
you the command-line version of Revisor, and prevents the graphical dependencies from the
<xref linkend="Revisor_Documentation-Installation-Packages-revisor-gui" />
package to be installed as well.
+ </para>
+ </formalpara>
+
+ <formalpara
id="Revisor_Documentation-Installation-Packages-revisor-gui">
+
<title><application>revisor-gui</application></title>
+ <para>
+ The GUI version of Revisor. This is the actual package containing the
Graphical User Interface, as opposed to <xref
linkend="Revisor_Documentation-Installation-Packages-revisor" />. Depends on
<xref linkend="Revisor_Documentation-Installation-Packages-revisor-cli"
/>, and thus also installs the command-line version of Revisor.
+ </para>
+ </formalpara>
+
+ <section
id="Revisor_Documentation-Installation-Packages-YUM-RHEL">
+ <title>Red Hat Enterprise Linux 5 or higher</title>
+ <para>
+ On Red Hat Enterprise Linux 5 or higher, and derivatives, install the
Extra Packages for Enterprise Linux (EPEL) repository.
+ </para>
+ <para>
+ Then, give the following command:
+ </para>
+ <para>
+ <screen># <userinput>yum install
revisor</userinput></screen>
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Installation-Packages-YUM-Fedora">
+ <title>Fedora 7 or higher</title>
+ <para>
+ On Fedora 7 or higher, and derivatives, no additional repository
configuration is required.
+ </para>
+ <para>
+ Give the following command:
+ </para>
+ <para>
+ <screen># <userinput>yum install
revisor</userinput></screen>
+ </para>
+ <note>
+ <title>About EOL Releases</title>
+ <para>
+ Please bear in mind that Fedora releases that are past the point of
End-Of-Life, approximatly 13 months after the initial release, are not supported anymore
for use with Revisor. Also, the version of Revisor running on these EOL versions of Fedora
are not supported anymore.
+ </para>
+ </note>
+ </section>
+
+ </section>
+
+ <section
id="Revisor_Documentation-Installation-The_Latest_And_Greatest">
+ <title>The Latest and Greatest</title>
+ <para>
+ The latest and greatest is available from GIT, at <ulink
url="git://git.fedorahosted.org/revisor" />. To clone this repository, use:
+ </para>
+ <para>
+ <screen>$ <userinput>git clone
git://git.fedorahosted.org/revisor/</userinput></screen>
+ </para>
+ <para>
+ Using the GIT clone, you have the several options to start using the latest
and greatest:
+ </para>
+ <formalpara>
+ <title>Running directly from the source</title>
+ <para>
+ You can run directly from within the source tree. See <xref
linkend="Revisor_Documentation-Development-Running_Revisor_from_Source" />
for more information on how to do so.
+ </para>
+ </formalpara>
+ <warning>
+ <title>Installed packages and running from source</title>
+ <para>
+ Do not run Revisor from source while RPM packages have been installed.
Files managed by a package will get created, moved and removed when using Revisor's
source tree, and updates to the installed RPM packages will destroy these changes.
+ </para>
+ </warning>
+ <formalpara>
+ <title>Building your own packages</title>
+ <para>
+ You can create your own packages, so that you have all the benefits of
RPM. See <xref
linkend="Revisor_Documentation-Development-Building_Revisor_Packages" /> for
more information on how to do so.
+ </para>
+ </formalpara>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Introduction.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Introduction.xml
new file mode 100644
index 0000000..465fbf2
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Introduction.xml
@@ -0,0 +1,71 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Introduction">
+ <title>Introduction</title>
+ <para>
+ Revisor is a community product by Fedora Unity. Amongst other features, it allows
the creation of installation media and live media in the easiest possible manner, through
a click-and-go GUI. This chapter gives some insight on how and why Revisor was born, and
how the product evolved since.
+ </para>
+
+ <section id="Revisor_Documentation-Introduction-History_Of_Revisor">
+ <title>History of Revisor</title>
+ <para>
+ Revisor development started in December 2006, during the Fedora 7 development
cycle, in which -you might recall- the Fedora Core repository, maintained by Red Hat, and
Fedora Extras repository, mostly maintained by the community, were merged into one large
repository being maintained by both community members as well as Red Hat employees -which
are mostly community members hired by Red Hat -so community altogether. Before then Red
Hat employees maintained Fedora Core -as the set of packages upstream for Red Hat's
Enterprise product- and the community maintained a repository with additional software;
Fedora Extras. Red Hat composed the Fedora distribution every once in a while, but the
merge introduced the possibility for packages that were in Fedora Extras to be included in
the main distribution, and for the community to also (co-)maintain the (former) Fedora
Core packages that originally made up the distribution.
+ </para>
+ <para>
+ In addition to this huge merge of packages, Red Hat employees were also able
to release the entire build process to the community, meaning that from the moment the
source is committed up and until the release is announced, the entire process is open. Not
that is was all behind closed doors or proprietary or anything, the community just
couldn't really play with it as much. We now have koji (build system), mash
(repository compose from build system products), bodhi (updates release system),
livecd-tools (compose tool for live media) and pungi (compose tool for installation
media).
+ </para>
+ <para>
+ Composing media was an obscure process up and until the moment these tools
exposed the best way to compose (a set of) installation media. Fedora Unity had been
building and releasing so-called Re-Spins1 regularly, but they were built using a
not-so-very intelligent bash script. Like hundreds if not thousands of other parties that
needed to build their own media one way or the other, the entire process was based on the
best educated guess of what should happen. Luckily, in the FOSS world an educated guess is
often a very good guess, despite the fact that one keeps learning even years after the
original engagement.
+ </para>
+ <para>
+ When in December 2006 the compose tools hit a stage in which they were
released to the public, Fedora Unity was eager to get these tools and study them and use
them for composing their Re-Spins. Up and until then, Re-Spins were composed with the
aforementioned bash script that didn't do much but trigger the appropriate commands in
a sequence; There wasn't any dependency resolving between the packages included nor
did we know exactly how a release was supposed to be composed -it was our educated guess
of how it could happen. Although it often led to success, we've had many, many failed
Re-Spins as well. With a handful of volunteers, you can imagine the amount of frustration
that might give. Fedora Unity was eager to improve their Re-Spin process.
+ </para>
+ <para>
+ So, early February 2007, a number of Fedora Unity members attended “FUDCon
2007” in Boston, and presented a working GUI front-end to livecd-tools and pungi enabling
regular users to also re-compose or re-spin the installation media and live media they had
been getting from the Fedora Project. Revisor at this point just made it “as easy as
possible”. Besides the possibilities of pungi and livecd-tools themselves, the wizard
Revisor had apparently was very, very useful to mere mortals. From that point on, things
took off.
+ </para>
+ <para>
+ Fedora Unity decided Revisor could accomplish more then just being a
front-end to existing compose tools and enable someone to tweak a lot of settings as well.
In March 2007, Revisor was rebuild from the ground up in March 2007 to allow a more
flexible process, more dependent on the configuration directives it was given and less so
on the processes of the existing tools. When in San Diego at the Red Hat Summit (early May
2007), Robert 'Bob' Jensen and Jonathan Steffan gave a presentation on
“Customizing Fedora”, the responses were amazing. Since then Revisor has evolved from a
front-end to existing tools to the complete compose tool it is today, with lots of
configuration options for specific use-cases.
+ </para>
+ <para>
+ For users, Revisor is particularly useful because it has a GUI front-end
wizard, which, with the defaults settings, will just succeed in getting a user the media
he/she wants. If a user decides he needs little adjustment of the media, the GUI allows
for selecting the most common options. If a user decides he needs some less common
adjustments, the configuration options gives him very granular control -and as long as the
documentation on all the options is sufficient, users will be able to make those less
common adjustments.
+ </para>
+ <para>
+ For administrators on the other hand, Revisor is the tool that gives so much
granular control over what happens, that it can serve almost every specific use-case. In
this aspect, Revisor could potentially replace the compose tools administrators have been
developing themselves with a consistent and flexible program flow.
+ </para>
+ <para>
+ This document should enable you to study the process of composing
installation and live media, and comprehend the logic Revisor adds to that process.
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Introduction-The_Installation_Media_Challenge">
+ <title>The Installation Media Challenge</title>
+ <para>
+ When Fedora Unity first started doing these so-called Re-Spins, the challenge
ahead could maybe be explained like this:
+ </para>
+ <para>
+ <emphasis>When a user downloads a Fedora release and installs the
distribution, the user will need to download and install a number of updates. The “older”
the release becomes, the more updates will be available, and the greater the total
download size of these updates the user will need to download on top of the download size
of the original release media.</emphasis>
+ </para>
+ <para>
+ “older” is in quotes on purpose, because really for an operating system -or
“distribution” if you will- being released every 6 months, “old” is quite a relative
concept. The number of updates available however, at any given time during the release
cycle, may range from 0 right after the release (which has never happened before), to the
total amount of packages installed on the user's system (often over 2000). You can
imagine the size of these updates ranging from 0 MB to an astonishing 2GB(!), only 6
months after the initial release.
+ </para>
+ <para>
+ Some of us do not have the bandwidth capacity or enough data transfer quota
to download this many extra, rather useless bits. In addition, some of us do not have an
Internet connection at all, and thus benefit getting the updates from Re-Spins directly.
+ </para>
+ <para>
+ The use of updates in Re-Spins has several more beneficial side-effects,
which we'll explain in more detail later on in this document. Long story short; If for
some reason the software used to compose the media (the release) with does not work for
your hardware or your specific needs, updated software incorporated in the composed
installer images might resolve that problem.
+ </para>
+ <para>
+ This is the original challenge the Fedora Unity team resolved a long time
ago, and is at the base of what Revisor does nowadays.
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Introduction-The_Live_Media_Challenge">
+ <title>The Live Media Challenge</title>
+ <para>
+ Back in the day Fedora Core 5 was the most recent release, Fedora Unity
created so-called live media using Kadischi. In that time, live media could only have a
read-only root file system and was not as feature-rich as live media is today. However,
just before Revisor came to life, two applications were developed; pungi for creating
installation media, and livecd-tools for creating live media. These two applications did
their work well; The media composed for a release, including many different custom live
media spins were, and still are, created with these tools. Immediately, the Revisor
developers set themselves a target to provide a single interface to both of those tools.
+ </para>
+ </section>
+
+</chapter>
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Plugins.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Plugins.xml
new file mode 100644
index 0000000..adcca82
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Plugins.xml
@@ -0,0 +1,131 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Plugins">
+ <title>Plugins</title>
+ <para>
+ para
+ </para>
+
+ <section id="Revisor_Documentation-Plugins-Upstream">
+ <title>Upstream Plugins</title>
+ <para>
+ Plugins available from upstream, maintained by upstream
+ </para>
+
+ <section
id="Revisor_Documentation-Plugins-Upstream-Cobbler_Plugin">
+ <title>Cobbler Plugin</title>
+ <para>
+ The Cobbler plugin is able to put the product composed into a Cobbler
environment, by handing off the built product to the existing Cobbler infrastructure as a
<emphasis>distro</emphasis>, and creating a
<emphasis>profile</emphasis>.
+ </para>
+ <para>
+ Using this module, one can automatically import the Revisor product into
a Cobbler environment, and immediately use the new Cobbler
<emphasis>profile</emphasis> to start deploying or automated testing, maybe.
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Plugins-Upstream-Composer_Plugin">
+ <title>Composer Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Plugins-Upstream-Delta_Plugin">
+ <title>Delta Plugin</title>
+ <para>
+ A small change to a ISO image does not require you to download the
complete ISO image if you have a copy of the old ISO image.
+ </para>
+ <note>
+ <title>Only applicable to (...)</title>
+ <para>
+ The generation of Delta ISO images is only applicable to situations
in which the ISO image does not contain SquashFS images. SquashFS images are smaller, but
all SquashFS images are unique. Since the Delta principle is based on similarities, and no
two SquashFS images are alike, creating a Delta on two ISO images containing SquashFS
images will lead to a Delta pratically the same size as the SquashFS image. For Live Media
that compresses the ext3 filesystem image into a SquashFS image, since that SquashFS image
is probably over 97% of the size of the ISO image, creating Delta images for compressed
Live Media does not make sense. For installation media however, most RPMs would be similar
as well as (potentially) the installer images.
+ </para>
+ </note>
+ </section>
+
+ <section id="Revisor_Documentation-Plugins-Upstream-GUI_Plugin">
+ <title>GUI (Graphical User Interface) Plugin</title>
+ <para>
+ Yes, the Graphical User Interface for Revisor is actually a plugin.
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Plugins-Upstream-HUB_Plugin">
+ <title>HUB Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Plugins-Upstream-Isolinux_Plugin">
+ <title>Isolinux Plugin</title>
+ <titleabbrev id="Isolinux_Plugin">Isolinux
Plugin</titleabbrev>
+ <para>
+ The isolinux plugin adds the
<literal>--isolinux-cfg</literal> command-line option to Revisor. Specify a
file here, and the original <filename>isolinux.cfg</filename> that is built as
part of the compose process is replaced by the
<filename>isolinux.cfg</filename> specified.
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Plugins-Upstream-Jigdo_Plugin">
+ <title>Jigdo Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Plugins-Upstream-Mock_Plugin">
+ <title>Mock Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Plugins-Upstream-Rebrand_Plugin">
+ <title>Rebrand Plugin</title>
+ <para>
+ The rebrand plugin hooks in to Revisor at several different stages. The
goal of this plugin is to ensure no trademarked packages end up on the media. Trademarked
packages may include <application>fedora-logos</application>,
<application>redhat-logos</application>, and so forth.
+ </para>
+ <para>
+ The plugin adds a <literal>--rebrand</literal> option, to
which you can specify the name of your new product. When rebranding Fedora to Omega for
example, specifying <literal>--rebrand Omega</literal> would be sufficient to
make sure the product does not have any Fedora trademarks.
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Plugins-Upstream-Reuse_Installer_Images_Plugin">
+ <title>Reuse Installer Images Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Plugins-Upstream-Server_Plugin">
+ <title>Server Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Plugins-Upstream-Virtualization_Plugin">
+ <title>Virtualization Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Plugins-Upstream-WUI_Plugin">
+ <title>WUI (Web-based User Interface) Plugin</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ </section>
+
+ <section id="Revisor_Documentation-Plugins-Writing_Your_Own">
+ <title>Writing Your Own Plugins</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Testing.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Testing.xml
new file mode 100644
index 0000000..2450faf
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Testing.xml
@@ -0,0 +1,173 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Testing">
+ <title>Testing</title>
+ <para>
+ The following test cases describe different types of testing a new Revisor
release.
+ </para>
+
+ <section id="Revisor_Documentation-Testing-Simple_Test_Cases">
+ <title>Simple Test Cases</title>
+ <para>
+ This section has a few simple test cases ensuring configuration shipped with
Revisor works as anticipated.
+ </para>
+
+ <section
id="Revisor_Documentation-Testing-Simple_Test_cases-Packages">
+ <title>Packages</title>
+ <para>
+ Install the <application>revisor-cli</application>:
+ </para>
+ <para>
+ <screen># <userinput>yum --enablerepo=updates-testing install
revisor</userinput></screen>
+ </para>
+ <para>
+ Installed are all dependencies for the Revisor CLI interface. Make sure
<application>spin-kickstarts</application> is installed, a package for sample
kickstarts.
+ </para>
+ <para>
+ Starting Revisor as follows should not show any error messages related to
Revisor attempting to start up it's GUI interface:
+ </para>
+ <para>
+ <screen>#
<userinput>revisor</userinput></screen>
+ </para>
+
+ <formalpara>
+ <title>Configuration Files</title>
+ <para>
+ The following configuration files should exist:
+ </para>
+ </formalpara>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <filename>/etc/revisor/revisor.conf</filename>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ Each section should have a configuration file listed as
<literal>main</literal>.
+ </para>
+ <para>
+ And, of course, every configuration file listed in each section. In this
case, the following snippet is easy enough:
+ </para>
+ <para>
+ <screen>$ <userinput>i=0; \
+configfiles="`grep ^main /etc/revisor/revisor.conf | \
+ sed -r -e 's/^main.*=\s*(.*)/\1/g'`"
+
+for configfile in $configfiles; do \
+ [ ! -f $file ] && i=1; \
+done; \
+echo $i</userinput></screen>
+ </para>
+ <para>
+ Another way to test the configuration file is to execute:
+ </para>
+ <para>
+ <screen>$ <userinput>revisor --list-models
>/dev/null</userinput></screen>
+ </para>
+ <para>
+ If everything is well, since <literal>STDOUT</literal> is
redirected to <filename>/dev/null</filename>, you should see no messages at
all.
+ </para>
+
+ </section>
+
+ <section
id="Revisor_Documentation-Testing-Simple_Test_Cases-Configuration_Files">
+ <title>Configuration Files</title>
+ <para>
+ The main Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. The file lists a series of
models, each having their own YUM configuration file in
<filename>/etc/revisor/conf.d/</filename>.
+ </para>
+ <formalpara>
+ <title>Testing</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For each model in
<filename>/etc/revisor/revisor.conf</filename>, the
<code>main</code> setting for that model should point to a valid file.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each YUM configuration file should work. To verify, run
the following command for each configuration file:
+ </para>
+ <para>
+ <screen>$ yum -c
<replaceable>$file</replaceable> list kernel</screen>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>Known Errors</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Revisor has baseurls in YUM repositories set to <ulink
url="http://localrepo" />. This URL will not be retrievable for many
people, but allows the developers to quickly change mirrors.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Repositories that are unavailable at the moment of
testing will throw errors Revisor can't do anything about.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the directories
<filename>revisor-yumcache/</filename> and
<filename>revisor/</filename> in <filename>/var/tmp/</filename>,
the default working directory, are not writeable for the user then YUM will throw
permission denied errors.
+ </para>
+ <para>
+ Remove <filename>/var/tmp/revisor/</filename>
and <filename>/var/tmp/revisor-yumcache/</filename> or run the command with
root permissions.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </formalpara>
+ </section>
+
+ <section
id="Revisor_Documentation-Testing-Simple_Test_Cases-Compose_Results">
+ <title>Requirements for Compose Results</title>
+ <para>
+ Although heavily dependent on Anaconda for this part, these are still
requirements
+ </para>
+
+ <formalpara>
+ <title>ld-linux.so.2</title>
+ <para>
+ In the <filename>initrd.img</filename> of the composed
product, if 32-bit, <filename>/lib/ld-linux.so.2</filename> (or any other
version) should link to <filename>/lib/ld-2.9.so</filename> (or any other
version). If <filename>/lib/ld-linux.so.2</filename> links to itself, the
media will fail to install.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>How to test</title>
+ <para>
+ In a terminal, type the following command:
+ </para>
+ </formalpara>
+ <para>
+ <screen>$ <userinput>lsinitrd /path/to/initrd | grep
ld-linux</userinput></screen>
+ </para>
+ <para>
+ See also: <ulink
url="https://www.redhat.com/archives/anaconda-devel-list/2009-Februa...
/>
+ </para>
+
+ </section>
+ </section>
+
+ <section id="Revisor_Documentation-Testing-Complex_Test_Cases">
+ <title>Complex Test Cases</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Testing-Specific_Test_Cases">
+ <title>Specific Test Cases</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Tips_and_Tricks.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Tips_and_Tricks.xml
new file mode 100644
index 0000000..488a957
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Tips_and_Tricks.xml
@@ -0,0 +1,47 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Tips_and_Tricks">
+ <title>Tips and Tricks</title>
+ <para>
+ para
+ </para>
+
+ <section
id="Revisor_Documentation-Tips_and_Tricks-The_spin-kickstarts_Package">
+ <title>The spin-kickstarts Package</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Tips_and_Tricks-Even_More_Debugging">
+ <title>Even More Debugging</title>
+ <para>
+ something about using -x to buildinstall scripts
+ </para>
+ </section>
+
+ <section id="Revisor_Documentation-Tips_and_Tricks-ksvalidator">
+ <title>Kickstart Validator</title>
+ <para>
+ something about using -x to buildinstall scripts
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Tips_and_Tricks-Using_Mirrormanager_For_Mirror_Redirection">
+ <title>Using Mirrormanager for Mirror Redirection</title>
+ <para>
+ Something about using Mirrormanager to redirect you to the local mirror (so
you do not have to edit YUM configuration files).
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Tips_and_Tricks-The_localrepo_DNS_Alias">
+ <title>Using The localrepo DNS Alias</title>
+ <para>
+ Something about using the localrepo DNS alias to point to your local mirror
(either through real DNS or through /etc/hosts), so you do not have to edit the YUM
configuration files.
+ </para>
+ </section>
+
+</chapter>
+
diff --git
a/doc/Reference_Manual/en-US/Revisor_Documentation-Tweaking_The_Build_Process.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Tweaking_The_Build_Process.xml
new file mode 100644
index 0000000..d095289
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Tweaking_The_Build_Process.xml
@@ -0,0 +1,40 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Tweaking_The_Build_Process">
+ <title>Tweaking the build process</title>
+ <para>
+ para
+ </para>
+
+ <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Reusing_Existing_Installer_Images">
+ <title>Reusing Existing Installer Images</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Building_The_Installer_Images_In_Mock">
+ <title>Building The Installer Images in Mock</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Omitting-isomd5sum">
+ <title>Omitting isomd5sums</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Omitting-sha1sums">
+ <title>Omitting SHA1SUMS</title>
+ <para>
+ para
+ </para>
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/Revisor_Documentation-Using_Kickstart.xml
b/doc/Reference_Manual/en-US/Revisor_Documentation-Using_Kickstart.xml
new file mode 100644
index 0000000..7575bea
--- /dev/null
+++ b/doc/Reference_Manual/en-US/Revisor_Documentation-Using_Kickstart.xml
@@ -0,0 +1,118 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Revisor_Documentation-Using_Kickstart">
+ <title>Using Kickstart</title>
+ <para>
+ Kickstart is a configuration file format for automating installation procedures.
Or at least, it was, originally. Nowadays, kickstart files are used as input to the
compose tools, including Revisor.
+ </para>
+ <para>
+ Revisor again is unique in that it does not require a kickstart file for input.
The other tools only take kickstart configuration files. Revisor though allows most of
what is in a kickstart file to be configured interactively in Graphical User Interface
mode.
+ </para>
+
+ <section
id="Revisor_Documentation-Using_Kickstart-How_Kickstart_Is_Used">
+ <title>How Kickstart Is Used</title>
+ <para>
+ There's two cases in which a kickstart file is used differently. One is
during the compose of installation media, and the other of course is during the compose of
live media, or virtualization media.
+ </para>
+
+ <section
id="Revisor_Documentation-Using_Kickstart-How_Kickstart_Is_Used-Installation_Media">
+ <title>Installation Media</title>
+ <para>
+ In the case of installation media, the following settings are used:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <formalpara>
+
<title><literal>repo</literal></title>
+ <para>
+ The <literal>repo</literal> command in
kickstart is used when Revisor is configured to use the repositories configured in the
kickstart file only. Use <literal>kickstart_repos = 1</literal> to enable this
feature, or set the appropriate checkbox in the Revisor GUI.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+
<title><literal>%packages</literal></title>
+ <para>
+ The <literal>%packages</literal> section in
kickstart is used to determine the RPM payload on the installation media. It can include
groups and packages, and exclude packages. It accepts wildcards, both in includes and
excludes of packages (but not groups).
+ </para>
+ </formalpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <note>
+ <title>@core and @base</title>
+ <para>
+ By default, groups @core and @base are included in the package
manifest. You can specify @base to not be included, by using <literal>%packages
--nobase</literal>, but @core cannot be excluded using a kickstart package
manifest.
+ </para>
+ </note>
+ <para>
+ Using <literal>kickstart_exact</literal>, you can exclude
@core and @base so that you need to explicitly select them in the kickstart package
manifest.
+ </para>
+ <para>
+ Using <literal>kickstart_exact_nevra</literal> ...
+ </para>
+ </section>
+ </section>
+
+ <section
id="Revisor_Documentation-Using_Kickstart-The_Kickstart_Package_Manifest">
+ <title>The Kickstart Package Manifest</title>
+ <para>
+ para
+ </para>
+
+ <formalpara>
+ <title>Group @core</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Group @base</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Including groups of packages</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Including a single package</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Excluding a single package</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Using wildcard matches</title>
+ <para>
+ para
+ </para>
+ </formalpara>
+
+ <section
id="Revisor_Documentation-Using_Kickstart-Using_Kickstart_With_Package_NEVRA">
+ <title>Using Kickstart with Package NEVRA</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ </section>
+
+</chapter>
+
diff --git a/doc/Reference_Manual/en-US/images/icon.svg
b/doc/Reference_Manual/en-US/images/icon.svg
new file mode 100644
index 0000000..c471a60
--- /dev/null
+++ b/doc/Reference_Manual/en-US/images/icon.svg
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8"
standalone="no"?>
+<!-- Created with Inkscape (
http://www.inkscape.org/) -->
+<svg
+
xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+
xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
+
xmlns:cc="http://web.resource.org/cc/"
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+
xmlns:svg="http://www.w3.org/2000/svg"
+
xmlns="http://www.w3.org/2000/svg"
+
xmlns:xlink="http://www.w3.org/1999/xlink"
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd&q...
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="32"
+ height="32"
+ id="svg3017"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ sodipodi:docname="book.svg"
+ sodipodi:docbase="/home/andy/Desktop">
+ <metadata
+ id="metadata489">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ inkscape:window-height="480"
+ inkscape:window-width="858"
+ inkscape:pageshadow="0"
+ inkscape:pageopacity="0.0"
+ guidetolerance="10.0"
+ gridtolerance="10.0"
+ objecttolerance="10.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ inkscape:zoom="1"
+ inkscape:cx="16"
+ inkscape:cy="15.944056"
+ inkscape:window-x="0"
+ inkscape:window-y="33"
+ inkscape:current-layer="svg3017" />
+ <defs
+ id="defs3019">
+ <linearGradient
+ id="linearGradient2381">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop2383" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="stop2385" />
+ </linearGradient>
+ <linearGradient
+ x1="415.73831"
+ y1="11.854"
+ x2="418.13361"
+ y2="18.8104"
+ id="XMLID_1758_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="0"
+ id="stop3903" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop3905" />
+ <a:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="500.70749"
+ y1="-13.2441"
+ x2="513.46442"
+ y2="-2.1547"
+ id="XMLID_1757_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop3890" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop3892" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="XMLID_1755_">
+ <use
+ id="use3874"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_343_" />
+ </clipPath>
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop3877" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop3879" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop3881" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop3883" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="471.0806"
+ y1="201.07761"
+ x2="481.91711"
+ y2="210.4977"
+ id="XMLID_1754_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#6498c1;stop-opacity:1"
+ offset="0.005618"
+ id="stop3863" />
+ <stop
+ style="stop-color:#79a9cc;stop-opacity:1"
+ offset="0.2332"
+ id="stop3865" />
+ <stop
+ style="stop-color:#a4cde2;stop-opacity:1"
+ offset="0.74049997"
+ id="stop3867" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="1"
+ id="stop3869" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="5.618000e-003" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="0.4438" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="XMLID_1753_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop3851" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop3853" />
+ <a:midPointStop
+ style="stop-color:#B2B2B2"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B2B2B2"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="XMLID_1751_">
+ <use
+ id="use3837"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_338_" />
+ </clipPath>
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop3840" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop3842" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop3844" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop3846" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="468.2915"
+ y1="204.7612"
+ x2="479.39871"
+ y2="214.4166"
+ id="XMLID_1750_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop3830" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop3832" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop3818" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop3820" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="501.0903"
+ y1="-19.2544"
+ x2="531.85413"
+ y2="0.72390002"
+ id="XMLID_1748_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop3803" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop3805" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop3807" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop3809" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="XMLID_2275_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop9947" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop9949" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop9951" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop9953" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="XMLID_2273_">
+ <use
+ id="use9933"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_960_" />
+ </clipPath>
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="XMLID_2274_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop9936" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop9938" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop9940" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop9942" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="478.21341"
+ y1="-131.9297"
+ x2="469.85818"
+ y2="-140.28481"
+ id="XMLID_2272_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop9917" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop9919" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop9921" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop9923" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ style="overflow:visible"
+ id="TriangleInM">
+ <path
+ d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+ transform="scale(-0.4,-0.4)"
+ style="fill:#5c5c4f"
+ id="path3197" />
+ </marker>
+ <linearGradient
+ x1="200.7363"
+ y1="100.4028"
+ x2="211.99519"
+ y2="89.143997"
+ id="XMLID_3298_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#bfbfbf;stop-opacity:1"
+ offset="0"
+ id="stop20103" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop20105" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#BFBFBF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#BFBFBF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#F2F2F2" />
+ </linearGradient>
+ <linearGradient
+ x1="200.7363"
+ y1="100.4028"
+ x2="211.99519"
+ y2="89.143997"
+ id="linearGradient36592"
+ xlink:href="#XMLID_3298_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="181.2925"
+ y1="110.8481"
+ x2="192.6369"
+ y2="99.5037"
+ id="XMLID_3297_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="stop20096" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop20098" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="181.2925"
+ y1="110.8481"
+ x2="192.6369"
+ y2="99.5037"
+ id="linearGradient36595"
+ xlink:href="#XMLID_3297_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="211.77589"
+ y1="105.7749"
+ x2="212.6619"
+ y2="108.2092"
+ id="XMLID_3296_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#0f6124;stop-opacity:1"
+ offset="0"
+ id="stop20087" />
+ <stop
+ style="stop-color:#219630;stop-opacity:1"
+ offset="1"
+ id="stop20089" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#0F6124" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#0F6124" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#219630" />
+ </linearGradient>
+ <linearGradient
+ x1="211.77589"
+ y1="105.7749"
+ x2="212.6619"
+ y2="108.2092"
+ id="linearGradient36677"
+ xlink:href="#XMLID_3296_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="208.9834"
+ y1="116.8296"
+ x2="200.0811"
+ y2="96.834602"
+ id="XMLID_3295_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop20076" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.5"
+ id="stop20078" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop20080" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="208.9834"
+ y1="116.8296"
+ x2="200.0811"
+ y2="96.834602"
+ id="linearGradient36604"
+ xlink:href="#XMLID_3295_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="195.5264"
+ y1="97.911102"
+ x2="213.5213"
+ y2="115.9061"
+ id="XMLID_3294_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="0"
+ id="stop20069" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop20071" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="195.5264"
+ y1="97.911102"
+ x2="213.5213"
+ y2="115.9061"
+ id="linearGradient36607"
+ xlink:href="#XMLID_3294_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="186.1938"
+ y1="109.1343"
+ x2="206.6881"
+ y2="88.639999"
+ id="XMLID_3293_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop20056" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.16850001"
+ id="stop20058" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.23029999"
+ id="stop20060" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.2809"
+ id="stop20062" />
+ <stop
+ style="stop-color:#c2c2c2;stop-opacity:1"
+ offset="0.5"
+ id="stop20064" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.1685"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.2303"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.2809"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#C2C2C2" />
+ </linearGradient>
+ <linearGradient
+ x1="186.1938"
+ y1="109.1343"
+ x2="206.6881"
+ y2="88.639999"
+ id="linearGradient36610"
+ xlink:href="#XMLID_3293_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="184.8569"
+ y1="112.2676"
+ x2="211.94099"
+ y2="89.541397"
+ id="XMLID_3292_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop20043" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.16850001"
+ id="stop20045" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.23029999"
+ id="stop20047" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.2809"
+ id="stop20049" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop20051" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.1685"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.2303"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.2809"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="184.8569"
+ y1="112.2676"
+ x2="211.94099"
+ y2="89.541397"
+ id="linearGradient36613"
+ xlink:href="#XMLID_3292_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ style="overflow:visible"
+ id="TriangleOutM">
+ <path
+ d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+ transform="scale(0.4,0.4)"
+
style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+ id="path3238" />
+ </marker>
+ <linearGradient
+ x1="165.3"
+ y1="99.5"
+ x2="165.3"
+ y2="115.9"
+ id="XMLID_3457_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="0"
+ id="stop8309" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8311" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="1"
+ id="stop8313" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#999999" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#999999" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#B2B2B2" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#B2B2B2" />
+ </linearGradient>
+ <linearGradient
+ x1="165.3"
+ y1="99.5"
+ x2="165.3"
+ y2="115.9"
+ id="lg1997"
+ xlink:href="#XMLID_3457_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="175"
+ y1="99.800003"
+ x2="175"
+ y2="112.5"
+ id="XMLID_3456_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="0"
+ id="stop8300" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="0.60000002"
+ id="stop8302" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="1"
+ id="stop8304" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="0.6"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#191919" />
+ </linearGradient>
+ <linearGradient
+ x1="175"
+ y1="99.800003"
+ x2="175"
+ y2="112.5"
+ id="lg2000"
+ xlink:href="#XMLID_3456_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="168.8"
+ y1="107.1"
+ x2="164.5"
+ y2="110"
+ id="XMLID_3455_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="0"
+ id="stop8291" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="0.69999999"
+ id="stop8293" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="1"
+ id="stop8295" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.7"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#191919" />
+ </linearGradient>
+ <linearGradient
+ x1="168.8"
+ y1="107.1"
+ x2="164.5"
+ y2="110"
+ id="lg2003"
+ xlink:href="#XMLID_3455_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ id="lg63694">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop63696" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="stop63698" />
+ </linearGradient>
+ <linearGradient
+ x1="458"
+ y1="483"
+ x2="465.20001"
+ y2="271.39999"
+ id="lg2006"
+ xlink:href="#lg63694"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+ <linearGradient
+ x1="176.3"
+ y1="110.1"
+ x2="158.7"
+ y2="105"
+ id="XMLID_3453_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="0"
+ id="stop8271" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="0.2"
+ id="stop8273" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop8275" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.2"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="176.3"
+ y1="110.1"
+ x2="158.7"
+ y2="105"
+ id="lg2009"
+ xlink:href="#XMLID_3453_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="173.60001"
+ y1="118.9"
+ x2="172.8"
+ y2="128.2"
+ id="XMLID_3449_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8232" />
+ <stop
+ style="stop-color:#fff95e;stop-opacity:1"
+ offset="0.60000002"
+ id="stop8234" />
+ <stop
+ style="stop-color:#ecd600;stop-opacity:1"
+ offset="1"
+ id="stop8236" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.6"
+ style="stop-color:#FFF95E" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFF95E" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#ECD600" />
+ </linearGradient>
+ <linearGradient
+ x1="173.60001"
+ y1="118.9"
+ x2="172.8"
+ y2="128.2"
+ id="lg2016"
+ xlink:href="#XMLID_3449_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <radialGradient
+ cx="284.60001"
+ cy="172.60001"
+ r="6.5"
+ fx="284.60001"
+ fy="172.60001"
+ id="XMLID_3448_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8219" />
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8221" />
+ <stop
+ style="stop-color:#c96b00;stop-opacity:1"
+ offset="0.89999998"
+ id="stop8223" />
+ <stop
+ style="stop-color:#9a5500;stop-opacity:1"
+ offset="1"
+ id="stop8225" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.9"
+ style="stop-color:#C96B00" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#C96B00" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#9A5500" />
+ </radialGradient>
+ <radialGradient
+ cx="284.60001"
+ cy="172.60001"
+ r="6.5"
+ fx="284.60001"
+ fy="172.60001"
+ id="rg2020"
+ xlink:href="#XMLID_3448_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)"
/>
+ <linearGradient
+ x1="158.10001"
+ y1="123"
+ x2="164.2"
+ y2="126.6"
+ id="XMLID_3447_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecd600;stop-opacity:1"
+ offset="0"
+ id="stop8204" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8206" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop8208" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECD600" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECD600" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="158.10001"
+ y1="123"
+ x2="164.2"
+ y2="126.6"
+ id="lg2026"
+ xlink:href="#XMLID_3447_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <radialGradient
+ cx="280.89999"
+ cy="163.7"
+ r="10.1"
+ fx="280.89999"
+ fy="163.7"
+ id="XMLID_3446_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop8197" />
+ <stop
+ style="stop-color:#fff95e;stop-opacity:1"
+ offset="1"
+ id="stop8199" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#FFFFFF" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#FFF95E" />
+ </radialGradient>
+ <radialGradient
+ cx="280.89999"
+ cy="163.7"
+ r="10.1"
+ fx="280.89999"
+ fy="163.7"
+ id="rg2029"
+ xlink:href="#XMLID_3446_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+ <linearGradient
+ x1="156.5"
+ y1="122.7"
+ x2="180.10001"
+ y2="122.7"
+ id="XMLID_3445_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8184" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.2"
+ id="stop8186" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8188" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.40000001"
+ id="stop8190" />
+ <stop
+ style="stop-color:#d68100;stop-opacity:1"
+ offset="1"
+ id="stop8192" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.2"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.4"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#D68100" />
+ </linearGradient>
+ <linearGradient
+ x1="156.5"
+ y1="122.7"
+ x2="180.10001"
+ y2="122.7"
+ id="lg2032"
+ xlink:href="#XMLID_3445_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="156.39999"
+ y1="115.4"
+ x2="180.10001"
+ y2="115.4"
+ id="XMLID_3444_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8171" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.2"
+ id="stop8173" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8175" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.40000001"
+ id="stop8177" />
+ <stop
+ style="stop-color:#d68100;stop-opacity:1"
+ offset="1"
+ id="stop8179" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.2"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.4"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#D68100" />
+ </linearGradient>
+ <linearGradient
+ x1="156.39999"
+ y1="115.4"
+ x2="180.10001"
+ y2="115.4"
+ id="lg2035"
+ xlink:href="#XMLID_3444_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="379.70001"
+ y1="167.89999"
+ x2="383.89999"
+ y2="172.89999"
+ id="lg4286_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s16159" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.1"
+ id="s16161" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="1"
+ id="s16163" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.1" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#737373"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="379.60001"
+ y1="167.8"
+ x2="383.79999"
+ y2="172"
+ id="lg6416"
+ xlink:href="#lg4286_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)"
/>
+ <linearGradient
+ x1="384.20001"
+ y1="169.8"
+ x2="384.79999"
+ y2="170.39999"
+ id="lg4285_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="0"
+ id="s16152" />
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="1"
+ id="s16154" />
+ <ns:midPointStop
+ style="stop-color:#737373"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#737373"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#D9D9D9"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="384.20001"
+ y1="169.8"
+ x2="384.79999"
+ y2="170.39999"
+ id="lg6453"
+ xlink:href="#lg4285_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+ <linearGradient
+ x1="380.5"
+ y1="172.60001"
+ x2="382.79999"
+ y2="173.7"
+ id="lg4284_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+ <stop
+ style="stop-color:gray;stop-opacity:1"
+ offset="0"
+ id="s16145" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="1"
+ id="s16147" />
+ <ns:midPointStop
+ style="stop-color:#808080"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#808080"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#E5E5E5"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="380.5"
+ y1="172.60001"
+ x2="382.79999"
+ y2="173.7"
+ id="lg6456"
+ xlink:href="#lg4284_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+ <radialGradient
+ cx="347.29999"
+ cy="244.5"
+ r="5.1999998"
+ fx="347.29999"
+ fy="244.5"
+ id="lg4282_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+ <stop
+ style="stop-color:#333;stop-opacity:1"
+ offset="0"
+ id="s16135" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="s16137" />
+ <ns:midPointStop
+ style="stop-color:#333333"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#333333"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#999999"
+ offset="1" />
+ </radialGradient>
+ <linearGradient
+ x1="310.39999"
+ y1="397.70001"
+ x2="310.89999"
+ y2="399.5"
+ id="lg4280_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="0"
+ id="s16111" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.60000002"
+ id="s16113" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="1"
+ id="s16115" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.6" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="310.39999"
+ y1="397.70001"
+ x2="310.89999"
+ y2="399.5"
+ id="lg6467"
+ xlink:href="#lg4280_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+ <linearGradient
+ x1="310.89999"
+ y1="395.79999"
+ x2="313.29999"
+ y2="403.10001"
+ id="lg4279_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0"
+ id="s16100" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.40000001"
+ id="s16102" />
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="0.89999998"
+ id="s16104" />
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="1"
+ id="s16106" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.4" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0.9" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="310.89999"
+ y1="395.79999"
+ x2="313.29999"
+ y2="403.10001"
+ id="lg6465"
+ xlink:href="#lg4279_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+ <linearGradient
+ x1="307.79999"
+ y1="395.20001"
+ x2="313.79999"
+ y2="413.60001"
+ id="lg4278_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0"
+ id="s16091" />
+ <stop
+ style="stop-color:#fcd72f;stop-opacity:1"
+ offset="0.40000001"
+ id="s16093" />
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="1"
+ id="s16095" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FCD72F"
+ offset="0.4" />
+ <ns:midPointStop
+ style="stop-color:#FCD72F"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="306.5"
+ y1="393"
+ x2="309"
+ y2="404"
+ id="lg6400"
+ xlink:href="#lg4278_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+ <linearGradient
+ x1="352.10001"
+ y1="253.60001"
+ x2="348.5"
+ y2="237.8"
+ id="lg4276_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+ <stop
+ style="stop-color:#ffff87;stop-opacity:1"
+ offset="0"
+ id="s16077" />
+ <stop
+ style="stop-color:#ffad00;stop-opacity:1"
+ offset="1"
+ id="s16079" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFAD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="335.60001"
+ y1="354.79999"
+ x2="337.89999"
+ y2="354.79999"
+ id="lg4275_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="s16057" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.80000001"
+ id="s16059" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="s16061" />
+ <ns:midPointStop
+ style="stop-color:#D9D9D9"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#D9D9D9"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.8" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="335.60001"
+ y1="354.79999"
+ x2="337.89999"
+ y2="354.79999"
+ id="lg6463"
+ xlink:href="#lg4275_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+ <linearGradient
+ x1="337.39999"
+ y1="353.10001"
+ x2="339.39999"
+ y2="357.10001"
+ id="lg4274_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s16048" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.1"
+ id="s16050" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s16052" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.1" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="337.39999"
+ y1="353.10001"
+ x2="339.39999"
+ y2="357.10001"
+ id="lg6461"
+ xlink:href="#lg4274_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+ <linearGradient
+ x1="334.39999"
+ y1="355.5"
+ x2="335.5"
+ y2="356.79999"
+ id="lg4273_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s16041" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s16043" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="5.6e-003" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="334.39999"
+ y1="355.5"
+ x2="335.5"
+ y2="356.79999"
+ id="lg6381"
+ xlink:href="#lg4273_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+ <linearGradient
+ x1="348.39999"
+ y1="247.39999"
+ x2="354.10001"
+ y2="242"
+ id="lg4271_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0"
+ id="s16025" />
+ <stop
+ style="stop-color:#9e9e9e;stop-opacity:1"
+ offset="0.40000001"
+ id="s16027" />
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="1"
+ id="s16029" />
+ <ns:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#000000"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="351.29999"
+ y1="257.29999"
+ x2="346.29999"
+ y2="235.5"
+ id="lg4270_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ffff87;stop-opacity:1"
+ offset="0"
+ id="s16007" />
+ <stop
+ style="stop-color:#ffad00;stop-opacity:1"
+ offset="1"
+ id="s16009" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFAD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="351.29999"
+ y1="257.29999"
+ x2="346.29999"
+ y2="235.5"
+ id="lg6459"
+ xlink:href="#lg4270_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+ <linearGradient
+ x1="43.799999"
+ y1="32.5"
+ x2="63.299999"
+ y2="66.400002"
+ id="XMLID_2708_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop75318" />
+ <stop
+ style="stop-color:#fffcea;stop-opacity:1"
+ offset="1"
+ id="stop75320" />
+ <a:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#FFFCEA"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="43.799999"
+ y1="32.5"
+ x2="63.299999"
+ y2="66.400002"
+ id="lg1907"
+ xlink:href="#XMLID_2708_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)" />
+ <linearGradient
+ x1="52.5"
+ y1="40.400002"
+ x2="58.200001"
+ y2="64"
+ id="XMLID_2707_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ffdea0;stop-opacity:1"
+ offset="0"
+ id="stop75305" />
+ <stop
+ style="stop-color:#ffd89e;stop-opacity:1"
+ offset="0.30000001"
+ id="stop75307" />
+ <stop
+ style="stop-color:#ffd79e;stop-opacity:1"
+ offset="0.30000001"
+ id="stop75309" />
+ <stop
+ style="stop-color:#dbaf6d;stop-opacity:1"
+ offset="0.69999999"
+ id="stop75311" />
+ <stop
+ style="stop-color:#6f4c24;stop-opacity:1"
+ offset="1"
+ id="stop75313" />
+ <a:midPointStop
+ style="stop-color:#FFDEA0"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#FFDEA0"
+ offset="0.6" />
+ <a:midPointStop
+ style="stop-color:#FFD79E"
+ offset="0.3" />
+ <a:midPointStop
+ style="stop-color:#FFD79E"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#DBAF6D"
+ offset="0.7" />
+ <a:midPointStop
+ style="stop-color:#DBAF6D"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#6F4C24"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="52.5"
+ y1="40.400002"
+ x2="58.200001"
+ y2="64"
+ id="lg1910"
+ xlink:href="#XMLID_2707_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)" />
+ <linearGradient
+ x1="58"
+ y1="73.199997"
+ x2="44.5"
+ y2="19"
+ id="XMLID_2704_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)">
+ <stop
+ style="stop-color:#d4a96c;stop-opacity:1"
+ offset="0.5"
+ id="stop75284" />
+ <stop
+ style="stop-color:#dcb273;stop-opacity:1"
+ offset="0.60000002"
+ id="stop75286" />
+ <stop
+ style="stop-color:#f0ca87;stop-opacity:1"
+ offset="0.80000001"
+ id="stop75288" />
+ <stop
+ style="stop-color:#ffdc96;stop-opacity:1"
+ offset="0.69999999"
+ id="stop75290" />
+ <stop
+ style="stop-color:#c18a42;stop-opacity:1"
+ offset="1"
+ id="stop75292" />
+ <a:midPointStop
+ style="stop-color:#D4A96C"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#D4A96C"
+ offset="0.6" />
+ <a:midPointStop
+ style="stop-color:#FFDC96"
+ offset="0.7" />
+ <a:midPointStop
+ style="stop-color:#FFDC96"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#C18A42"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="53.700001"
+ y1="32"
+ x2="53.700001"
+ y2="64.599998"
+ id="XMLID_2703_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e5c9b0;stop-opacity:1"
+ offset="0"
+ id="stop75268" />
+ <stop
+ style="stop-color:#e5c9b0;stop-opacity:1"
+ offset="0.40000001"
+ id="stop75270" />
+ <stop
+ style="stop-color:#c0aa94;stop-opacity:1"
+ offset="1"
+ id="stop75272" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0.4" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#C0AA94"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="53.700001"
+ y1="32"
+ x2="53.700001"
+ y2="64.599998"
+ id="lg1916"
+ xlink:href="#XMLID_2703_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)" />
+ <linearGradient
+ x1="224.31"
+ y1="19.450001"
+ x2="214.33"
+ y2="11.46"
+ id="XMLID_419_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#404040;stop-opacity:1"
+ offset="0"
+ id="s1903" />
+ <stop
+ style="stop-color:#6d6d6d;stop-opacity:1"
+ offset="0.33000001"
+ id="s1905" />
+ <stop
+ style="stop-color:#e9e9e9;stop-opacity:1"
+ offset="1"
+ id="s1907" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#404040" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#404040" />
+ <a:midPointStop
+ offset="0.33"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#E9E9E9" />
+ </linearGradient>
+ <linearGradient
+ x1="221.84"
+ y1="32.779999"
+ x2="212.2"
+ y2="20.27"
+ id="lg1988"
+ xlink:href="#XMLID_419_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+ <linearGradient
+ x1="228.35001"
+ y1="33.279999"
+ x2="215.42999"
+ y2="33.279999"
+ id="lg1900"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s1902" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="s1906" />
+ <a:midPointStop
+ style="stop-color:#575757"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#575757"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#6D6D6D"
+ offset="0.33" />
+ <a:midPointStop
+ style="stop-color:#6D6D6D"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#D3D3D3"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="234.81"
+ y1="33.279999"
+ x2="228.27"
+ y2="33.279999"
+ id="lg1908"
+ xlink:href="#lg1900"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+ <linearGradient
+ x1="228.35001"
+ y1="33.279999"
+ x2="215.42999"
+ y2="33.279999"
+ id="XMLID_416_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#575757;stop-opacity:1"
+ offset="0"
+ id="s1874" />
+ <stop
+ style="stop-color:#6d6d6d;stop-opacity:1"
+ offset="0.33000001"
+ id="s1876" />
+ <stop
+ style="stop-color:#d3d3d3;stop-opacity:1"
+ offset="1"
+ id="s1878" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#575757" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#575757" />
+ <a:midPointStop
+ offset="0.33"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#D3D3D3" />
+ </linearGradient>
+ <linearGradient
+ x1="228.35001"
+ y1="33.279999"
+ x2="215.42999"
+ y2="33.279999"
+ id="lg1991"
+ xlink:href="#XMLID_416_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+ <radialGradient
+ cx="603.19"
+ cy="230.77"
+ r="1.67"
+ fx="603.19"
+ fy="230.77"
+ id="x5010_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+ <stop
+ style="stop-color:#c9ffc9;stop-opacity:1"
+ offset="0"
+ id="stop29201" />
+ <stop
+ style="stop-color:#23a11f;stop-opacity:1"
+ offset="1"
+ id="stop29203" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#C9FFC9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#C9FFC9" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#23A11F" />
+ </radialGradient>
+ <radialGradient
+ cx="603.19"
+ cy="230.77"
+ r="1.67"
+ fx="603.19"
+ fy="230.77"
+ id="radialGradient5711"
+ xlink:href="#x5010_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+ <linearGradient
+ x1="592.31"
+ y1="162.60001"
+ x2="609.32001"
+ y2="145.59"
+ id="lg5722"
+ xlink:href="#x5003_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="601.48999"
+ y1="170.16"
+ x2="613.84003"
+ y2="170.16"
+ id="x5002_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop29134" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.2"
+ id="stop29136" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="stop29138" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.20"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#999999" />
+ </linearGradient>
+ <linearGradient
+ x1="601.48999"
+ y1="170.16"
+ x2="613.84003"
+ y2="170.16"
+ id="lg5725"
+ xlink:href="#x5002_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.23"
+ id="x5004_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop29157" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop29159" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.23"
+ id="lg5728"
+ xlink:href="#x5004_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="592.31"
+ y1="162.60001"
+ x2="609.32001"
+ y2="145.59"
+ id="x5003_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0"
+ id="stop29143" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="1"
+ id="stop29145" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#E5E5E5" />
+ </linearGradient>
+ <linearGradient
+ x1="592.31"
+ y1="162.60001"
+ x2="609.32001"
+ y2="145.59"
+ id="lg5732"
+ xlink:href="#x5003_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.24001"
+ id="x5000_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop29124" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop29126" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.24001"
+ id="lg5735"
+ xlink:href="#x5000_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="308.54999"
+ y1="149.89999"
+ x2="299.72"
+ y2="148.83"
+ id="XMLID_2433_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d6d6d6;stop-opacity:1"
+ offset="0"
+ id="71615" />
+ <stop
+ style="stop-color:#a5a5a5;stop-opacity:1"
+ offset="1"
+ id="71617" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D6D6D6" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D6D6D6" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#A5A5A5" />
+ </linearGradient>
+ <linearGradient
+ x1="308.54999"
+ y1="149.89999"
+ x2="299.72"
+ y2="148.83"
+ id="lg1952"
+ xlink:href="#XMLID_2433_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+ <radialGradient
+ cx="307.39999"
+ cy="121"
+ r="23.35"
+ fx="307.39999"
+ fy="121"
+ id="XMLID_2432_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0.19"
+ id="71592" />
+ <stop
+ style="stop-color:#cfcfcf;stop-opacity:1"
+ offset="0.44999999"
+ id="71594" />
+ <stop
+ style="stop-color:#c7c7c7;stop-opacity:1"
+ offset="0.60000002"
+ id="71596" />
+ <stop
+ style="stop-color:#b9b9b9;stop-opacity:1"
+ offset="0.74000001"
+ id="71598" />
+ <stop
+ style="stop-color:#a4a4a4;stop-opacity:1"
+ offset="0.86000001"
+ id="71600" />
+ <stop
+ style="stop-color:#8a8a8a;stop-opacity:1"
+ offset="0.95999998"
+ id="71602" />
+ <stop
+ style="stop-color:gray;stop-opacity:1"
+ offset="1"
+ id="71604" />
+ <a:midPointStop
+ offset="0.19"
+ style="stop-color:#D2D2D2" />
+ <a:midPointStop
+ offset="0.8"
+ style="stop-color:#D2D2D2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#808080" />
+ </radialGradient>
+ <radialGradient
+ cx="307.39999"
+ cy="121"
+ r="23.35"
+ fx="307.39999"
+ fy="121"
+ id="radialGradient2331"
+ xlink:href="#XMLID_2432_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-276.62,-121.54)" />
+ <linearGradient
+ x1="294.13"
+ y1="127.07"
+ x2="294.13"
+ y2="142.2"
+ id="XMLID_2430_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b5d8ff;stop-opacity:1"
+ offset="0"
+ id="71582" />
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="1"
+ id="71584" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B5D8FF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B5D8FF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#000000" />
+ </linearGradient>
+ <linearGradient
+ x1="294.13"
+ y1="127.07"
+ x2="294.13"
+ y2="142.2"
+ id="lg2820"
+ xlink:href="#XMLID_2430_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+ <linearGradient
+ x1="279.10999"
+ y1="148.03"
+ x2="309.16"
+ y2="148.03"
+ id="XMLID_2429_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e1e1e1;stop-opacity:1"
+ offset="0"
+ id="71564" />
+ <stop
+ style="stop-color:#e1e1e1;stop-opacity:1"
+ offset="0.25"
+ id="71566" />
+ <stop
+ style="stop-color:#a5a5a5;stop-opacity:1"
+ offset="0.44"
+ id="71568" />
+ <stop
+ style="stop-color:#a5a5a5;stop-opacity:1"
+ offset="1"
+ id="71570" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.25"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.44"
+ style="stop-color:#A5A5A5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#A5A5A5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#A5A5A5" />
+ </linearGradient>
+ <linearGradient
+ x1="279.10999"
+ y1="148.03"
+ x2="309.16"
+ y2="148.03"
+ id="lg2818"
+ xlink:href="#XMLID_2429_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+ <radialGradient
+ cx="622.34302"
+ cy="14.449"
+ r="26.496"
+ fx="622.34302"
+ fy="14.449"
+ id="lg3499_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+ <stop
+ style="stop-color:#23468e;stop-opacity:1"
+ offset="0"
+ id="stop10972" />
+ <stop
+ style="stop-color:#012859;stop-opacity:1"
+ offset="1"
+ id="stop10974" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#23468E" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#23468E" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#012859" />
+ </radialGradient>
+ <radialGradient
+ cx="622.34302"
+ cy="14.449"
+ r="26.496"
+ fx="622.34302"
+ fy="14.449"
+ id="rg5791"
+ xlink:href="#lg3499_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+ <linearGradient
+ x1="616.112"
+ y1="76.247002"
+ x2="588.14099"
+ y2="60.742001"
+ id="lg3497_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#01326e;stop-opacity:1"
+ offset="0"
+ id="stop10962" />
+ <stop
+ style="stop-color:#012859;stop-opacity:1"
+ offset="1"
+ id="stop10964" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#01326E" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#01326E" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#012859" />
+ </linearGradient>
+ <linearGradient
+ x1="617.698"
+ y1="82.445999"
+ x2="585.95203"
+ y2="54.848999"
+ id="lg3496_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="stop10950" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop10952" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="617.698"
+ y1="82.445999"
+ x2="585.95203"
+ y2="54.848999"
+ id="lg5794"
+ xlink:href="#lg3496_"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="601.39001"
+ y1="55.341"
+ x2="588.29199"
+ y2="71.515999"
+ id="lg3495_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop10941" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.52200001"
+ id="stop10943" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop10945" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.522"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="601.39001"
+ y1="55.341"
+ x2="588.29199"
+ y2="71.515999"
+ id="lg5771"
+ xlink:href="#lg3495_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+ <linearGradient
+ x1="611.34601"
+ y1="55.279999"
+ x2="590.39001"
+ y2="81.157997"
+ id="lg3494_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop10932" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.52200001"
+ id="stop10934" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop10936" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.522"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="611.34601"
+ y1="55.279999"
+ x2="590.39001"
+ y2="81.157997"
+ id="lg5774"
+ xlink:href="#lg3494_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+ <linearGradient
+ x1="798.72998"
+ y1="69.839996"
+ x2="799.04999"
+ y2="70.709999"
+ id="g3302_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#005e00;stop-opacity:1"
+ offset="0"
+ id="s6504" />
+ <stop
+ style="stop-color:#23a11f;stop-opacity:1"
+ offset="1"
+ id="s6506" />
+ <a:midPointstop
+ style="stop-color:#005E00"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#005E00"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#23A11F"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="798.72998"
+ y1="69.839996"
+ x2="799.04999"
+ y2="70.709999"
+ id="lg5851"
+ xlink:href="#g3302_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+ <linearGradient
+ x1="779.19"
+ y1="122.73"
+ x2="811.69"
+ y2="149.74001"
+ id="g3301_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0"
+ id="s6483" />
+ <stop
+ style="stop-color:#eee;stop-opacity:1"
+ offset="0.17"
+ id="s6485" />
+ <stop
+ style="stop-color:#e3e3e3;stop-opacity:1"
+ offset="0.34"
+ id="s6487" />
+ <stop
+ style="stop-color:#cfcfcf;stop-opacity:1"
+ offset="0.50999999"
+ id="s6489" />
+ <stop
+ style="stop-color:#b4b4b4;stop-opacity:1"
+ offset="0.67000002"
+ id="s6491" />
+ <stop
+ style="stop-color:#919191;stop-opacity:1"
+ offset="0.83999997"
+ id="s6493" />
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="1"
+ id="s6495" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.71" />
+ <a:midPointstop
+ style="stop-color:#666666"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="779.19"
+ y1="122.73"
+ x2="811.69"
+ y2="149.74001"
+ id="lg5855"
+ xlink:href="#g3301_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+ <clipPath
+ id="g3299_">
+ <use
+ id="use6469"
+ x="0"
+ y="0"
+ width="1005.92"
+ height="376.97"
+ xlink:href="#g101_" />
+ </clipPath>
+ <radialGradient
+ cx="1189.9301"
+ cy="100.05"
+ r="40.400002"
+ fx="1189.9301"
+ fy="100.05"
+ id="g3300_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s6472" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="s6474" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#000000"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1199.74"
+ cy="97.150002"
+ r="40.400002"
+ fx="1199.74"
+ fy="97.150002"
+ id="rg5860"
+ xlink:href="#g3300_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+ <linearGradient
+ x1="796.38"
+ y1="67.580002"
+ x2="781.28003"
+ y2="58.549999"
+ id="g3298_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#4c8bca;stop-opacity:1"
+ offset="0"
+ id="s6462" />
+ <stop
+ style="stop-color:#b7e9ff;stop-opacity:1"
+ offset="1"
+ id="s6464" />
+ <a:midPointstop
+ style="stop-color:#4C8BCA"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#4C8BCA"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B7E9FF"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="800.97998"
+ y1="140.72"
+ x2="777.71997"
+ y2="121.76"
+ id="g3297_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="s6448" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s6450" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="800.97998"
+ y1="140.72"
+ x2="777.71997"
+ y2="121.76"
+ id="lg5890"
+ xlink:href="#g3297_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+ <linearGradient
+ x1="790.03998"
+ y1="-16.33"
+ x2="779.84003"
+ y2="-3.73"
+ id="g3296_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,70.17)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="s6439" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.51999998"
+ id="s6441" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s6443" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.52" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="790.03998"
+ y1="-16.33"
+ x2="779.84003"
+ y2="-3.73"
+ id="lg5866"
+ xlink:href="#g3296_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+ <linearGradient
+ x1="785.84003"
+ y1="72.989998"
+ x2="785.26001"
+ y2="76.279999"
+ id="g3293_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s6412" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="1"
+ id="s6414" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#737373"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="785.84003"
+ y1="72.989998"
+ x2="785.26001"
+ y2="76.279999"
+ id="lg5871"
+ xlink:href="#g3293_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+ <linearGradient
+ x1="789.37"
+ y1="69.879997"
+ x2="791.03998"
+ y2="77.120003"
+ id="g3292_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="0"
+ id="s6403" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.28"
+ id="s6405" />
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="1"
+ id="s6407" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.28" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#666666"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="789.37"
+ y1="69.879997"
+ x2="791.03998"
+ y2="77.120003"
+ id="lg5874"
+ xlink:href="#g3292_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+ <linearGradient
+ x1="786.65997"
+ y1="136.12"
+ x2="786.71002"
+ y2="134.33"
+ id="g3290_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="s6380" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="1"
+ id="s6382" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="786.65997"
+ y1="136.12"
+ x2="786.71002"
+ y2="134.33"
+ id="lg5878"
+ xlink:href="#g3290_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+ <radialGradient
+ cx="1458.77"
+ cy="-5.0999999"
+ r="35.130001"
+ fx="1458.77"
+ fy="-5.0999999"
+ id="g3289_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s6371" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="s6373" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1458.77"
+ cy="-5.0999999"
+ r="35.130001"
+ fx="1458.77"
+ fy="-5.0999999"
+ id="rg5881"
+ xlink:href="#g3289_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+ <radialGradient
+ cx="1612.98"
+ cy="-4.4699998"
+ r="36.580002"
+ fx="1612.98"
+ fy="-4.4699998"
+ id="g3288_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="s6362" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0.63999999"
+ id="s6364" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="1"
+ id="s6366" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.64" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#737373"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1612.98"
+ cy="-4.4699998"
+ r="36.580002"
+ fx="1612.98"
+ fy="-4.4699998"
+ id="rg5884"
+ xlink:href="#g3288_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+ <radialGradient
+ cx="1470.5"
+ cy="-10.21"
+ r="33.290001"
+ fx="1470.5"
+ fy="-10.21"
+ id="g3287_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="s6347" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0.38999999"
+ id="s6349" />
+ <stop
+ style="stop-color:#b1b1b1;stop-opacity:1"
+ offset="0.75"
+ id="s6351" />
+ <stop
+ style="stop-color:#aaa;stop-opacity:1"
+ offset="0.88"
+ id="s6353" />
+ <stop
+ style="stop-color:#9e9e9e;stop-opacity:1"
+ offset="0.97000003"
+ id="s6355" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="s6357" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.39" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.87" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1470.5"
+ cy="-10.21"
+ r="33.290001"
+ fx="1470.5"
+ fy="-10.21"
+ id="rg5887"
+ xlink:href="#g3287_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+ <pattern
+ patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+ id="cream-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-365.3146,-513.505)"
+ id="g3047">
+ id="path2858" />
+ <path
+ inkscape:label="#path2854"
+ sodipodi:nodetypes="czzzz"
+ style="fill:#e3dcc0"
+ id="path3060"
+ d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504
381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C
372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504
390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+ </pattern>
+ <pattern
+ patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+ id="dark-cream-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-408.0946,-513.505)"
+ id="dark-cream-spot"
+ inkscape:label="#g3043">
+ <path
+ sodipodi:nodetypes="czzzz"
+ style="fill:#c8c5ac"
+ d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504
424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C
415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504
433.09458,524.53704 433.09458,529.50504 z "
+ id="path2953" />
+ </g>
+ </pattern>
+ <pattern
+ patternTransform="matrix(0.375,0,0,0.375,379,400)"
+ id="white-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-484.3997,-513.505)"
+ id="white-spot"
+ inkscape:label="#g3035">
+ <path
+ style="opacity:0.25;fill:white"
+ id="path3033"
+ d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504
500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C
491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504
509.39967,524.53704 509.39967,529.50504 z "
+ sodipodi:nodetypes="czzzz" />
+ </g>
+ </pattern>
+ <pattern
+ patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+ id="black-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-448.3997,-513.505)"
+ id="black-spot"
+ inkscape:label="#g3039">
+ <path
+ sodipodi:nodetypes="czzzz"
+ d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504
464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C
455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504
473.39967,524.53704 473.39967,529.50504 z "
+ id="path2961"
+ style="opacity:0.25;fill:black" />
+ </g>
+ </pattern>
+ <linearGradient
+ x1="501.0903"
+ y1="-19.2544"
+ x2="531.85413"
+ y2="0.72390002"
+ id="linearGradient17334"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop17336" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop17338" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop17340" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop17342" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.5112"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.6461"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#16336E" />
+ </linearGradient>
+ <linearGradient
+ x1="415.73831"
+ y1="11.854"
+ x2="418.13361"
+ y2="18.8104"
+ id="linearGradient17426"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="0"
+ id="stop17428" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop17430" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#F2F2F2" />
+ </linearGradient>
+ <linearGradient
+ x1="478.21341"
+ y1="-131.9297"
+ x2="469.85818"
+ y2="-140.28481"
+ id="linearGradient17434"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop17436" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop17438" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop17440" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop17442" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#F3403F" />
+ <a:midPointStop
+ offset="0.4213"
+ style="stop-color:#F3403F" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#A6100C" />
+ </linearGradient>
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17709"
+ xlink:href="#XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17711"
+ xlink:href="#XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="linearGradient17713"
+ xlink:href="#XMLID_1753_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17715"
+ xlink:href="#XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
+ <linearGradient
+ x1="500.70749"
+ y1="-13.2441"
+ x2="513.46442"
+ y2="-2.1547"
+ id="linearGradient17717"
+ xlink:href="#XMLID_1757_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="linearGradient17721"
+ xlink:href="#XMLID_2274_"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="linearGradient17723"
+ xlink:href="#XMLID_2275_"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="500.70749"
+ y1="-13.2441"
+ x2="513.46442"
+ y2="-2.1547"
+ id="linearGradient17416"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop17418" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop17420" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <defs
+ id="defs9929">
+ <path
+ d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93
471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49
473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49
475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+ id="XMLID_960_" />
+ </defs>
+ <clipPath
+ id="clipPath17448">
+ <use
+ id="use17450"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_960_" />
+ </clipPath>
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="linearGradient17452"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop17454" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop17456" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop17458" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop17460" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="linearGradient17463"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop17465" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop17467" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop17469" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop17471" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="linearGradient17807"
+ xlink:href="#XMLID_2275_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-177.1654,35.43307)" />
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="linearGradient17810"
+ xlink:href="#XMLID_2274_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-177.1654,35.43307)" />
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17812"
+ xlink:href="#XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17814"
+ xlink:href="#XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="linearGradient17816"
+ xlink:href="#XMLID_1753_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17818"
+ xlink:href="#XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17347"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop17349" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop17351" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#96BAD6" />
+ </linearGradient>
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="linearGradient17379"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop17381" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop17383" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#F2F2F2" />
+ </linearGradient>
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17862"
+ xlink:href="#XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)"
/>
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17864"
+ xlink:href="#XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
+ <defs
+ id="defs3859">
+ <polygon
+ points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05
471.08,194.07 470.26,194.83 465.54,213.52 "
+ id="XMLID_343_" />
+ </defs>
+ <linearGradient
+ x1="471.0806"
+ y1="201.07761"
+ x2="481.91711"
+ y2="210.4977"
+ id="linearGradient17389"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#6498c1;stop-opacity:1"
+ offset="0.005618"
+ id="stop17391" />
+ <stop
+ style="stop-color:#79a9cc;stop-opacity:1"
+ offset="0.2332"
+ id="stop17393" />
+ <stop
+ style="stop-color:#a4cde2;stop-opacity:1"
+ offset="0.74049997"
+ id="stop17395" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="1"
+ id="stop17397" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="5.618000e-003" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="0.4438" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath17400">
+ <use
+ id="use17402"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_343_" />
+ </clipPath>
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17404"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop17406" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop17408" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop17410" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop17412" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17882"
+ xlink:href="#XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
+ <defs
+ id="defs3826">
+ <polygon
+ points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04
469.05,196.69 468.24,197.45 463.52,216.14 "
+ id="XMLID_338_" />
+ </defs>
+ <linearGradient
+ x1="468.2915"
+ y1="204.7612"
+ x2="479.39871"
+ y2="214.4166"
+ id="linearGradient17357"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop17359" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop17361" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath17364">
+ <use
+ id="use17366"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_338_" />
+ </clipPath>
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17368"
+ gradientUnits="userSpaceOnUse"
+
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop17370" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop17372" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop17374" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop17376" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398"
+ id="linearGradient2387"
+ xlink:href="#linearGradient2381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+ <linearGradient
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398"
+ id="linearGradient5105"
+ xlink:href="#linearGradient2381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+ <linearGradient
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398"
+ id="linearGradient5145"
+ xlink:href="#linearGradient2381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2381"
+ id="linearGradient2371"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398" />
+ </defs>
+ <g
+
transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+ id="g5089">
+ <path
+ d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875
L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C
31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L
32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375
C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+ transform="translate(282.8327,227.1903)"
+
style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path5091" />
+ <rect
+ width="27.85074"
+ height="29.369793"
+ rx="1.1414107"
+ ry="1.1414107"
+ x="286.96509"
+ y="227.63805"
+ style="fill:#032c87"
+ id="rect5093" />
+ <path
+ d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L
287.29827,254.83069 L 288.43262,225.43675 z "
+ style="fill:white"
+ id="rect5095" />
+ <path
+ d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091
301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C
307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432
309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+ style="fill:#a70000;fill-opacity:1;stroke-width:2"
+ id="path5097" />
+ <rect
+ width="25.241802"
+ height="29.736675"
+ rx="0.89682275"
+ ry="0.89682275"
+ x="290.73544"
+ y="220.92249"
+ style="fill:#809cc9"
+ id="rect5099" />
+ <path
+ d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C
581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C
574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+ transform="matrix(0.499065,-0.866565,0,1,0,0)"
+ style="fill:#4573b3;fill-opacity:1"
+ id="rect5101" />
+ <path
+ d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363
314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124
292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363
293.2599,221.89363 z "
+ style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+ id="path5103" />
+ </g>
+</svg>
diff --git a/doc/Revisor_Documentation/en-US/Appendix.xml
b/doc/Revisor_Documentation/en-US/Appendix.xml
deleted file mode 100644
index 01258fb..0000000
--- a/doc/Revisor_Documentation/en-US/Appendix.xml
+++ /dev/null
@@ -1,475 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<part id="Revisor_Documentation-Appendices">
- <title>Appendices</title>
-
- <appendix id="Revisor_Documentation-Appendix-Terminology"
label="A">
- <title>Terminology</title>
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-model">
- <title>Model</title>
- <indexterm>
- <primary>model</primary>
- </indexterm>
- <para>
- A model in Revisor describes a product.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-package_manifest">
- <title>Package Manifest</title>
- <indexterm>
- <primary>Package Manifest</primary>
- </indexterm>
- <para>
- A package manifest is the list of groups and packages to include or
exclude from a transaction, in a kickstart configuration file.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-Remix">
- <title>Remix</title>
- <indexterm>
- <primary>Remix</primary>
- </indexterm>
- <para>
- A Fedora Remix is a product based on Fedora, with Fedora packages and
optionally, other packages as well, such as those from third-party repositories.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-Re-Spin">
- <title>Re-Spin</title>
- <indexterm>
- <primary>Re-Spin</primary>
- <secondary>Fedora Unity Re-Spin</secondary>
- </indexterm>
- <para>
- A Fedora Re-Spin is a product that is composed for the single purpose of
including updated software packages into the product. It uses the same compose procedure
as the media that the Fedora Project composes and releases, but includes updates.
- </para>
- </formalpara>
- <para>
- Fedora Unity releases Fedora Re-Spins every so often, twice or trice per
release.
- </para>
-
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-Spin">
- <title>Spin</title>
- <indexterm>
- <primary>Spin</primary>
- </indexterm>
- <para>
- A Fedora Spin is a custom set of software packages, often for a specific
audience. Spins include a KDE Spin, which contains KDE software packages rather then the
Desktop spin, which is based around GNOME. Similarly, there are XFCE, LXDE, Sugar,
Education, Games and Developer Spins.
- </para>
- </formalpara>
- <para>
- Fedora Spins have gone through the Spins Process (<ulink
url="http://fedoraproject.org/wiki/Spins_Process" />), and have been approved
trademark usage by the Fedora Project Board.
- </para>
-
- <formalpara
id="Revisor_Documentation-Appendix-Terminology-Package_Sack">
- <title>Package Sack</title>
- <indexterm>
- <primary>Package Sack</primary>
- </indexterm>
- <para>
- When YUM creates a list of packages available from the repositories
configured, including package metadata such as dependencies and provided capabilities for
each package, YUM creates a PackageSack. It's basically a large bag with all Package
Objects, filtered by compatible architectures for the configured architecture.
- </para>
- </formalpara>
- </appendix>
-
- <appendix id="Revisor_Documentation-Appendix-Configuration_Reference"
label="B">
- <title>Configuration Reference</title>
- <para>
- This is the configuration reference for Revisor. Options are listed in
alphabetical order.
- </para>
-
- <section
id="Revisor_Documentation-Appendix-Configuration_Reference-Media_Options">
- <title>Configuration Options</title>
- <para>
- <table>
- <title>Configuration Options</title>
- <tgroup cols="4" title="Configuration
Options">
- <colspec colname="column1" colwidth="1*"
/>
- <colspec colname="column25" colwidth="4*"
/>
- <colspec colname="column67" colwidth="2*"
/>
- <colspec colname="column89" colwidth="2*"
/>
- <thead>
- <row>
- <entry namest="column1"
nameend="column89" align="center">Configuration
Options</entry>
- </row>
- <row>
- <entry namest="column1"
nameend="column25">Configuration Directive</entry>
- <entry namest="column67"
nameend="column89">CLI Option</entry>
- </row>
- <row>
- <entry
namest="column1"> </entry>
- <entry namest="column25">Possible
Values</entry>
- <entry>Default</entry>
- <entry>Context</entry>
- </row>
- <row>
- <entry
namest="column1"> </entry>
- <entry namest="column25"
nameend="column67">Description</entry>
- <entry
namest="column89"> </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry namest="column1"
nameend="column25"><literal>answer_yes</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>-y</literal>,
<literal>--yes</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Answer <emphasis>yes</emphasis> to all
questions.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>clean_up</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--clean-up</literal></entry>
- </row>
- <row>
- <entry namest="column25">0, 1,
2</entry>
- <entry>1</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Should Revisor not clean up at all (0), clean up it's
temporary build data (1), or everything -this includes the yum cache (2).</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>copy_dir</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--copy-dir</literal></entry>
- </row>
- <row>
- <entry
namest="column25"><code>[dir]</code></entry>
- <entry>False</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">A directory tree to copy onto the media created. In the
case of installation media, the contents of the directory specified are copied onto
<code>cdrom:/files/</code>. In the case of live media, the contents of the
directory specified are copied onto the root filesystem of the live system.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>copy_local</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--copy-local</literal></entry>
- </row>
- <row>
- <entry
namest="column25"> </entry>
- <entry>False</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Tell Revisor to copy files, even when they are local. This
applies to relative corner-cases where the repositories or the
<code>destination_directory</code> is mounted over NFS, and some actions
cannot be performed.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>debuglevel</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>-d</literal>,
<literal>--debug</literal></entry>
- </row>
- <row>
- <entry namest="column25">0 -
9</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">The level of debugging. 0 is the lowest debug level,
whereas 9 is the highest. Revisor turns up the volume quickly. The logfile on debug level
9 may very easily become 20-30MB.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>destination_directory</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--destination-directory</literal></entry>
- </row>
- <row>
- <entry
namest="column25"><code>/srv/revisor/</code></entry>
-
<entry><code>[path]</code></entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">The destination directory for the product. Revisor creates
a sub-directory with the name of the model used, and places the product in that
directory.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>getsource</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--source</literal></entry>
- </row>
- <row>
- <entry
namest="column25"> </entry>
- <entry>False</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to obtain the source along with the binary RPMs
used. This is False by default, and therefor the source is not included by default. Note
that if you are distributing your product to third parties, you need to be able to provide
the sources along with the binary product.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>include_bootiso</literal></entry>
- <entry namest="column67"
nameend="column89"><literal> </literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to include the relatively large boot.iso on the
optical installation media created. Setting this to 0 will still include boot.iso in the
installation tree created (if configured with
<code>media_installation_tree</code><footnote><para>Note that the
installation tree is always created. See <xref
linkend="Revisor_Documentation-Compose_Process_Details" /> for more
details.</para></footnote>)</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>kickstart_default</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--kickstart-default</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to set the isolinux.cfg entry that makes the
installer use the kickstart included on the media, as a default.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>kickstart_exact</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--kickstart-exact</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Tells Revisor to ignore @core and @base groups (like with
<code>%packages --nobase</code>) and only add what is in the package
manifest.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>kickstart_exact_nevra</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--kickstart-exact-nevra</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Tells Revisor to only add what is in the package manifest.
In addition, if the transaction changes (because of dependency resolving, for example),
Revisor will stop composing.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>kickstart_file</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--kickstart</literal></entry>
- </row>
- <row>
- <entry
namest="column25"><code>[file]</code></entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">What kickstart file to use. When in CLI mode, this is a
mandatory setting.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>kickstart_include</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--kickstart-include</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to include the kickstart on the media so that the
installer may find it as <filename>cdrom:/ks.cfg</filename>.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>kickstart_save</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--kickstart-save</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Where to save the resulting kickstart. In GUI mode, when
changes to the package set can be applied, saves those changes out into a new kickstart
file.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>media_installation_bluray_duallayer</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--install-bluray-dl</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to create Bluray Duallayer installation media
(47GiB).</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>media_installation_bluray</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--install-bluray</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to create Bluray installation media
(23GiB).</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>media_installation_bluray_duallayer</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--install-bluray-dl</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to create Bluray Duallayer installation media
(47GiB).</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>media_installation_cd</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--install-cd</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to create CD installation media
(685MiB).</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>media_installation_dvd</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--install-dvd</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to create DVD installation media
(4.3GiB).</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>media_installation_dvd_duallayer</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--install-dvd-dl</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to create DVD Duallayer installation media
(8.0GiB).</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>media_installation_tree</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--install-tree</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to create a an installation
tree<footnote><para>Note that the installation tree is always created. See
<xref linkend="Revisor_Documentation-Compose_Process_Details" /> for more
details.</para></footnote> (for publication over HTTP or FTP, or through
Cobbler). No size limit.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>media_installation_unified</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--install-unified</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to create a unified ISO, installation media (no
size limit).</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>media_live_optical</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--live-optical</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether to create Optical Live media (size
unknown).</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>model</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--model</literal></entry>
- </row>
- <row>
- <entry
namest="column25"> </entry>
-
<entry><code>[model]</code></entry>
- <entry>global</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">The model to use.</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>report_sizes</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--report_sizes</literal></entry>
- </row>
- <row>
- <entry namest="column25">0,
1</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Report the sizes of RPM packages used. Lists the biggest
packages in the transaction</entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>mode_respin</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>--respin</literal></entry>
- </row>
- <row>
- <entry
namest="column25"> </entry>
- <entry>False</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">Whether Revisor should operate in
<emphasis>respin</emphasis> mode. See also <xref
linkend="Revisor_Documentation-Compose_Process_Details-Respin_Mode"
/></entry>
- </row>
-
- <row>
- <entry namest="column1"
nameend="column25"><literal>working_directory</literal></entry>
- <entry namest="column67"
nameend="column89"><literal>-d</literal>,
<literal>--debug</literal></entry>
- </row>
- <row>
- <entry namest="column25">0 -
9</entry>
- <entry>0</entry>
- <entry>global, model</entry>
- </row>
- <row>
- <entry namest="column25"
nameend="column89">The level of debugging. 0 is the lowest debug level,
whereas 9 is the highest. Revisor turns up the volume quickly. The logfile on debug level
9 may very easily become 20-30MB.</entry>
- </row>
-
- </tbody>
- </tgroup>
- </table>
- </para>
-
- </section>
-
- </appendix>
-
-</part>
diff --git a/doc/Revisor_Documentation/en-US/Author_Group.xml
b/doc/Revisor_Documentation/en-US/Author_Group.xml
deleted file mode 100644
index 37b4bf5..0000000
--- a/doc/Revisor_Documentation/en-US/Author_Group.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<authorgroup>
- <author>
- <firstname>Jeroen</firstname>
- <surname>van Meeuwen</surname>
- <lineage>RHCE</lineage>
- <affiliation>
- <orgname>Fedora Project</orgname>
- <orgdiv>Contributor</orgdiv>
- </affiliation>
- <email>kanarip(a)fedoraproject.org</email>
- </author>
-</authorgroup>
diff --git a/doc/Revisor_Documentation/en-US/Book_Info.xml
b/doc/Revisor_Documentation/en-US/Book_Info.xml
deleted file mode 100644
index 7a9e7d8..0000000
--- a/doc/Revisor_Documentation/en-US/Book_Info.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<bookinfo id="Revisor_Documentation-Documentation">
- <title>Complete Reference</title>
- <subtitle>Revisor Complete Installation, Configuration and Tweaking
Reference</subtitle>
- <productname>Revisor</productname>
- <productnumber>2.1.5</productnumber>
-
-<!--
- <edition>0</edition>
- <pubsnumber>0</pubsnumber>
-//-->
- <abstract>
- <para>
- This is Revisors upstream documentation.
- </para>
- </abstract>
- <corpauthor>
- <inlinemediaobject>
- <imageobject>
- <imagedata format='SVG'
fileref="Common_Content/images/title_logo.svg" />
- </imageobject>
- <textobject><phrase>Logo</phrase></textobject>
- </inlinemediaobject>
- </corpauthor>
- <copyright>
- <year>&YEAR;</year>
- <holder>&HOLDER;</holder>
- </copyright>
- <xi:include href="Common_Content/Legal_Notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Author_Group.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-</bookinfo>
-
-
-
diff --git a/doc/Revisor_Documentation/en-US/Complete_Reference.ent
b/doc/Revisor_Documentation/en-US/Complete_Reference.ent
deleted file mode 100644
index 9282cde..0000000
--- a/doc/Revisor_Documentation/en-US/Complete_Reference.ent
+++ /dev/null
@@ -1,5 +0,0 @@
-<!ENTITY PRODUCT "Documentation">
-<!ENTITY BOOKID "Revisor_Documentation">
-<!ENTITY YEAR "2008">
-<!ENTITY HOLDER "Jeroen van Meeuwen">
-
diff --git a/doc/Revisor_Documentation/en-US/Complete_Reference.xml
b/doc/Revisor_Documentation/en-US/Complete_Reference.xml
deleted file mode 100644
index 757504d..0000000
--- a/doc/Revisor_Documentation/en-US/Complete_Reference.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<book>
- <xi:include href="Book_Info.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Preface.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
- <xi:include href="Revisor_Documentation-Introduction.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Features.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Installation.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Using_Kickstart.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Compose_Process_Details.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Plugins.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Tweaking_The_Build_Process.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Tips_and_Tricks.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Frequently_Asked_Questions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Testing.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Development.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
- <xi:include href="Revision_History.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <index />
- <xi:include href="Appendix.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
-</book>
-
diff --git a/doc/Revisor_Documentation/en-US/Preface.xml
b/doc/Revisor_Documentation/en-US/Preface.xml
deleted file mode 100644
index 02af0ea..0000000
--- a/doc/Revisor_Documentation/en-US/Preface.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<preface id="Revisor_Documentation-Preface">
- <title>Preface</title>
- <para>
- This is the documentation for Revisor, a utility to create and customize your own
Linux distribution based on Fedora, Red Hat Enterprise Linux or CentOS.
- </para>
-
- <section id="Revisor_Documentation-Preface-About_The_Contributors">
- <title>About the Contributors</title>
- <formalpara>
- <title>Author</title>
- <para>
- <emphasis>Jeroen van Meeuwen</emphasis> (RHCE, LPIC-2, MCP,
CCNA) is currently a Senior System Engineer, specialized in Linux systems and Systems
Architecture, working for Operator Groep Delft in The Netherlands. His experience with
computers goes back to the early '90s, with a Philips P2000T being over a decade old,
little tapes containing programs but most importantly games, and 16K memory cartridges.
Since 1998, he has been involved with Red Hat Linux (5.2 at that time), and was an early
adopter of Fedora Core Linux in November 2003, until his first real contributions to Free
and Open Source Software were made in 2005.
- </para>
- </formalpara>
- <para>
- As a contributor to Free and Open Source Software within the Fedora
community, amongst other programs, Jeroen has developed Revisor, a Python framework to
build distributions with. With regards to Configuration Management, Jeroen currently
maintains or co-maintains -amongst other packages- the entire stack of packages related to
Puppet
- </para>
-
- <formalpara>
- <title>Contributors</title>
- <para>
- <emphasis>Jonathan Steffan</emphasis> is a community
volunteer based in Colorado, USA, and has a long standing record within Fedora for
packaging Zope (Web Application Server), Plone (Open Source Content Management System),
providing compat-python2.4 packages for Fedora 7 and 8, and voluntarily administering the
Fedora Unity servers, Zope and Plone instances, creating and further developing Revisor
and pyJigdo.
- </para>
- </formalpara>
- </section>
-
- <section id="Revisor_Documentation-Preface-About_Fedora_Unity">
- <title>About Fedora Unity</title>
- <para>
- The Fedora Unity Project consists of a group of concerned peers from within
the Fedora community that strive to bring the best possible solutions to the community, in
a consistent manner. This, amongst other things, resulted in extensive documentation on
various topics often referred to on the Web, published under the Open Documentation
License v1.0.
- </para>
- <para>
- The Fedora Unity Project is a different project then the official Fedora
Project. The people behind the Fedora Unity Project often contribute to the Fedora Project
directly as well, but there's little to no bureaucracy in the Fedora Unity Project.
Why do you think these Re-Spins are not released by the Fedora Project itself?
- </para>
- </section>
-
- <section id="Revisor_Documentation-Preface-About_This_Document">
- <title>About this Document</title>
- <para>
- This document is licensed under the Open Publication License version 1.0,
which is available at <ulink
url="http://www.opencontent.org/openpub/" />.
You can get the latest version from <ulink
url="http://kanarip.fedorapeople.org/Revisor_Documentation/en-US/pdf...
/> (PDF), and it's sources live at <ulink
url="http://git.fedorahosted.org/git/?p=revisor;a=tree;f=doc" />.
- </para>
- </section>
-
- <xi:include href="Common_Content/Conventions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
- <xi:include href="Feedback.xml"
xmlns:xi="http://www.w3.org/2001/XInclude">
- <xi:fallback
xmlns:xi="http://www.w3.org/2001/XInclude">
- <xi:include href="Common_Content/Feedback.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- </xi:fallback>
- </xi:include>
-
-</preface>
diff --git a/doc/Revisor_Documentation/en-US/Revision_History.xml
b/doc/Revisor_Documentation/en-US/Revision_History.xml
deleted file mode 100644
index 68432a0..0000000
--- a/doc/Revisor_Documentation/en-US/Revision_History.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<appendix id="appe-Publican-Revision_History">
- <title>Revision History</title>
- <simpara>
- <revhistory>
- <revision>
- <revnumber>1.0</revnumber>
- <date></date>
- <author>
- <firstname></firstname>
- <surname></surname>
- <email></email>
- </author>
- <revdescription>
- <simplelist>
- <member></member>
- </simplelist>
- </revdescription>
- </revision>
- </revhistory>
- </simpara>
-</appendix>
-
diff --git
a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Compose_Process_Details.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Compose_Process_Details.xml
deleted file mode 100644
index 64515ff..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Compose_Process_Details.xml
+++ /dev/null
@@ -1,431 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Compose_Process_Details">
- <title>Compose Process Details</title>
- <para>
- This chapter lists the details of the compose process as well as dives deep into
the features of Revisor.
- </para>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Overview">
- <title>Overview</title>
- <titleabbrev
id="Compose_Process_Details-Overview">Overview</titleabbrev>
- <para>
- Of course, the compose process for installation media is a little different
then the compose process for live media.
- </para>
- <para>
- When composing, Revisor starts out doing the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Revisor initiates and loads plugins, options, and defaults. At
this point, Revisor has a so-called <emphasis>ConfigStore</emphasis> that
holds all options Revisor knows about.
- </para>
- </listitem>
- <listitem>
- <para>
- Revisor reads the options from the command-line.
- </para>
- </listitem>
- <listitem>
- <para>
- Revisor reads the configuration file specified with the
<code>--config</code> command-line parameter, or uses it's builtin
default, <filename>/etc/revisor/revisor.conf</filename>.
- </para>
- </listitem>
- <listitem>
- <para>
- Revisor reads the global <code>[revisor]</code>
section for all settings available in it's
<emphasis>ConfigStore</emphasis> and sets those configured in the global
section. Remember that if an option is not available in the
<emphasis>ConfigStore</emphasis> but is configured in the global configuration
section, it is ignored.
- </para>
- </listitem>
- <listitem>
- <para>
- If a model is specified in the configuration file's global
section <code>[revisor]</code>, Revisor will set that model to be used and
loads it.
- </para>
- </listitem>
- <listitem>
- <para>
- If a model has been specified on the command-line, with option
<code>--model</code>, Revisor loads that model.
- </para>
- </listitem>
- <listitem>
- <para>
- When loading the model, Revisor again iterates over all the
settings that are in the <emphasis>ConfigStore</emphasis>, checks if the
setting has been configured in the model section, and adjusts the setting in the
<emphasis>ConfigStore</emphasis> if necessary. Again remember that if the
<emphasis>ConfigStore</emphasis> does not know about one or the other option
already, that setting is ignored.
- </para>
- </listitem>
- <listitem>
- <para>
- Now that the defaults and configuration file settings have been
applied to the <emphasis>ConfigStore</emphasis>, it is time for Revisor to
look at the options specified on the command-line to see if you wanted to override
anything.
- </para>
- </listitem>
- <listitem>
- <para>
- While loading each configuration setting available in the global
<code>[revisor]</code>, model-specific sections and/or command-line, Revisor
checks every settings against a function that is specifically written to check such
setting. For example, the label of an ISO cannot be longer then 32 characters.
- </para>
- </listitem>
- <listitem>
- <para>
- Especially in CLI mode, these settings build up the task list for
Revisor. If there's nothing to do, Revisor will throw an error explaining what's
missing. If there's things to do that cannot be done in one run, Revisor will throw an
error explaining that.
- </para>
- </listitem>
- <listitem>
- <para>
- In Graphical User Interface mode however, if the settings loaded
so far are all OK, the GUI will start. Since you can still adjust a few settings from
within the GUI, the settings loaded so far will be the defaults for configuration settings
that have a dialog for you to adjust them with, throughout the rest of the process.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Installation_Media">
- <title>Installation Media</title>
- <para>
- As we've explained before, composing installation media is a little
different then composing live media. That's not just because installation media should
start an installation procedure and live media should show you a nice, shiny,
fully-functional Desktop.
- </para>
- <para>
- For one, installation media allows split media. This means that Revisor can
span the payload of the product over multiple ISO images or multiple discs, if you will.
When composing installation media, Revisor basically does the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Of course, Revisor goes through the loading of configuration
options mentioned in the <xref
linkend="Revisor_Documentation-Compose_Process_Details-Overview"
endterm="Compose_Process_Details-Overview" />.
- </para>
- </listitem>
- <listitem>
- <para>
- When you're done specifying options in the GUI, or when
Revisor thinks it can go ahead using the options specified in CLI mode, it takes the list
of packages selected from either the GUI or the kickstart
<code>%packages</code> manifest.
- </para>
- <para>
- Not getting too deep into details here, yet, because some of
these things are routines shared with other composing modes, but here's a few
additional considerations Revisor makes when doing the package selection.
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Normally, a kickstart
<code>%packages</code> manifest only allows you to select package
<emphasis>names</emphasis>. With Revisor though, you can select exact package
<emphasis>NEVRA</emphasis> to select a certain version or architecture for the
package that you want. Additionally, if a package is not available, Revisor searches the
<emphasis>Provides</emphasis> of the available packages.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Live_Media">
- <title>Live Media</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Respin_Mode">
- <title>Respin Mode</title>
- <para>
- Revisor has a respin mode that in some aspects differs from the regular
routines. It is intended to reflect behaviour of tools in use by the Fedora Project
Release Engineering team as closely as possible.
- </para>
- <para>
- Re-Spin mode only affects installation media products.
- </para>
- <para>
- In Re-Spin mode, the way the RPM payload is determined from kickstart differs
from Revisor's normal procedures. See <xref
linkend="Revisor_Documentation-Using_Kickstart" /> for more details on using
a kickstart package manifest.
- </para>
- <para>
- A kickstart file's so-called <xref
linkend="Revisor_Documentation-Appendix-Terminology-package_manifest" />
usually looks like:
- </para>
- <para>
- <screen>%packages
-@group1
-@group2 --nodefaults
-@group3 --optional
-package1
-package2
--package3
-%end</screen>
- </para>
- <para>
- Which tells us the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Include all mandatory and default packages from group1
- </para>
- </listitem>
- <listitem>
- <para>
- Include all mandatory packages from group2
- </para>
- </listitem>
- <listitem>
- <para>
- Include all mandatory, default and optional packages from group3
- </para>
- </listitem>
- <listitem>
- <para>
- Include package1, and package2
- </para>
- </listitem>
- <listitem>
- <para>
- Exclude package3
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Depending on how you use this instructions or information, there is a slight
difference in the package set that ends up on the media you compose.
- </para>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Respin_Mode-Selecting_Groups">
- <title>Selecting Groups</title>
- <para>
- Selecting groups has the following logic: When you load a repository you
may also load the groups file (often referred to as 'comps' or
'comps.xml'). This comps file is an XML file with categories, groups (per
category), and per group:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- a list of mandatory packages. If you select or include the
group, these packages come with it.
- </para>
- </listitem>
- <listitem>
- <para>
- a list of default packages. If you select or include the
group, these packages will come with it as a default. If you only want the mandatory,
minimum set of packages for this group, in a kickstart package manifest append
<code>--nodefaults</code> to the group line or in the Revisor GUI,
right-click on the group and choose <emphasis>Deselect all
packages</emphasis>.
- </para>
- </listitem>
- <listitem>
- <para>
- a list of optional packages. If you select a group you have
not yet selected these packages. To select the optional packages of a group, in a
kickstart package manifest append <code>--optional</code> to the group line or
in the Revisor GUI, right-click on the group and choose <emphasis>Select all
optional packages</emphasis>.
- </para>
- </listitem>
- <listitem>
- <para>
- a list of conditionals. If you select this group, these
conditionals are thrown into the package sack and transaction information and include or
exclude other packages. Suppose you select the '@nl-support' or “Dutch Support”
group from the Languages or Localization category, you would end up with support for the
Dutch language in all applications that have that kind of support.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Respin_Mode-Select_Matching_Packages">
- <title>Select Matching Packages</title>
- <para>
- This is the logic Revisor applies when running in Re-Spin mode (on the
CLI, specify <code>--respin</code>). It imitates the behavior pungi has, and
thus enables you to copy that behavior. Note that <code>--respin</code> has
other implications as well.
- </para>
- <para>
- First of all, it iterates the groups in the kickstart package manifest.
For each group, it appends the names of the mandatory packages to a list, and depending on
the additional parameters specified with that group (<code>--nodefaults</code>
or <code>--optional</code>), appends the names of the other packages in that
group as well.
- </para>
- <para>
- Then it iterates over the package names in the package manifest. These
package names are appended to the same list of package names too. This includes package
'names' with some sort of wildcard (?, or *).
- </para>
- <para>
- Then it iterates over all the excluded packages, appending each of those
to the YUM configuration exclude list.
- </para>
- <para>
- Now that Revisor has a very simple, flat list of package names, it uses
YUM's internal matching logic 5 to get what packages in the repositories matched
exactly (by name), matched (by wildcard) and did not match at all. Revisor then selects
the exact matches and matches, adding them to the transaction.
- </para>
- </section>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving">
- <title>Dependency Resolving</title>
- <indexterm>
- <primary>Dependency Resolving</primary>
- </indexterm>
- <para>
- Dependency resolving is the area where some of the efficiency Revisor can
gain for you comes from. While of course there is specific reasons to do things one way,
or the other, most people I speak to about Revisor, it is not very clear why, or what
Revisor does in this area. First of all, there's two ways of resolving dependencies:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
- <title>Inclusive Dependency Resolving</title>
- <indexterm>
- <primary>Dependency Resolving</primary>
- <secondary>Inclusive</secondary>
- </indexterm>
- <para>
- Iterate all packages in the transaction and list their
requirements, then for each of those requirements, find all packages that provide a
matching capability, add those packages to the transaction, and don't forget to add
the requirements those packages have themselves, back into the pile of (unmet)
requirements.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>Exclusive Dependency Resolving</title>
- <indexterm>
- <primary>Dependency Resolving</primary>
- <secondary>Inclusive</secondary>
- </indexterm>
- <para>
- Iterate all the packages and for each of the requirements
found, find the best package that meets the requirement. This is also YUMs default
behavior. Anaconda uses YUM during the installation, and this is the behaviour of YUM used
during the installation.
- </para>
- </formalpara>
- </listitem>
- </orderedlist>
- </para>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Inclusive">
- <title>Inclusive Dependency Resolving</title>
- <para>
- Hypothetically, you could describe inclusive dependency as follows:
- </para>
- <para>
- <screen>final_packages = []
-more_to_do = True
-while more_to_do:
-more_to_do = False
-for package in packages:
- if package in final_packages:
- continue
-
- dependencies = find_package_dependencies()
- for dependency in dependencies:
- pulled_in_package = pull_in_dependency()
- if pulled_in_package not in final_packages:
- packages.append(pulled_in_package)
- more_to_do = True</screen>
- </para>
- <para>
- So, what does this mean? Basically, it means that if there is a
requirement for a capability, all packages providing that capability are being pulled in.
Now imagine package 'foo' requires capability 'web-client'. There's a
number of packages providing that capability, right? So you get Firefox, lynx, elinks,
konqueror, safari, Netscape, Internet Explorer, emacs, for free! All of those pull in
their own dependencies also, of course.
- </para>
- <note>
- <para>
- If you catch this before it catches you, you can prevent the packages
from being pulled in during dependency resolving by not making the package available in
the <xref linkend="Revisor_Documentation-Appendix-Terminology-Package_Sack"
/> in the first place, using the <literal>-firefox</literal> syntax in the
kickstart package manifest, and setting
<literal>kickstart_uses_pkgsack_excludes</literal> to 1.
- </para>
- </note>
- <note>
- <para>
- You may have thought of it; pulling in packages this way may give you
a package set (or <emphasis>RPM payload</emphasis>) that has conflicting
packages. Imagine package <application>foo</application> requiring capability
<application>bar</application>, which is provided by two packages that
conflict with one another (either on explicit <literal>Conflicts:</literal>
RPM header or file level). Both will be pulled in, hence disabling you to install
everything (<literal>'*'</literal> or -previously-
<literal>@Everything</literal> in the kickstart package manifest).
- </para>
- </note>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Makes_Sense">
- <title>When This Makes Sense</title>
- <para>
- If you are composing a large distribution of which 3 million users in
even so many different situations having so many different expectations and desires, you
will want this behaviour, since you won't be able to determine which one of the
packages for each capability someone in that group wants, and which one may not want. Or,
in case of upgrades, what the system needs. Shipping them all on the same media is the
best solution in these cases.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Inclusive-When_This_Does_Not_Make_Sense">
- <title>When This Does Not Make Sense</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- When creating installation media to be installed
unattended, or to be used in conjunction with deployment strategies
- </para>
- </listitem>
- <listitem>
- <para>
- When creating installation media to be upgrading PCs you
have controlled from the beginning, such as in a company
- </para>
- </listitem>
- <listitem>
- <para>
- Installation for a small group of users or systems
- </para>
- </listitem>
- <listitem>
- <para>
- When creating minimal installation media, or media with a
minimal RPM payload.
- </para>
- </listitem>
- <listitem>
- <para>
- When creating installation media that is to be used with
installing "Everything" in the RPM payload.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Dependency_Resolving-Exclusive">
- <title>Exclusive Dependency Resolving</title>
- <para>
- Exclusive dependency resolving is what YUM does when you execute a
<application>yum install</application>. Unless you've specified one of the
packages satisfying any of the dependencies in the transaction, YUM is going to look up
the best match for you. This results in the installation of only one package providing the
requirement(s) of other packages, rather then all packages providing said requirement
being installed.
- </para>
- <para>
- As an example, imagine you install a package foo which requires
capability web-client. Using exclusive dependency resolving, YUM would select one package
providing the web-client capability whereas inclusive dependency resolving would include
all packages providing the web-client capability.
- </para>
- <para>
- During the installation procedure, one of the major features of
installation media, anaconda is going to use YUM dependency resolving to satisfy all the
dependencies.
- </para>
- <note>
- <title>Installation Procedure !== Upgrade Procedure</title>
- <para>
- Note that an installation procedure is not the same as an upgrade
procedure. With an installation procedure for example, you have control over the
partitioning layout whereas with an upgrade procedure, you have none. More importantly,
during an upgrade procedure, the (already installed) system has an existing package set
which needs to be updated/upgraded and thus could possibly introduce dependency resolving
problems, because of third party packages installed on the system, or because the media
used to upgrade the system with does not contain the software packages needed to complete
the upgrade RPM transaction.
- </para>
- </note>
- </section>
-
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Copying_Arbitrary_Files_Onto_The_Media">
- <title>Copying Arbitrary Files Onto the Media</title>
- <para>
- With <literal>--copy-dir</literal>, you can specify a path
Revisor should copy onto the media.
- </para>
- <formalpara>
- <title>Installation Media</title>
- <para>
- In the case of installation media, the path specified with
<literal>--copy-dir</literal> will be copied recursively to the
<filename>files/</filename> sub-directory at the root of the ISO image (or the
first ISO image if you compose split media).
- </para>
- </formalpara>
- <para>
- A few use-case examples:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- If one kickstart profile is not enough for you to deploy the
product onto your systems, create a directory that holds multiple kickstart files and
specify the path to that directory using <literal>--copy-dir</literal>. The
kickstart files now end up available to the installation procedures as
<filename>cdrom:/files/*.ks</filename>, and can thus be used by specifying
them on the kernel cmdline (<code>ks=cdrom:/files/profile1.ks</code>), or,
when used in combination with <literal>--isolinux-cfg</literal> from the
<xref linkend="Revisor_Documentation-Plugins-Upstream-Isolinux_Plugin"
endterm="Isolinux_Plugin" />, can be added as an option in the isolinux
menu.
- </para>
- </listitem>
- <listitem>
- <para>
- If you have files or scripts that need to be copied onto, or run
on, the installed system before it attempts to reboot and operate normally, you can use
<literal>--copy-dir</literal> to make these files and scripts available during
the installation and copy or execute them from either <code>%pre</code> or
<code>%post</code> scripts.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <formalpara>
- <title>Live Media</title>
- <para>
- In the case of live media, the path specified with
<literal>--copy-dir</literal> will be copied recursively onto the root
directory (<filename>/</filename>) of the live media filesystem (which is
probably loop-mounted onto <filename>/var/tmp/revisor/</filename>).
- </para>
- </formalpara>
- <para>
- If, for example, you want to copy a home directory onto the live media, and
the home directory you want to copy is at <filename>/home/user1/</filename> on
the composing system, you copy this directory so that the root of that new directory has a
sub-directory <filename>home/</filename> which in turn contains a
sub-directory <filename>user1/</filename>:
- </para>
- <para>
- <screen>$ <userinput>mkdir -p
/tmp/something/home/</userinput>
-$ <userinput>cp -a /home/user1 /tmp/something/home/.</userinput>
-$ <userinput>revisor [options] --copy-dir
/tmp/something/</userinput></screen>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Cleaning_Up">
- <title>Cleaning Up</title>
- <para>
- Revisor tends to clean up after itself by default. If a product compose
succeeds, you (probably) don't need to change this default behaviour. However, by
default, Revisor tends to leave the YUM cache directories untouched. This is to prevent
you from having to download all the packages a second, third or more times when you run
another compose.
- </para>
- <para>
- To change this default behaviour, Revisor has an option
<literal>--clean-up</literal>. The default value for this option is
<literal>1</literal>, meaning Revisor will clean up it's temporary,
compose-specific files, but no files that could be re-used. Specifying
<literal>--clean-up=0</literal> will cause Revisor to leave everything behind
and not clean anything up at all. This is most ideal for troubleshooting purposes, where
one needs to examine the temporary, compose-specific files and see what went wrong. To
clean up everything however, because for example you might be low on disk-space, use
<literal>--clean-up=2</literal>. Revisor will then also clean up the files
that could be re-used.
- </para>
-
- <section
id="Revisor_Documentation-Compose_Process_Details-Cleaning_Up-Exception-to-the-Rule">
- <title>Exception to the Rule</title>
- <para>
- There's one exception to the rule of cleaning up.
<filename>/var/tmp/revisor/</filename>, or put more accurately, the path
specified as the <code>installroot</code> in the YUM configuration file
configured with the model used to compose the product, will not be cleaned up afterwards.
When composing live media, this directory may still be in use as a mount-point for the
live media filesystem. Removing this directory recursively in these cases would not make
sense.
- </para>
- </section>
- </section>
-
-</chapter>
-
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Configuration.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Configuration.xml
deleted file mode 100644
index 9d435bf..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Configuration.xml
+++ /dev/null
@@ -1,280 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Configuration">
- <title>Configuration</title>
- <para>
- Revisor configuration can be performed using <xref
linkend="Revisor_Documentation-Configuration-Files" />, or through <xref
linkend="Revisor_Documentation-Configuration-Command-line_Options" />.
- </para>
-
- <section id="Revisor_Documentation-Configuration-Files">
- <title>Configuration Files</title>
- <para>
- Revisor uses configuration files for a large part of it's operations.
These files mostly reside in <filename>/etc/revisor/</filename>. There is two
types of files Revisor uses:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
- <title>Revisor Configuration Files</title>
- <para>
- Revisor configuration files, such as
<filename>/etc/revisor/revisor.conf</filename>, contain information and
settings unique to Revisor. A Revisor configuration file is where you specify default
options, and include information on different products you want to compose.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>YUM Configuration Files</title>
- <para>
- YUM configuration files, such as the files in
<filename>/etc/revisor/conf.d/</filename>, contain configuration for YUM. To
be more precise, Revisor doesn't even handle the files (it let's YUM do so). The
files in <filename>/etc/revisor/conf.d/</filename> practically contain the
same information as <filename>/etc/yum.conf</filename> combined with the files
in <filename>/etc/yum.repos.d/</filename> (but not exactly the same
content!).
- </para>
- </formalpara>
- </listitem>
- </orderedlist>
- </para>
-
- <section
id="Revisor_Documentation-Configuration-Files-_etc_revisor_revisor.conf">
-
<title><filename>/etc/revisor/revisor.conf</filename></title>
- <para>
- The default Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. This configuration file
contains two sections:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
-
<title><literal>[revisor]</literal></title>
- <para>
- The global section. Options specified in this section
apply to all the models defined in this configuration file.
- </para>
- </formalpara>
- <para>
- See also: <xref
linkend="Revisor_Documentation-Configuration-Global_and_Model_Configuration"
/>
- </para>
- </listitem>
- <listitem>
- <formalpara>
-
<title><literal>[<replaceable>model</replaceable>]</literal></title>
- <para>
- Model configuration. One section per <xref
linkend="Revisor_Documentation-Appendix-Terminology-model" />.
- </para>
- </formalpara>
- <para>
- See also: <xref
linkend="Revisor_Documentation-Configuration-Global_and_Model_Configuration"
/>
- </para>
- </listitem>
- </orderedlist>
- </para>
- <para>
- Model sections basically define a single product. Amongst other things,
the distribution name, release version, architecture for the product to be composed and
what YUM configuration file to use, are (often) defined on a per-model basis. There is a
large number of settings available for models, and they are all related to how the product
is going to look like. The product name, the location of the RPM payload for installation
media, the ISO label, the YUM configuration file to use, are all model settings.
- </para>
- <para>
- Using models, you can reproduce the outcome of the compose process, a
<emphasis>product</emphasis>, simply by not changing the model configuration
anymore. If you want something different, you can just add another model section, and name
it differently.
- </para>
- <para>
- To see what models are available with the Revisor standard package, use:
- </para>
- <para>
- <screen>$ <userinput>revisor
--list-models</userinput></screen>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Files-_etc_revisor_conf.d_">
-
<title><filename>/etc/revisor/conf.d/</filename></title>
- <para>
- The default YUM configuration files used by Revisor. In a model
configuration section, the <literal>main =</literal> setting points to one of
the YUM configuration files in <filename>/etc/revisor/conf.d/</filename>
- </para>
- </section>
-
- <section id="Revisor_Documentation-Configuration-Files-Updates">
- <title>Updates to Configuration Files</title>
- <para>
- The Revisor packages are not allowed to overwrite files in
<filename>/etc/</filename>, and they should thus not do so. If an update to
Revisor is installed on your system, files with the extension
<literal>.rpmnew</literal> may be created --if you had changed anything in the
file before applying the update. Since this world isn't perfect, configuration errors
may exist in the configuration files shipped with Revisor. Please pay close attention to
updates to these configuration files by examining the
<literal>.rpmnew</literal> files.
- </para>
- <para>
- You can use any file location (not just
<filename>/etc/revisor/</filename>) for your own custom configuration.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Files-Changing_Configuration_Files">
- <title>Changing Configuration Files</title>
- <para>
- If you are creating your own models off of the ones that ship with
Revisor itself, please consider using an alternative configuration file (a file other then
<filename>/etc/revisor/revisor.conf</filename>, or copy the original file for
safekeeping. This way, you can always return to a working, sample configuration file and
test whether it is Revisor causing errors, or configuration mistakes.
- </para>
- </section>
-
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Global_and_Model_Configuration">
- <title>Global and Model Configuration</title>
- <para>
- The default Revisor configuration file,
<filename>/etc/revisor/revisor.conf</filename> consists of multiple sections
(the file is in .INI format). One is the <literal>[revisor]</literal> global
section, where you specify configuration options that apply to each other section or
<xref linkend="Revisor_Documentation-Appendix-Terminology-model" />.
- </para>
- <para>
- The options specified in the global and model configuration sections apply to
the Revisor compose in the following order:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <para>
- The options from the global section are read, tested and set.
- </para>
- </listitem>
- <listitem>
- <para>
- The options from a model section are read, tested and set,
regardless of whether the global section had caused the setting to be set to a certain
value already.
- </para>
- </listitem>
- </orderedlist>
- </para>
- <para>
- For example, if you know all the models in a configuration file are optical
live media products, the configuration sections could look like the following:
- </para>
- <para>
- <screen>[revisor]
-# Optical live media for all models
-media_live_optical = 1
-
-[model1]
-main = /etc/revisor/conf.d/revisor-model1.conf
-description = The model1 product
-architecture = i386
-# This is already configured in the global section of
-# this configuration file and can thus be removed.
-#media_live_optical = 1</screen>
- </para>
- <note>
- <title>When Running the GUI</title>
- <para>
- Note that when running Revisor in Graphical User Interface mode, you can
still change a lot of the settings supplied by Revisor through the configuration files
loaded. When you are running Revisor in GUI mode, the configuration files supply the
defaults.
- </para>
- </note>
- </section>
-
- <section id="Revisor_Documentation-Configuration-Yum_Repositories">
- <title>YUM Repository Configuration</title>
- <para>
- The files in <filename>/etc/revisor/conf.d/</filename> are YUM
configuration files. Revisor directs YUM to use these files during the compose process,
and does not handle these files itself. This chapter lists a few tips and tricks.
- </para>
- <para>
- Because these files are YUM Configuration files, you can configure anything
that YUM supports. See <application>man yum.conf</application> for more
details.
- </para>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-releasever_and_basearch">
- <title>$releasever and $basearch</title>
- <para>
- When configuring a repository URL, make sure you do not use
<replaceable>$releasever</replaceable> or
<replaceable>$basearch</replaceable> variables. Since Revisor allows
cross-composing distributions between different versions of the operating system, as well
as different architectures, these variables need to be expanded to the value intended.
- </para>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Using_a_Local_Mirror">
- <title>Using a Local Mirror</title>
- <para>
- If you have a local mirror of Fedora, you can use the
<literal>baseurl</literal> configuration directive in each repository
configuration section to tell YUM to use the local mirror.
- </para>
- <para>
- Optionally, you can also disable the
<literal>mirrorlist</literal>, preferably by outcommenting it, so that YUM
will only use the local mirror.
- </para>
- <para>
- The default <literal>baseurl</literal> uses
<
literal>http://download.fedoraproject.org/</literal>. This location may or
may not be suitable for you. If you have a local mirror, you might want to change this
setting here, or add your mirror to Fedora Project's Mirrorlist.
- </para>
- <note>
- <title>Adding your local mirror to the Mirrorlist</title>
- <para>
- You can add your local mirror to the Mirrorlist, so that the Fedora
Project mirrorlist redirects you to your local mirror. Additionally, systems in your local
network(s) will be redirected to the local mirror. The local mirror does not have to be a
public mirror in order to do so. See <ulink
url="http://admin.fedoraproject.org/mirrormanager/" /> for more details.
- </para>
- </note>
- <para>
- Set each <literal>baseurl</literal> to the location of the
repository on the local mirror.
- </para>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Using_Local_Files">
- <title>Using Local Files</title>
- <para>
- If you have the repositories on your local filesystem, configure a
<literal>baseurl</literal> of
<filename>file://<replaceable>/path/to/repository/</replaceable></filename>.
- </para>
- <note>
- <title>Make sure to supply the correct path</title>
- <para>
- Make sure to supply the correct path to the repository.
<filename>file://</filename> is the
"<emphasis>protocol</emphasis>" for the location, and the location
is
<filename><replaceable>/path/to/repository/</replaceable></filename>.
Put together, you have <emphasis>three</emphasis> slashes.
- </para>
- </note>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Using_a_DVD">
- <title>Using a DVD</title>
- <para>
- A DVD does not contain enough packages to rebuild the installer images.
If you are using a DVD and you want to rebuild the installer images, you will need to have
a network connection and a mirror you can reach.
- </para>
- <para>
- There is a list of required packages, but since the packages change per
release and may change in the middle of the release cycle as well, we cannot hand you a
list that just works.
- </para>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Adding_Third_Party_Repositories">
- <title>Adding Third Party Repositories</title>
- <para>
- When adding a third party repository, make sure you add the correct
release version as well as architecture to the Revisor YUM configuration file. Verify the
location for the <literal>baseurl</literal> and/or
<literal>mirrorlist</literal> you configure manually or through YUM. Make sure
you expand any <literal>$releasever</literal>,
<literal>$basearch</literal> and <literal>$arch</literal>
variables.
- </para>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Creating_Your_Own_Repository">
- <title>Creating Your Own Repository</title>
- <para>
- Creating your own repository is relatively simple. You take a directory,
dump some RPM packages in it, and run <application>createrepo</application>.
See <literal>man createrepo</literal> for more information.
- </para>
- <para>
- People often wonder how Revisor handles comps.xml group files.
- </para>
- <para>
- When you create your own repository, follow the directions in <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Adding_Third_Party_Repositories"
/> to add the repository configuration to Revisor's YUM configuration, since your
own repository is a third party repository as well.
- </para>
- <para>
- See also <xref
linkend="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting"
/>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Yum_Repositories-Troubleshooting">
- <title>Testing & Troubleshooting the YUM
Configuration</title>
- <para>
- Before you use the (modified) configuration file, take it for a test
run.
- </para>
- </section>
-
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Configuring_A_Proxy">
- <title>Configuring A Proxy Server</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Configuration-Command-line_Options">
- <title>Command-line Options</title>
- <para>
- With the command-line options available, you can configure options that
either override what is in the configuration file or have simply not been configured using
the configuration file. With the default configuration files that come with the
<application>revisor-cli</application> package for example, no media products
have been pre-configured in the default section. In the
<application>revisor-unity</application> package however, some default
configuration has been applied so that Fedora Unity Re-Spins actually create CD, DVD and
Rescue ISO images as well as the Installation Tree and include the sources.
- </para>
- <para>
- Only some configuration options have CLI parameters. Use
<application>revisor --help</application> to see a complete list of
configuration options you can supply on the command line.
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Development.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Development.xml
deleted file mode 100644
index 02407c1..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Development.xml
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Development">
- <title>Development</title>
- <para>
- This chapter sheds some light on development of Revisor, such as different
branches and maintenance policies, versioning schemas, etcetera.
- </para>
- <para>
- This part of the documentation relies on whether you have
<application>sudo</application> set up properly. If you have not, you're
on your own.
- </para>
-
- <section
id="Revisor_Documentation-Development-Running_Revisor_from_Source">
- <title>Running Revisor from Source</title>
- <para>
- The latest code in GIT can be built into a RPM you can install but one of the
advantages of having the complete source tree is that you can run it directly from that
source tree so that when you pull in the next updates you do not have to rebuild the RPM.
Note that we do not bump the version number for every little change we make, and as such
the RPM built does not allow you to use <literal>rpm -Uvh</literal> or
<literal>rpm -Uvh --oldpackage</literal>. Of course, Revisor's Makefiles
also allow <application>make install</application>, but that leaves a number
of unmanaged files on your computer you would have to track down manually in order to
remove Revisor completely.
- </para>
- <warning>
- <title>Cannot have Revisor RPMs installed</title>
- <para>
- When running revisor from within the source tree, you cannot have any of
the Revisor packages installed. Having Revisor RPM packages installed regardless will mess
up the GIT repository or source tree.
- </para>
- </warning>
- <para>
- To run Revisor from within the source tree, checkout the master branch, and
run the <filename>./switchhere</filename> script:
- </para>
- <para>
- <screen>$
<userinput>./switchhere</userinput></screen>
- </para>
- <para>
- The <filename>./switchhere</filename> script does the following:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Symlink <filename>/etc/revisor/</filename> to
<filename><replaceable>$PWD</replaceable>/conf/</filename> so that
<filename>/etc/revisor/revisor.conf</filename>, the primary configuration
file, and <filename>/etc/revisor/conf.d/</filename>, the configuration
directory, are valid (the symlink causes the actual file and directory to be found in
<filename><replaceable>$PWD</replaceable>/conf/</filename>)
- </para>
- </listitem>
- <listitem>
- <para>
- Create the <filename>/usr/share/revisor/</filename>
directory so that a couple of symlinks can be created from within that directory:
- </para>
- </listitem>
- <listitem>
- <para>
- In Revisor 2.1.0 (development version in branch master), this
includes:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/revisor/modgui/glade/pixmaps/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- In Revisor 2.0.5 (branch F-7, F-8 or EL-5), this includes:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>/usr/share/revisor/ui =>
<replaceable>$PWD</replaceable>/glade/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/pixmaps =>
<replaceable>$PWD</replaceable>/glade/pixmaps/</filename>
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>/usr/share/revisor/comps =>
<replaceable>$PWD</replaceable>/conf/</filename>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- In Revisor 2.1.0, also create symlinks from within the
appropriate
<filename>/usr/share/man/man<replaceable>$x</replaceable>/</filename>
directories to the source for these man pages in
<filename><replaceable>$PWD</replaceable>/doc/</filename>.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- From this moment on, you should be able to run:
- </para>
- <para>
- <screen>$
<userinput>./revisor.py</userinput></screen>
- </para>
- <note>
- <title>Root privileges required</title>
- <para>
- Note that revisor needs root privileges to run, and that you'll need
to sudo or su-c to gain those. Use here whatever you find the most convenient; Revisor
though should have a nice error message when run without those privileges.
- </para>
- </note>
-
- <section
id="Revisor_Documentation-Development-Running_Revisor_from_Source-Required_Packages">
- <title>Installing the Required Packages</title>
- <para>
- To be able to run Revisor from within the source tree, you'll need to
install the required packages for each component, of course.
- </para>
- <para>
- To get a current list of those packages, use:
- </para>
- <para>
- <screen>$ <userinput>rpmquery --specfile
--qf="%{REQUIRES}\n" revisor.spec | sort | uniq | xargs -n 1 repoquery
--requires --alldeps --resolve</userinput></screen>
- </para>
- </section>
-
- </section>
-
- <section
id="Revisor_Documentation-Development-Building_Revisor_Packages">
- <title>Building Revisor Packages</title>
- <para>
- para
- </para>
- </section>
-
- <section id="Revisor_Documentation-Development-Tickets">
- <title>Tickets</title>
- <para>
- bugzilla, trac
- </para>
- </section>
-
- <section id="Revisor_Documentation-Development-Adding_A_New_Spin">
- <title>Adding a new spin or remix</title>
- <para>
- <orderedlist>
- <listitem>
- <para>
- Add the appropriate models in the appropriate configuration file
for Revisor.
- </para>
- </listitem>
- <listitem>
- <para>
- Add the appropriate configuration file to the appropriate
automake Makefile
- </para>
- </listitem>
- <listitem>
- <para>
- Run autoreconf && ./configure &&
make rpm to verify the rpm building
- </para>
- </listitem>
- <listitem>
- <para>
- Create the model's YUM configuration files with the following
repositories:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- fedora, enabled, pointing to Everything
- </para>
- </listitem>
- <listitem>
- <para>
- fedora-source, disabled, pointing to Everything
- </para>
- </listitem>
- <listitem>
- <para>
- fedora-updates, enabled, pointing to the updates
repository
- </para>
- </listitem>
- <listitem>
- <para>
- fedora-updates-source, disabled, pointing to the
updates repository
- </para>
- </listitem>
- <listitem>
- <para>
- anaconda-updates, enabled, pointing to the anaconda
updates repository
- </para>
- </listitem>
- <listitem>
- <para>
- anaconda-updates-source, disabled, pointing to the
ananconda updates repository
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- </orderedlist>
- </para>
- </section>
-
- <section id="Revisor_Documentation-Development-Versioning_Schema">
- <title>Versioning Schema</title>
- <para>
- para
- </para>
- </section>
-
- <section id="Revisor_Documentation-Development-Release_Procedure">
- <title>Release Procedure</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Features.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Features.xml
deleted file mode 100644
index 6583398..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Features.xml
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Features">
- <title>Features</title>
- <para>
- Revisor allows you to build and customize your own Remix, Re-Spin, Spin or even
your own distribution, based on Fedora and derivative distributions such as Red Hat
Enterprise Linux and CentOS.
- </para>
- <para>
- Revisor builds installation media, live media, installation trees, cobbler
distro's and profiles, virtualization images and more.
- </para>
-
- <section id="Revisor_Documentation-Features-Installation_Media">
- <title>Installation Media</title>
- <para>
- Installation media is what you use to install a system with. The installation
media composed will allow you to go through the installation process, answering a number
of questions (either manually or through kickstart), and ends up in a system running the
distribution you install.
- </para>
- <para>
- Composing installation media using the Revisor GUI allows you to choose the
media (CD, or DVD), the packages to be included on the media (also called
<emphasis>RPM payload</emphasis>).
- </para>
- <para>
- Using the command-line interface, Revisor also allows you to choose DVD
Duallayer and single- or dual-layer Bluray.
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Installation_Trees">
- <title>Installation Trees</title>
- <para>
- Installation trees are typically used in environments where a distribution
needs to be deployed over multiple systems, or is very volatile. Installation trees are
often made accessible through HTTP or FTP protocols, in one place, and do not have as much
overhead (in creating .iso files, and burning those to optical media to distribute them).
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Live_Media">
- <title>Live Media</title>
- <para>
- Live media often is a perfect showcase for an Operating system, Desktop
Environment or any other thing you want to show. Also, since Live media is read-only, live
media perfectly allows for a kiosk system, a system that may change while it's
running, but restores all original settings when rebooted.
- </para>
- <para>
- Live media is also installable. You start out with a system and boot it from
live media, then choose to install the live media. This however is inferior to real
installation media, but is convenient if you happen to like what you see when running from
live media.
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Reproducibility">
- <title>Reproducibility</title>
- <para>
- Media composed with Revisor is extremely reproducible. Using
<literal>kickstart_exact_nevra</literal>, you can even select specific
versions of packages to be included on the product.
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Consistency">
- <title>Consistency</title>
- <para>
- When composing different types of media, such as CDs and DVDs, Revisor
composes these discs in one run, making the different media completely consistent.
<application>pungi</application> would require you to run twice, once for CDs,
and once for DVDs. This is because <application>pungi</application> uses the
<literal>part /
<replaceable><size></replaceable></literal> kickstart
configuration directive to set the maximum size of the media, and has no option to
override the size on the command-line, nor to compose a certain set of media (it all
depends on the size).
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Flexibility">
- <title>Flexibility</title>
- <para>
- Over the years, Revisor has been adopted to serve a large number of
use-cases, where use-cases stretch from media being composed as efficient as possible, as
robust as possible, specific deployment needs and expectations, and to match the Fedora
Project Release Engineering tools' behaviour. All this allows you to configure a lot,
and thus customize a lot, making Revisor more of a flexible framework.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Features-Graphical_User_Interface">
- <title>Graphical User Interface</title>
- <para>
- Revisor has a Graphical User Interface or GUI, in addition to the Command
Line Interface or CLI, which makes Revisor more accessible to users then the other tools,
which are CLI only. Most people only know of Revisor through the GUI, and may think there
is no CLI to Revisor. Only when it comes down to many of the additional features that
Revisor has, and that do not fit in a simplified GUI, one gets down with it using the
CLI.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Features-Open_Development_Community">
- <title>Open Development Community</title>
- <para>
- Revisor has one of those old-fashioned Free and Open Source Software
development communities, allowing anyone to make a contribution to Revisor. In fact,
Revisor has not bounced a single patch since the project started. Therefor, it improves
faster then any of the other compose tools, and is better adaptible to your needs and
expectations, because unlike the other utilities, Revisor is not limited to use-cases that
apply to Fedora Project Release Engineering.
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Plugin_System">
- <title>Plugin System</title>
- <para>
- Revisor has a plugin system so that you can easily extend Revisor. This
plugin system gives you full control over the Revisor procedures, and hands you off
anything Revisor knows about the compose process. There's are multiple plugins
available from upstream as well. To give you an example, the ability to replace
<filename>isolinux.cfg</filename> after the compose is done, is a plugin. See
<xref linkend="Revisor_Documentation-Plugins" /> for more information.
- </para>
-
- <para>
- Current plugins included with Revisor include:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <xref
linkend="Revisor_Documentation-Plugins-Upstream-Cobbler_Plugin" />
- </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="Revisor_Documentation-Plugins-Upstream-Isolinux_Plugin" />
- </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="Revisor_Documentation-Plugins-Upstream-Rebrand_Plugin" />
- </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="Revisor_Documentation-Plugins-Upstream-Reuse_Installer_Images_Plugin"
/>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section id="Revisor_Documentation-Features-Extraneous_Debugging">
- <title>Extraneous Debugging</title>
- <para>
- Revisor has extraneous debugging, which enables you, as well as the
supporters and Revisor's developers, to trace down what happens exactly, and where
anything might go wrong.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Features-Using_YUM_Configuration_Files">
- <title>Using YUM Configuration Files</title>
- <para>
- Revisor uses YUM configuration files, where everyone else is not. With using
YUM configuration files however, the control you have is nearly limitless. With all the
features in YUM already, using it's configuration file format and letting YUM itself
work with those allows Revisor to do a lot of cool things without doing anything itself:
- </para>
- <para>
- <orderedlist>
- <listitem>
- <formalpara>
- <title>Excluding packages from repositories</title>
- <para>
- Excluding packages from repositories means a great deal. Not
having them exist in the <xref
linkend="Revisor_Documentation-Appendix-Terminology-Package_Sack" /> ensures
the package will not end up in the product. This may be what you want for maybe just a
few, or maybe an awful lot of packages.
- </para>
- </formalpara>
- <para>
- Using the alternative configuration file format, kickstart, in
use by every other compose tool, and the <literal>repo</literal> configuration
directive that is available with kickstart, you can exclude packages using the
<literal>--exclude=</literal> parameter to the
<literal>repo</literal> configuration directive. However, that parameter does
not allow wildcard matches.
- </para>
- </listitem>
- <listitem>
- <formalpara>
- <title>Including only a certain (set of)
package(s)</title>
- <para>
- Including only a certain package, or certain set of packages
is valuable when a lot of packages exist in the repository configured, but you only need
one or two.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>Concurrent use of baseurl(s) and the
mirrorlist</title>
- <para>
- Like during normal YUM operations, the baseurl(s) and the
mirrorlist configured for a repository are used concurrently. This is not possible with
the kickstart configuration directive <literal>repo</literal>, which takes
either <literal>--baseurl</literal> or
<literal>--mirrorlist</literal>, but not both.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>Repository priorities</title>
- <para>
- Settings available with YUM are available within Revisor as
well, like repository priorities. Using repository priorities, you can have YUM decide to
pull a package from the repository with a higher priority (a lower priority number) rather
then a repository with a lower priority.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title>YUM Plugins</title>
- <para>
- YUM plugins, such as
<application>yum-fastestmirror</application>,
<application>yum-fedorakmod</application>, are available, giving you even more
control over the behaviour of YUM.
- </para>
- </formalpara>
- </listitem>
- </orderedlist>
- </para>
- </section>
-</chapter>
-
diff --git
a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Frequently_Asked_Questions.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Frequently_Asked_Questions.xml
deleted file mode 100644
index 489d42a..0000000
---
a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Frequently_Asked_Questions.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Frequently_Asked_Questions">
- <title>Frequently Asked Questions</title>
- <para>
- para
- </para>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-How_Does_Revisor_Handle_Comps">
- <title>How Does Revisor Handle Comps?</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-What_Are_Installer_Images">
- <title>What Are Installer Images?</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Pungi">
- <title>What is the relationship between Revisor and Pungi?</title>
- <para>
- Where pungi builds a bunch of RPMs into ISO images and installation trees
through one single procedure, perfect for Release Engineering on something like the Fedora
Project, Revisor does it different entirely.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-Relationship_Between_Revisor_and_Livecd-tools">
- <title>What is the relationship between Revisor and
livecd-tools?</title>
- <para>
- Revisor depends on livecd-tools for the composing of live media. Creating the
filesystem to install the packages to, turning that image file into a SquashFS file, and
applying the settings inside the chroot.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-Why_Rebuild_Installer_Images">
- <title>Why Rebuild Installer Images?</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Frequently_Asked_Questions-How_do_I_create_an_updates.img">
- <title>How do I create an updates.img?</title>
- <para>
- para
- </para>
- </formalpara>
-
-</chapter>
-
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Installation.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Installation.xml
deleted file mode 100644
index 9997088..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Installation.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Installation">
- <title>Installation</title>
- <para>
- This chapter contains the installation instructions for Revisor.
- </para>
-
- <section id="Revisor_Documentation-Installation-Packages">
- <title>Packages</title>
- <para>
- You can install Revisor using RPM packages from the repositories already
configured on your system.
- </para>
-
- <formalpara
id="Revisor_Documentation-Installation-Packages-revisor">
- <title><application>revisor</application></title>
- <para>
- Shorthand package for the Revisor GUI.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Installation-Packages-revisor-cli">
-
<title><application>revisor-cli</application></title>
- <para>
- The CLI version of Revisor. This package is always installed, as it
contains the Python code for Revisor's core. Installing just this package will give
you the command-line version of Revisor, and prevents the graphical dependencies from the
<xref linkend="Revisor_Documentation-Installation-Packages-revisor-gui" />
package to be installed as well.
- </para>
- </formalpara>
-
- <formalpara
id="Revisor_Documentation-Installation-Packages-revisor-gui">
-
<title><application>revisor-gui</application></title>
- <para>
- The GUI version of Revisor. This is the actual package containing the
Graphical User Interface, as opposed to <xref
linkend="Revisor_Documentation-Installation-Packages-revisor" />. Depends on
<xref linkend="Revisor_Documentation-Installation-Packages-revisor-cli"
/>, and thus also installs the command-line version of Revisor.
- </para>
- </formalpara>
-
- <section
id="Revisor_Documentation-Installation-Packages-YUM-RHEL">
- <title>Red Hat Enterprise Linux 5 or higher</title>
- <para>
- On Red Hat Enterprise Linux 5 or higher, and derivatives, install the
Extra Packages for Enterprise Linux (EPEL) repository.
- </para>
- <para>
- Then, give the following command:
- </para>
- <para>
- <screen># <userinput>yum install
revisor</userinput></screen>
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Installation-Packages-YUM-Fedora">
- <title>Fedora 7 or higher</title>
- <para>
- On Fedora 7 or higher, and derivatives, no additional repository
configuration is required.
- </para>
- <para>
- Give the following command:
- </para>
- <para>
- <screen># <userinput>yum install
revisor</userinput></screen>
- </para>
- <note>
- <title>About EOL Releases</title>
- <para>
- Please bear in mind that Fedora releases that are past the point of
End-Of-Life, approximatly 13 months after the initial release, are not supported anymore
for use with Revisor. Also, the version of Revisor running on these EOL versions of Fedora
are not supported anymore.
- </para>
- </note>
- </section>
-
- </section>
-
- <section
id="Revisor_Documentation-Installation-The_Latest_And_Greatest">
- <title>The Latest and Greatest</title>
- <para>
- The latest and greatest is available from GIT, at <ulink
url="git://git.fedorahosted.org/revisor" />. To clone this repository, use:
- </para>
- <para>
- <screen>$ <userinput>git clone
git://git.fedorahosted.org/revisor/</userinput></screen>
- </para>
- <para>
- Using the GIT clone, you have the several options to start using the latest
and greatest:
- </para>
- <formalpara>
- <title>Running directly from the source</title>
- <para>
- You can run directly from within the source tree. See <xref
linkend="Revisor_Documentation-Development-Running_Revisor_from_Source" />
for more information on how to do so.
- </para>
- </formalpara>
- <warning>
- <title>Installed packages and running from source</title>
- <para>
- Do not run Revisor from source while RPM packages have been installed.
Files managed by a package will get created, moved and removed when using Revisor's
source tree, and updates to the installed RPM packages will destroy these changes.
- </para>
- </warning>
- <formalpara>
- <title>Building your own packages</title>
- <para>
- You can create your own packages, so that you have all the benefits of
RPM. See <xref
linkend="Revisor_Documentation-Development-Building_Revisor_Packages" /> for
more information on how to do so.
- </para>
- </formalpara>
- </section>
-
-</chapter>
-
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Introduction.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Introduction.xml
deleted file mode 100644
index 465fbf2..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Introduction.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Introduction">
- <title>Introduction</title>
- <para>
- Revisor is a community product by Fedora Unity. Amongst other features, it allows
the creation of installation media and live media in the easiest possible manner, through
a click-and-go GUI. This chapter gives some insight on how and why Revisor was born, and
how the product evolved since.
- </para>
-
- <section id="Revisor_Documentation-Introduction-History_Of_Revisor">
- <title>History of Revisor</title>
- <para>
- Revisor development started in December 2006, during the Fedora 7 development
cycle, in which -you might recall- the Fedora Core repository, maintained by Red Hat, and
Fedora Extras repository, mostly maintained by the community, were merged into one large
repository being maintained by both community members as well as Red Hat employees -which
are mostly community members hired by Red Hat -so community altogether. Before then Red
Hat employees maintained Fedora Core -as the set of packages upstream for Red Hat's
Enterprise product- and the community maintained a repository with additional software;
Fedora Extras. Red Hat composed the Fedora distribution every once in a while, but the
merge introduced the possibility for packages that were in Fedora Extras to be included in
the main distribution, and for the community to also (co-)maintain the (former) Fedora
Core packages that originally made up the distribution.
- </para>
- <para>
- In addition to this huge merge of packages, Red Hat employees were also able
to release the entire build process to the community, meaning that from the moment the
source is committed up and until the release is announced, the entire process is open. Not
that is was all behind closed doors or proprietary or anything, the community just
couldn't really play with it as much. We now have koji (build system), mash
(repository compose from build system products), bodhi (updates release system),
livecd-tools (compose tool for live media) and pungi (compose tool for installation
media).
- </para>
- <para>
- Composing media was an obscure process up and until the moment these tools
exposed the best way to compose (a set of) installation media. Fedora Unity had been
building and releasing so-called Re-Spins1 regularly, but they were built using a
not-so-very intelligent bash script. Like hundreds if not thousands of other parties that
needed to build their own media one way or the other, the entire process was based on the
best educated guess of what should happen. Luckily, in the FOSS world an educated guess is
often a very good guess, despite the fact that one keeps learning even years after the
original engagement.
- </para>
- <para>
- When in December 2006 the compose tools hit a stage in which they were
released to the public, Fedora Unity was eager to get these tools and study them and use
them for composing their Re-Spins. Up and until then, Re-Spins were composed with the
aforementioned bash script that didn't do much but trigger the appropriate commands in
a sequence; There wasn't any dependency resolving between the packages included nor
did we know exactly how a release was supposed to be composed -it was our educated guess
of how it could happen. Although it often led to success, we've had many, many failed
Re-Spins as well. With a handful of volunteers, you can imagine the amount of frustration
that might give. Fedora Unity was eager to improve their Re-Spin process.
- </para>
- <para>
- So, early February 2007, a number of Fedora Unity members attended “FUDCon
2007” in Boston, and presented a working GUI front-end to livecd-tools and pungi enabling
regular users to also re-compose or re-spin the installation media and live media they had
been getting from the Fedora Project. Revisor at this point just made it “as easy as
possible”. Besides the possibilities of pungi and livecd-tools themselves, the wizard
Revisor had apparently was very, very useful to mere mortals. From that point on, things
took off.
- </para>
- <para>
- Fedora Unity decided Revisor could accomplish more then just being a
front-end to existing compose tools and enable someone to tweak a lot of settings as well.
In March 2007, Revisor was rebuild from the ground up in March 2007 to allow a more
flexible process, more dependent on the configuration directives it was given and less so
on the processes of the existing tools. When in San Diego at the Red Hat Summit (early May
2007), Robert 'Bob' Jensen and Jonathan Steffan gave a presentation on
“Customizing Fedora”, the responses were amazing. Since then Revisor has evolved from a
front-end to existing tools to the complete compose tool it is today, with lots of
configuration options for specific use-cases.
- </para>
- <para>
- For users, Revisor is particularly useful because it has a GUI front-end
wizard, which, with the defaults settings, will just succeed in getting a user the media
he/she wants. If a user decides he needs little adjustment of the media, the GUI allows
for selecting the most common options. If a user decides he needs some less common
adjustments, the configuration options gives him very granular control -and as long as the
documentation on all the options is sufficient, users will be able to make those less
common adjustments.
- </para>
- <para>
- For administrators on the other hand, Revisor is the tool that gives so much
granular control over what happens, that it can serve almost every specific use-case. In
this aspect, Revisor could potentially replace the compose tools administrators have been
developing themselves with a consistent and flexible program flow.
- </para>
- <para>
- This document should enable you to study the process of composing
installation and live media, and comprehend the logic Revisor adds to that process.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Introduction-The_Installation_Media_Challenge">
- <title>The Installation Media Challenge</title>
- <para>
- When Fedora Unity first started doing these so-called Re-Spins, the challenge
ahead could maybe be explained like this:
- </para>
- <para>
- <emphasis>When a user downloads a Fedora release and installs the
distribution, the user will need to download and install a number of updates. The “older”
the release becomes, the more updates will be available, and the greater the total
download size of these updates the user will need to download on top of the download size
of the original release media.</emphasis>
- </para>
- <para>
- “older” is in quotes on purpose, because really for an operating system -or
“distribution” if you will- being released every 6 months, “old” is quite a relative
concept. The number of updates available however, at any given time during the release
cycle, may range from 0 right after the release (which has never happened before), to the
total amount of packages installed on the user's system (often over 2000). You can
imagine the size of these updates ranging from 0 MB to an astonishing 2GB(!), only 6
months after the initial release.
- </para>
- <para>
- Some of us do not have the bandwidth capacity or enough data transfer quota
to download this many extra, rather useless bits. In addition, some of us do not have an
Internet connection at all, and thus benefit getting the updates from Re-Spins directly.
- </para>
- <para>
- The use of updates in Re-Spins has several more beneficial side-effects,
which we'll explain in more detail later on in this document. Long story short; If for
some reason the software used to compose the media (the release) with does not work for
your hardware or your specific needs, updated software incorporated in the composed
installer images might resolve that problem.
- </para>
- <para>
- This is the original challenge the Fedora Unity team resolved a long time
ago, and is at the base of what Revisor does nowadays.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Introduction-The_Live_Media_Challenge">
- <title>The Live Media Challenge</title>
- <para>
- Back in the day Fedora Core 5 was the most recent release, Fedora Unity
created so-called live media using Kadischi. In that time, live media could only have a
read-only root file system and was not as feature-rich as live media is today. However,
just before Revisor came to life, two applications were developed; pungi for creating
installation media, and livecd-tools for creating live media. These two applications did
their work well; The media composed for a release, including many different custom live
media spins were, and still are, created with these tools. Immediately, the Revisor
developers set themselves a target to provide a single interface to both of those tools.
- </para>
- </section>
-
-</chapter>
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Plugins.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Plugins.xml
deleted file mode 100644
index adcca82..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Plugins.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Plugins">
- <title>Plugins</title>
- <para>
- para
- </para>
-
- <section id="Revisor_Documentation-Plugins-Upstream">
- <title>Upstream Plugins</title>
- <para>
- Plugins available from upstream, maintained by upstream
- </para>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Cobbler_Plugin">
- <title>Cobbler Plugin</title>
- <para>
- The Cobbler plugin is able to put the product composed into a Cobbler
environment, by handing off the built product to the existing Cobbler infrastructure as a
<emphasis>distro</emphasis>, and creating a
<emphasis>profile</emphasis>.
- </para>
- <para>
- Using this module, one can automatically import the Revisor product into
a Cobbler environment, and immediately use the new Cobbler
<emphasis>profile</emphasis> to start deploying or automated testing, maybe.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Composer_Plugin">
- <title>Composer Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Delta_Plugin">
- <title>Delta Plugin</title>
- <para>
- A small change to a ISO image does not require you to download the
complete ISO image if you have a copy of the old ISO image.
- </para>
- <note>
- <title>Only applicable to (...)</title>
- <para>
- The generation of Delta ISO images is only applicable to situations
in which the ISO image does not contain SquashFS images. SquashFS images are smaller, but
all SquashFS images are unique. Since the Delta principle is based on similarities, and no
two SquashFS images are alike, creating a Delta on two ISO images containing SquashFS
images will lead to a Delta pratically the same size as the SquashFS image. For Live Media
that compresses the ext3 filesystem image into a SquashFS image, since that SquashFS image
is probably over 97% of the size of the ISO image, creating Delta images for compressed
Live Media does not make sense. For installation media however, most RPMs would be similar
as well as (potentially) the installer images.
- </para>
- </note>
- </section>
-
- <section id="Revisor_Documentation-Plugins-Upstream-GUI_Plugin">
- <title>GUI (Graphical User Interface) Plugin</title>
- <para>
- Yes, the Graphical User Interface for Revisor is actually a plugin.
- </para>
- </section>
-
- <section id="Revisor_Documentation-Plugins-Upstream-HUB_Plugin">
- <title>HUB Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Isolinux_Plugin">
- <title>Isolinux Plugin</title>
- <titleabbrev id="Isolinux_Plugin">Isolinux
Plugin</titleabbrev>
- <para>
- The isolinux plugin adds the
<literal>--isolinux-cfg</literal> command-line option to Revisor. Specify a
file here, and the original <filename>isolinux.cfg</filename> that is built as
part of the compose process is replaced by the
<filename>isolinux.cfg</filename> specified.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Jigdo_Plugin">
- <title>Jigdo Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Mock_Plugin">
- <title>Mock Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Rebrand_Plugin">
- <title>Rebrand Plugin</title>
- <para>
- The rebrand plugin hooks in to Revisor at several different stages. The
goal of this plugin is to ensure no trademarked packages end up on the media. Trademarked
packages may include <application>fedora-logos</application>,
<application>redhat-logos</application>, and so forth.
- </para>
- <para>
- The plugin adds a <literal>--rebrand</literal> option, to
which you can specify the name of your new product. When rebranding Fedora to Omega for
example, specifying <literal>--rebrand Omega</literal> would be sufficient to
make sure the product does not have any Fedora trademarks.
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Reuse_Installer_Images_Plugin">
- <title>Reuse Installer Images Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Server_Plugin">
- <title>Server Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Plugins-Upstream-Virtualization_Plugin">
- <title>Virtualization Plugin</title>
- <para>
- para
- </para>
- </section>
-
- <section id="Revisor_Documentation-Plugins-Upstream-WUI_Plugin">
- <title>WUI (Web-based User Interface) Plugin</title>
- <para>
- para
- </para>
- </section>
-
- </section>
-
- <section id="Revisor_Documentation-Plugins-Writing_Your_Own">
- <title>Writing Your Own Plugins</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Testing.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Testing.xml
deleted file mode 100644
index 2450faf..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Testing.xml
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Testing">
- <title>Testing</title>
- <para>
- The following test cases describe different types of testing a new Revisor
release.
- </para>
-
- <section id="Revisor_Documentation-Testing-Simple_Test_Cases">
- <title>Simple Test Cases</title>
- <para>
- This section has a few simple test cases ensuring configuration shipped with
Revisor works as anticipated.
- </para>
-
- <section
id="Revisor_Documentation-Testing-Simple_Test_cases-Packages">
- <title>Packages</title>
- <para>
- Install the <application>revisor-cli</application>:
- </para>
- <para>
- <screen># <userinput>yum --enablerepo=updates-testing install
revisor</userinput></screen>
- </para>
- <para>
- Installed are all dependencies for the Revisor CLI interface. Make sure
<application>spin-kickstarts</application> is installed, a package for sample
kickstarts.
- </para>
- <para>
- Starting Revisor as follows should not show any error messages related to
Revisor attempting to start up it's GUI interface:
- </para>
- <para>
- <screen>#
<userinput>revisor</userinput></screen>
- </para>
-
- <formalpara>
- <title>Configuration Files</title>
- <para>
- The following configuration files should exist:
- </para>
- </formalpara>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>/etc/revisor/revisor.conf</filename>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Each section should have a configuration file listed as
<literal>main</literal>.
- </para>
- <para>
- And, of course, every configuration file listed in each section. In this
case, the following snippet is easy enough:
- </para>
- <para>
- <screen>$ <userinput>i=0; \
-configfiles="`grep ^main /etc/revisor/revisor.conf | \
- sed -r -e 's/^main.*=\s*(.*)/\1/g'`"
-
-for configfile in $configfiles; do \
- [ ! -f $file ] && i=1; \
-done; \
-echo $i</userinput></screen>
- </para>
- <para>
- Another way to test the configuration file is to execute:
- </para>
- <para>
- <screen>$ <userinput>revisor --list-models
>/dev/null</userinput></screen>
- </para>
- <para>
- If everything is well, since <literal>STDOUT</literal> is
redirected to <filename>/dev/null</filename>, you should see no messages at
all.
- </para>
-
- </section>
-
- <section
id="Revisor_Documentation-Testing-Simple_Test_Cases-Configuration_Files">
- <title>Configuration Files</title>
- <para>
- The main Revisor configuration file is
<filename>/etc/revisor/revisor.conf</filename>. The file lists a series of
models, each having their own YUM configuration file in
<filename>/etc/revisor/conf.d/</filename>.
- </para>
- <formalpara>
- <title>Testing</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- For each model in
<filename>/etc/revisor/revisor.conf</filename>, the
<code>main</code> setting for that model should point to a valid file.
- </para>
- </listitem>
- <listitem>
- <para>
- Each YUM configuration file should work. To verify, run
the following command for each configuration file:
- </para>
- <para>
- <screen>$ yum -c
<replaceable>$file</replaceable> list kernel</screen>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </formalpara>
- <formalpara>
- <title>Known Errors</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Revisor has baseurls in YUM repositories set to <ulink
url="http://localrepo" />. This URL will not be retrievable for many
people, but allows the developers to quickly change mirrors.
- </para>
- </listitem>
- <listitem>
- <para>
- Repositories that are unavailable at the moment of
testing will throw errors Revisor can't do anything about.
- </para>
- </listitem>
- <listitem>
- <para>
- If the directories
<filename>revisor-yumcache/</filename> and
<filename>revisor/</filename> in <filename>/var/tmp/</filename>,
the default working directory, are not writeable for the user then YUM will throw
permission denied errors.
- </para>
- <para>
- Remove <filename>/var/tmp/revisor/</filename>
and <filename>/var/tmp/revisor-yumcache/</filename> or run the command with
root permissions.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </formalpara>
- </section>
-
- <section
id="Revisor_Documentation-Testing-Simple_Test_Cases-Compose_Results">
- <title>Requirements for Compose Results</title>
- <para>
- Although heavily dependent on Anaconda for this part, these are still
requirements
- </para>
-
- <formalpara>
- <title>ld-linux.so.2</title>
- <para>
- In the <filename>initrd.img</filename> of the composed
product, if 32-bit, <filename>/lib/ld-linux.so.2</filename> (or any other
version) should link to <filename>/lib/ld-2.9.so</filename> (or any other
version). If <filename>/lib/ld-linux.so.2</filename> links to itself, the
media will fail to install.
- </para>
- </formalpara>
- <formalpara>
- <title>How to test</title>
- <para>
- In a terminal, type the following command:
- </para>
- </formalpara>
- <para>
- <screen>$ <userinput>lsinitrd /path/to/initrd | grep
ld-linux</userinput></screen>
- </para>
- <para>
- See also: <ulink
url="https://www.redhat.com/archives/anaconda-devel-list/2009-Februa...
/>
- </para>
-
- </section>
- </section>
-
- <section id="Revisor_Documentation-Testing-Complex_Test_Cases">
- <title>Complex Test Cases</title>
- <para>
- para
- </para>
- </section>
-
- <section id="Revisor_Documentation-Testing-Specific_Test_Cases">
- <title>Specific Test Cases</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Tips_and_Tricks.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Tips_and_Tricks.xml
deleted file mode 100644
index 488a957..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Tips_and_Tricks.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Tips_and_Tricks">
- <title>Tips and Tricks</title>
- <para>
- para
- </para>
-
- <section
id="Revisor_Documentation-Tips_and_Tricks-The_spin-kickstarts_Package">
- <title>The spin-kickstarts Package</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tips_and_Tricks-Even_More_Debugging">
- <title>Even More Debugging</title>
- <para>
- something about using -x to buildinstall scripts
- </para>
- </section>
-
- <section id="Revisor_Documentation-Tips_and_Tricks-ksvalidator">
- <title>Kickstart Validator</title>
- <para>
- something about using -x to buildinstall scripts
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tips_and_Tricks-Using_Mirrormanager_For_Mirror_Redirection">
- <title>Using Mirrormanager for Mirror Redirection</title>
- <para>
- Something about using Mirrormanager to redirect you to the local mirror (so
you do not have to edit YUM configuration files).
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tips_and_Tricks-The_localrepo_DNS_Alias">
- <title>Using The localrepo DNS Alias</title>
- <para>
- Something about using the localrepo DNS alias to point to your local mirror
(either through real DNS or through /etc/hosts), so you do not have to edit the YUM
configuration files.
- </para>
- </section>
-
-</chapter>
-
diff --git
a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Tweaking_The_Build_Process.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Tweaking_The_Build_Process.xml
deleted file mode 100644
index d095289..0000000
---
a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Tweaking_The_Build_Process.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Tweaking_The_Build_Process">
- <title>Tweaking the build process</title>
- <para>
- para
- </para>
-
- <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Reusing_Existing_Installer_Images">
- <title>Reusing Existing Installer Images</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Building_The_Installer_Images_In_Mock">
- <title>Building The Installer Images in Mock</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Omitting-isomd5sum">
- <title>Omitting isomd5sums</title>
- <para>
- para
- </para>
- </section>
-
- <section
id="Revisor_Documentation-Tweaking_The_Build_Process-Omitting-sha1sums">
- <title>Omitting SHA1SUMS</title>
- <para>
- para
- </para>
- </section>
-
-</chapter>
-
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Using_Kickstart.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation-Using_Kickstart.xml
deleted file mode 100644
index 7575bea..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation-Using_Kickstart.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="Revisor_Documentation-Using_Kickstart">
- <title>Using Kickstart</title>
- <para>
- Kickstart is a configuration file format for automating installation procedures.
Or at least, it was, originally. Nowadays, kickstart files are used as input to the
compose tools, including Revisor.
- </para>
- <para>
- Revisor again is unique in that it does not require a kickstart file for input.
The other tools only take kickstart configuration files. Revisor though allows most of
what is in a kickstart file to be configured interactively in Graphical User Interface
mode.
- </para>
-
- <section
id="Revisor_Documentation-Using_Kickstart-How_Kickstart_Is_Used">
- <title>How Kickstart Is Used</title>
- <para>
- There's two cases in which a kickstart file is used differently. One is
during the compose of installation media, and the other of course is during the compose of
live media, or virtualization media.
- </para>
-
- <section
id="Revisor_Documentation-Using_Kickstart-How_Kickstart_Is_Used-Installation_Media">
- <title>Installation Media</title>
- <para>
- In the case of installation media, the following settings are used:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <formalpara>
-
<title><literal>repo</literal></title>
- <para>
- The <literal>repo</literal> command in
kickstart is used when Revisor is configured to use the repositories configured in the
kickstart file only. Use <literal>kickstart_repos = 1</literal> to enable this
feature, or set the appropriate checkbox in the Revisor GUI.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
-
<title><literal>%packages</literal></title>
- <para>
- The <literal>%packages</literal> section in
kickstart is used to determine the RPM payload on the installation media. It can include
groups and packages, and exclude packages. It accepts wildcards, both in includes and
excludes of packages (but not groups).
- </para>
- </formalpara>
- </listitem>
- </itemizedlist>
- </para>
- <note>
- <title>@core and @base</title>
- <para>
- By default, groups @core and @base are included in the package
manifest. You can specify @base to not be included, by using <literal>%packages
--nobase</literal>, but @core cannot be excluded using a kickstart package
manifest.
- </para>
- </note>
- <para>
- Using <literal>kickstart_exact</literal>, you can exclude
@core and @base so that you need to explicitly select them in the kickstart package
manifest.
- </para>
- <para>
- Using <literal>kickstart_exact_nevra</literal> ...
- </para>
- </section>
- </section>
-
- <section
id="Revisor_Documentation-Using_Kickstart-The_Kickstart_Package_Manifest">
- <title>The Kickstart Package Manifest</title>
- <para>
- para
- </para>
-
- <formalpara>
- <title>Group @core</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Group @base</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Including groups of packages</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Including a single package</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Excluding a single package</title>
- <para>
- para
- </para>
- </formalpara>
-
- <formalpara>
- <title>Using wildcard matches</title>
- <para>
- para
- </para>
- </formalpara>
-
- <section
id="Revisor_Documentation-Using_Kickstart-Using_Kickstart_With_Package_NEVRA">
- <title>Using Kickstart with Package NEVRA</title>
- <para>
- para
- </para>
- </section>
-
- </section>
-
-</chapter>
-
diff --git a/doc/Revisor_Documentation/en-US/images/icon.svg
b/doc/Revisor_Documentation/en-US/images/icon.svg
deleted file mode 100644
index c471a60..0000000
--- a/doc/Revisor_Documentation/en-US/images/icon.svg
+++ /dev/null
@@ -1,3936 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"
standalone="no"?>
-<!-- Created with Inkscape (
http://www.inkscape.org/) -->
-<svg
-
xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
-
xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-
xmlns:dc="http://purl.org/dc/elements/1.1/"
-
xmlns:cc="http://web.resource.org/cc/"
-
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-
xmlns:svg="http://www.w3.org/2000/svg"
-
xmlns="http://www.w3.org/2000/svg"
-
xmlns:xlink="http://www.w3.org/1999/xlink"
-
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd&q...
-
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- width="32"
- height="32"
- id="svg3017"
- sodipodi:version="0.32"
- inkscape:version="0.44+devel"
- sodipodi:docname="book.svg"
- sodipodi:docbase="/home/andy/Desktop">
- <metadata
- id="metadata489">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
-
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- inkscape:window-height="480"
- inkscape:window-width="858"
- inkscape:pageshadow="0"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- inkscape:zoom="1"
- inkscape:cx="16"
- inkscape:cy="15.944056"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:current-layer="svg3017" />
- <defs
- id="defs3019">
- <linearGradient
- id="linearGradient2381">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="stop2383" />
- <stop
- style="stop-color:white;stop-opacity:0"
- offset="1"
- id="stop2385" />
- </linearGradient>
- <linearGradient
- x1="415.73831"
- y1="11.854"
- x2="418.13361"
- y2="18.8104"
- id="XMLID_1758_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="0"
- id="stop3903" />
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="1"
- id="stop3905" />
- <a:midPointStop
- style="stop-color:#CCCCCC"
- offset="0" />
- <a:midPointStop
- style="stop-color:#CCCCCC"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#F2F2F2"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="500.70749"
- y1="-13.2441"
- x2="513.46442"
- y2="-2.1547"
- id="XMLID_1757_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0"
- id="stop3890" />
- <stop
- style="stop-color:#96bad6;stop-opacity:1"
- offset="1"
- id="stop3892" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#96BAD6"
- offset="1" />
- </linearGradient>
- <clipPath
- id="XMLID_1755_">
- <use
- id="use3874"
- x="0"
- y="0"
- width="744.09448"
- height="600"
- xlink:href="#XMLID_343_" />
- </clipPath>
- <linearGradient
- x1="505.62939"
- y1="-14.9526"
- x2="527.49402"
- y2="-0.7536"
- id="XMLID_1756_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0"
- id="stop3877" />
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0.51120001"
- id="stop3879" />
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0.64609998"
- id="stop3881" />
- <stop
- style="stop-color:#16336e;stop-opacity:1"
- offset="1"
- id="stop3883" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5112" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.6461" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#16336E"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="471.0806"
- y1="201.07761"
- x2="481.91711"
- y2="210.4977"
- id="XMLID_1754_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#6498c1;stop-opacity:1"
- offset="0.005618"
- id="stop3863" />
- <stop
- style="stop-color:#79a9cc;stop-opacity:1"
- offset="0.2332"
- id="stop3865" />
- <stop
- style="stop-color:#a4cde2;stop-opacity:1"
- offset="0.74049997"
- id="stop3867" />
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="1"
- id="stop3869" />
- <a:midPointStop
- style="stop-color:#6498C1"
- offset="5.618000e-003" />
- <a:midPointStop
- style="stop-color:#6498C1"
- offset="0.4438" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="516.57672"
- y1="-15.769"
- x2="516.57672"
- y2="0.84280002"
- id="XMLID_1753_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1"
- offset="0"
- id="stop3851" />
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="1"
- id="stop3853" />
- <a:midPointStop
- style="stop-color:#B2B2B2"
- offset="0" />
- <a:midPointStop
- style="stop-color:#B2B2B2"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#F2F2F2"
- offset="1" />
- </linearGradient>
- <clipPath
- id="XMLID_1751_">
- <use
- id="use3837"
- x="0"
- y="0"
- width="744.09448"
- height="600"
- xlink:href="#XMLID_338_" />
- </clipPath>
- <linearGradient
- x1="506.09909"
- y1="-11.5137"
- x2="527.99609"
- y2="2.7063999"
- id="XMLID_1752_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0"
- id="stop3840" />
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0.51120001"
- id="stop3842" />
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0.64609998"
- id="stop3844" />
- <stop
- style="stop-color:#16336e;stop-opacity:1"
- offset="1"
- id="stop3846" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5112" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.6461" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#16336E"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="468.2915"
- y1="204.7612"
- x2="479.39871"
- y2="214.4166"
- id="XMLID_1750_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0"
- id="stop3830" />
- <stop
- style="stop-color:#96bad6;stop-opacity:1"
- offset="1"
- id="stop3832" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#96BAD6"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="502.70749"
- y1="115.3013"
- x2="516.39001"
- y2="127.1953"
- id="XMLID_1749_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0"
- id="stop3818" />
- <stop
- style="stop-color:#96bad6;stop-opacity:1"
- offset="1"
- id="stop3820" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#96BAD6"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="501.0903"
- y1="-19.2544"
- x2="531.85413"
- y2="0.72390002"
- id="XMLID_1748_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0"
- id="stop3803" />
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0.51120001"
- id="stop3805" />
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0.64609998"
- id="stop3807" />
- <stop
- style="stop-color:#16336e;stop-opacity:1"
- offset="1"
- id="stop3809" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5112" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.6461" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#16336E"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="481.23969"
- y1="212.5742"
- x2="472.92981"
- y2="207.4967"
- id="XMLID_2275_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#f3403f;stop-opacity:1"
- offset="0"
- id="stop9947" />
- <stop
- style="stop-color:#d02a28;stop-opacity:1"
- offset="0.37889999"
- id="stop9949" />
- <stop
- style="stop-color:#b21714;stop-opacity:1"
- offset="0.77649999"
- id="stop9951" />
- <stop
- style="stop-color:#a6100c;stop-opacity:1"
- offset="1"
- id="stop9953" />
- <a:midPointStop
- style="stop-color:#F3403F"
- offset="0" />
- <a:midPointStop
- style="stop-color:#F3403F"
- offset="0.4213" />
- <a:midPointStop
- style="stop-color:#A6100C"
- offset="1" />
- </linearGradient>
- <clipPath
- id="XMLID_2273_">
- <use
- id="use9933"
- x="0"
- y="0"
- width="744.09448"
- height="600"
- xlink:href="#XMLID_960_" />
- </clipPath>
- <linearGradient
- x1="473.7681"
- y1="209.17529"
- x2="486.98099"
- y2="213.2001"
- id="XMLID_2274_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#f3403f;stop-opacity:1"
- offset="0"
- id="stop9936" />
- <stop
- style="stop-color:#d02a28;stop-opacity:1"
- offset="0.37889999"
- id="stop9938" />
- <stop
- style="stop-color:#b21714;stop-opacity:1"
- offset="0.77649999"
- id="stop9940" />
- <stop
- style="stop-color:#a6100c;stop-opacity:1"
- offset="1"
- id="stop9942" />
- <a:midPointStop
- style="stop-color:#F3403F"
- offset="0" />
- <a:midPointStop
- style="stop-color:#F3403F"
- offset="0.4213" />
- <a:midPointStop
- style="stop-color:#A6100C"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="478.21341"
- y1="-131.9297"
- x2="469.85818"
- y2="-140.28481"
- id="XMLID_2272_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
- <stop
- style="stop-color:#f3403f;stop-opacity:1"
- offset="0"
- id="stop9917" />
- <stop
- style="stop-color:#d02a28;stop-opacity:1"
- offset="0.37889999"
- id="stop9919" />
- <stop
- style="stop-color:#b21714;stop-opacity:1"
- offset="0.77649999"
- id="stop9921" />
- <stop
- style="stop-color:#a6100c;stop-opacity:1"
- offset="1"
- id="stop9923" />
- <a:midPointStop
- style="stop-color:#F3403F"
- offset="0" />
- <a:midPointStop
- style="stop-color:#F3403F"
- offset="0.4213" />
- <a:midPointStop
- style="stop-color:#A6100C"
- offset="1" />
- </linearGradient>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- style="overflow:visible"
- id="TriangleInM">
- <path
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
- transform="scale(-0.4,-0.4)"
- style="fill:#5c5c4f"
- id="path3197" />
- </marker>
- <linearGradient
- x1="200.7363"
- y1="100.4028"
- x2="211.99519"
- y2="89.143997"
- id="XMLID_3298_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#bfbfbf;stop-opacity:1"
- offset="0"
- id="stop20103" />
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="1"
- id="stop20105" />
- <a:midPointStop
- offset="0"
- style="stop-color:#BFBFBF" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#BFBFBF" />
- <a:midPointStop
- offset="1"
- style="stop-color:#F2F2F2" />
- </linearGradient>
- <linearGradient
- x1="200.7363"
- y1="100.4028"
- x2="211.99519"
- y2="89.143997"
- id="linearGradient36592"
- xlink:href="#XMLID_3298_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
- <linearGradient
- x1="181.2925"
- y1="110.8481"
- x2="192.6369"
- y2="99.5037"
- id="XMLID_3297_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0"
- id="stop20096" />
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="1"
- id="stop20098" />
- <a:midPointStop
- offset="0"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="1"
- style="stop-color:#CCCCCC" />
- </linearGradient>
- <linearGradient
- x1="181.2925"
- y1="110.8481"
- x2="192.6369"
- y2="99.5037"
- id="linearGradient36595"
- xlink:href="#XMLID_3297_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
- <linearGradient
- x1="211.77589"
- y1="105.7749"
- x2="212.6619"
- y2="108.2092"
- id="XMLID_3296_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#0f6124;stop-opacity:1"
- offset="0"
- id="stop20087" />
- <stop
- style="stop-color:#219630;stop-opacity:1"
- offset="1"
- id="stop20089" />
- <a:midPointStop
- offset="0"
- style="stop-color:#0F6124" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#0F6124" />
- <a:midPointStop
- offset="1"
- style="stop-color:#219630" />
- </linearGradient>
- <linearGradient
- x1="211.77589"
- y1="105.7749"
- x2="212.6619"
- y2="108.2092"
- id="linearGradient36677"
- xlink:href="#XMLID_3296_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
- <linearGradient
- x1="208.9834"
- y1="116.8296"
- x2="200.0811"
- y2="96.834602"
- id="XMLID_3295_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1"
- offset="0"
- id="stop20076" />
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0.5"
- id="stop20078" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="1"
- id="stop20080" />
- <a:midPointStop
- offset="0"
- style="stop-color:#B2B2B2" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#B2B2B2" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="1"
- style="stop-color:#FFFFFF" />
- </linearGradient>
- <linearGradient
- x1="208.9834"
- y1="116.8296"
- x2="200.0811"
- y2="96.834602"
- id="linearGradient36604"
- xlink:href="#XMLID_3295_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
- <linearGradient
- x1="195.5264"
- y1="97.911102"
- x2="213.5213"
- y2="115.9061"
- id="XMLID_3294_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="0"
- id="stop20069" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="1"
- id="stop20071" />
- <a:midPointStop
- offset="0"
- style="stop-color:#CCCCCC" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#CCCCCC" />
- <a:midPointStop
- offset="1"
- style="stop-color:#FFFFFF" />
- </linearGradient>
- <linearGradient
- x1="195.5264"
- y1="97.911102"
- x2="213.5213"
- y2="115.9061"
- id="linearGradient36607"
- xlink:href="#XMLID_3294_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
- <linearGradient
- x1="186.1938"
- y1="109.1343"
- x2="206.6881"
- y2="88.639999"
- id="XMLID_3293_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1"
- offset="0"
- id="stop20056" />
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0.16850001"
- id="stop20058" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0.23029999"
- id="stop20060" />
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0.2809"
- id="stop20062" />
- <stop
- style="stop-color:#c2c2c2;stop-opacity:1"
- offset="0.5"
- id="stop20064" />
- <a:midPointStop
- offset="0"
- style="stop-color:#B2B2B2" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#B2B2B2" />
- <a:midPointStop
- offset="0.1685"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.2303"
- style="stop-color:#FFFFFF" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#FFFFFF" />
- <a:midPointStop
- offset="0.2809"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#C2C2C2" />
- </linearGradient>
- <linearGradient
- x1="186.1938"
- y1="109.1343"
- x2="206.6881"
- y2="88.639999"
- id="linearGradient36610"
- xlink:href="#XMLID_3293_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
- <linearGradient
- x1="184.8569"
- y1="112.2676"
- x2="211.94099"
- y2="89.541397"
- id="XMLID_3292_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1"
- offset="0"
- id="stop20043" />
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0.16850001"
- id="stop20045" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0.23029999"
- id="stop20047" />
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0.2809"
- id="stop20049" />
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="1"
- id="stop20051" />
- <a:midPointStop
- offset="0"
- style="stop-color:#B2B2B2" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#B2B2B2" />
- <a:midPointStop
- offset="0.1685"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.2303"
- style="stop-color:#FFFFFF" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#FFFFFF" />
- <a:midPointStop
- offset="0.2809"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="1"
- style="stop-color:#CCCCCC" />
- </linearGradient>
- <linearGradient
- x1="184.8569"
- y1="112.2676"
- x2="211.94099"
- y2="89.541397"
- id="linearGradient36613"
- xlink:href="#XMLID_3292_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
- <marker
- refX="0"
- refY="0"
- orient="auto"
- style="overflow:visible"
- id="TriangleOutM">
- <path
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
- transform="scale(0.4,0.4)"
-
style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
- id="path3238" />
- </marker>
- <linearGradient
- x1="165.3"
- y1="99.5"
- x2="165.3"
- y2="115.9"
- id="XMLID_3457_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#999;stop-opacity:1"
- offset="0"
- id="stop8309" />
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1"
- offset="0.30000001"
- id="stop8311" />
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1"
- offset="1"
- id="stop8313" />
- <a:midPointstop
- offset="0"
- style="stop-color:#999999" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#999999" />
- <a:midPointstop
- offset="0.3"
- style="stop-color:#B2B2B2" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#B2B2B2" />
- <a:midPointstop
- offset="1"
- style="stop-color:#B2B2B2" />
- </linearGradient>
- <linearGradient
- x1="165.3"
- y1="99.5"
- x2="165.3"
- y2="115.9"
- id="lg1997"
- xlink:href="#XMLID_3457_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
- <linearGradient
- x1="175"
- y1="99.800003"
- x2="175"
- y2="112.5"
- id="XMLID_3456_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#737373;stop-opacity:1"
- offset="0"
- id="stop8300" />
- <stop
- style="stop-color:#191919;stop-opacity:1"
- offset="0.60000002"
- id="stop8302" />
- <stop
- style="stop-color:#191919;stop-opacity:1"
- offset="1"
- id="stop8304" />
- <a:midPointstop
- offset="0"
- style="stop-color:#737373" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#737373" />
- <a:midPointstop
- offset="0.6"
- style="stop-color:#191919" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#191919" />
- <a:midPointstop
- offset="1"
- style="stop-color:#191919" />
- </linearGradient>
- <linearGradient
- x1="175"
- y1="99.800003"
- x2="175"
- y2="112.5"
- id="lg2000"
- xlink:href="#XMLID_3456_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
- <linearGradient
- x1="168.8"
- y1="107.1"
- x2="164.5"
- y2="110"
- id="XMLID_3455_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#666;stop-opacity:1"
- offset="0"
- id="stop8291" />
- <stop
- style="stop-color:#191919;stop-opacity:1"
- offset="0.69999999"
- id="stop8293" />
- <stop
- style="stop-color:#191919;stop-opacity:1"
- offset="1"
- id="stop8295" />
- <a:midPointstop
- offset="0"
- style="stop-color:#666666" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#666666" />
- <a:midPointstop
- offset="0.7"
- style="stop-color:#191919" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#191919" />
- <a:midPointstop
- offset="1"
- style="stop-color:#191919" />
- </linearGradient>
- <linearGradient
- x1="168.8"
- y1="107.1"
- x2="164.5"
- y2="110"
- id="lg2003"
- xlink:href="#XMLID_3455_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
- <linearGradient
- id="lg63694">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="stop63696" />
- <stop
- style="stop-color:white;stop-opacity:0"
- offset="1"
- id="stop63698" />
- </linearGradient>
- <linearGradient
- x1="458"
- y1="483"
- x2="465.20001"
- y2="271.39999"
- id="lg2006"
- xlink:href="#lg63694"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
- <linearGradient
- x1="176.3"
- y1="110.1"
- x2="158.7"
- y2="105"
- id="XMLID_3453_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#666;stop-opacity:1"
- offset="0"
- id="stop8271" />
- <stop
- style="stop-color:#737373;stop-opacity:1"
- offset="0.2"
- id="stop8273" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="1"
- id="stop8275" />
- <a:midPointstop
- offset="0"
- style="stop-color:#666666" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#666666" />
- <a:midPointstop
- offset="0.2"
- style="stop-color:#737373" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#737373" />
- <a:midPointstop
- offset="1"
- style="stop-color:#FFFFFF" />
- </linearGradient>
- <linearGradient
- x1="176.3"
- y1="110.1"
- x2="158.7"
- y2="105"
- id="lg2009"
- xlink:href="#XMLID_3453_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
- <linearGradient
- x1="173.60001"
- y1="118.9"
- x2="172.8"
- y2="128.2"
- id="XMLID_3449_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#ecb300;stop-opacity:1"
- offset="0"
- id="stop8232" />
- <stop
- style="stop-color:#fff95e;stop-opacity:1"
- offset="0.60000002"
- id="stop8234" />
- <stop
- style="stop-color:#ecd600;stop-opacity:1"
- offset="1"
- id="stop8236" />
- <a:midPointstop
- offset="0"
- style="stop-color:#ECB300" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#ECB300" />
- <a:midPointstop
- offset="0.6"
- style="stop-color:#FFF95E" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#FFF95E" />
- <a:midPointstop
- offset="1"
- style="stop-color:#ECD600" />
- </linearGradient>
- <linearGradient
- x1="173.60001"
- y1="118.9"
- x2="172.8"
- y2="128.2"
- id="lg2016"
- xlink:href="#XMLID_3449_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
- <radialGradient
- cx="284.60001"
- cy="172.60001"
- r="6.5"
- fx="284.60001"
- fy="172.60001"
- id="XMLID_3448_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
- <stop
- style="stop-color:#ecb300;stop-opacity:1"
- offset="0"
- id="stop8219" />
- <stop
- style="stop-color:#ecb300;stop-opacity:1"
- offset="0.30000001"
- id="stop8221" />
- <stop
- style="stop-color:#c96b00;stop-opacity:1"
- offset="0.89999998"
- id="stop8223" />
- <stop
- style="stop-color:#9a5500;stop-opacity:1"
- offset="1"
- id="stop8225" />
- <a:midPointstop
- offset="0"
- style="stop-color:#ECB300" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#ECB300" />
- <a:midPointstop
- offset="0.3"
- style="stop-color:#ECB300" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#ECB300" />
- <a:midPointstop
- offset="0.9"
- style="stop-color:#C96B00" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#C96B00" />
- <a:midPointstop
- offset="1"
- style="stop-color:#9A5500" />
- </radialGradient>
- <radialGradient
- cx="284.60001"
- cy="172.60001"
- r="6.5"
- fx="284.60001"
- fy="172.60001"
- id="rg2020"
- xlink:href="#XMLID_3448_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)"
/>
- <linearGradient
- x1="158.10001"
- y1="123"
- x2="164.2"
- y2="126.6"
- id="XMLID_3447_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#ecd600;stop-opacity:1"
- offset="0"
- id="stop8204" />
- <stop
- style="stop-color:#ffffb3;stop-opacity:1"
- offset="0.30000001"
- id="stop8206" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="1"
- id="stop8208" />
- <a:midPointstop
- offset="0"
- style="stop-color:#ECD600" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#ECD600" />
- <a:midPointstop
- offset="0.3"
- style="stop-color:#FFFFB3" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#FFFFB3" />
- <a:midPointstop
- offset="1"
- style="stop-color:#FFFFFF" />
- </linearGradient>
- <linearGradient
- x1="158.10001"
- y1="123"
- x2="164.2"
- y2="126.6"
- id="lg2026"
- xlink:href="#XMLID_3447_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
- <radialGradient
- cx="280.89999"
- cy="163.7"
- r="10.1"
- fx="280.89999"
- fy="163.7"
- id="XMLID_3446_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="stop8197" />
- <stop
- style="stop-color:#fff95e;stop-opacity:1"
- offset="1"
- id="stop8199" />
- <a:midPointstop
- offset="0"
- style="stop-color:#FFFFFF" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#FFFFFF" />
- <a:midPointstop
- offset="1"
- style="stop-color:#FFF95E" />
- </radialGradient>
- <radialGradient
- cx="280.89999"
- cy="163.7"
- r="10.1"
- fx="280.89999"
- fy="163.7"
- id="rg2029"
- xlink:href="#XMLID_3446_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
- <linearGradient
- x1="156.5"
- y1="122.7"
- x2="180.10001"
- y2="122.7"
- id="XMLID_3445_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#ecb300;stop-opacity:1"
- offset="0"
- id="stop8184" />
- <stop
- style="stop-color:#ffe900;stop-opacity:1"
- offset="0.2"
- id="stop8186" />
- <stop
- style="stop-color:#ffffb3;stop-opacity:1"
- offset="0.30000001"
- id="stop8188" />
- <stop
- style="stop-color:#ffe900;stop-opacity:1"
- offset="0.40000001"
- id="stop8190" />
- <stop
- style="stop-color:#d68100;stop-opacity:1"
- offset="1"
- id="stop8192" />
- <a:midPointstop
- offset="0"
- style="stop-color:#ECB300" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#ECB300" />
- <a:midPointstop
- offset="0.2"
- style="stop-color:#FFE900" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#FFE900" />
- <a:midPointstop
- offset="0.3"
- style="stop-color:#FFFFB3" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#FFFFB3" />
- <a:midPointstop
- offset="0.4"
- style="stop-color:#FFE900" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#FFE900" />
- <a:midPointstop
- offset="1"
- style="stop-color:#D68100" />
- </linearGradient>
- <linearGradient
- x1="156.5"
- y1="122.7"
- x2="180.10001"
- y2="122.7"
- id="lg2032"
- xlink:href="#XMLID_3445_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
- <linearGradient
- x1="156.39999"
- y1="115.4"
- x2="180.10001"
- y2="115.4"
- id="XMLID_3444_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#ecb300;stop-opacity:1"
- offset="0"
- id="stop8171" />
- <stop
- style="stop-color:#ffe900;stop-opacity:1"
- offset="0.2"
- id="stop8173" />
- <stop
- style="stop-color:#ffffb3;stop-opacity:1"
- offset="0.30000001"
- id="stop8175" />
- <stop
- style="stop-color:#ffe900;stop-opacity:1"
- offset="0.40000001"
- id="stop8177" />
- <stop
- style="stop-color:#d68100;stop-opacity:1"
- offset="1"
- id="stop8179" />
- <a:midPointstop
- offset="0"
- style="stop-color:#ECB300" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#ECB300" />
- <a:midPointstop
- offset="0.2"
- style="stop-color:#FFE900" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#FFE900" />
- <a:midPointstop
- offset="0.3"
- style="stop-color:#FFFFB3" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#FFFFB3" />
- <a:midPointstop
- offset="0.4"
- style="stop-color:#FFE900" />
- <a:midPointstop
- offset="0.5"
- style="stop-color:#FFE900" />
- <a:midPointstop
- offset="1"
- style="stop-color:#D68100" />
- </linearGradient>
- <linearGradient
- x1="156.39999"
- y1="115.4"
- x2="180.10001"
- y2="115.4"
- id="lg2035"
- xlink:href="#XMLID_3444_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
- <linearGradient
- x1="379.70001"
- y1="167.89999"
- x2="383.89999"
- y2="172.89999"
- id="lg4286_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="s16159" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0.1"
- id="s16161" />
- <stop
- style="stop-color:#737373;stop-opacity:1"
- offset="1"
- id="s16163" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.1" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#737373"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="379.60001"
- y1="167.8"
- x2="383.79999"
- y2="172"
- id="lg6416"
- xlink:href="#lg4286_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)"
/>
- <linearGradient
- x1="384.20001"
- y1="169.8"
- x2="384.79999"
- y2="170.39999"
- id="lg4285_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
- <stop
- style="stop-color:#737373;stop-opacity:1"
- offset="0"
- id="s16152" />
- <stop
- style="stop-color:#d9d9d9;stop-opacity:1"
- offset="1"
- id="s16154" />
- <ns:midPointStop
- style="stop-color:#737373"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#737373"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#D9D9D9"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="384.20001"
- y1="169.8"
- x2="384.79999"
- y2="170.39999"
- id="lg6453"
- xlink:href="#lg4285_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
- <linearGradient
- x1="380.5"
- y1="172.60001"
- x2="382.79999"
- y2="173.7"
- id="lg4284_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
- <stop
- style="stop-color:gray;stop-opacity:1"
- offset="0"
- id="s16145" />
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="1"
- id="s16147" />
- <ns:midPointStop
- style="stop-color:#808080"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#808080"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#E5E5E5"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="380.5"
- y1="172.60001"
- x2="382.79999"
- y2="173.7"
- id="lg6456"
- xlink:href="#lg4284_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
- <radialGradient
- cx="347.29999"
- cy="244.5"
- r="5.1999998"
- fx="347.29999"
- fy="244.5"
- id="lg4282_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
- <stop
- style="stop-color:#333;stop-opacity:1"
- offset="0"
- id="s16135" />
- <stop
- style="stop-color:#999;stop-opacity:1"
- offset="1"
- id="s16137" />
- <ns:midPointStop
- style="stop-color:#333333"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#333333"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#999999"
- offset="1" />
- </radialGradient>
- <linearGradient
- x1="310.39999"
- y1="397.70001"
- x2="310.89999"
- y2="399.5"
- id="lg4280_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
- <stop
- style="stop-color:#ffcd00;stop-opacity:1"
- offset="0"
- id="s16111" />
- <stop
- style="stop-color:#ffffb3;stop-opacity:1"
- offset="0.60000002"
- id="s16113" />
- <stop
- style="stop-color:#ffffb3;stop-opacity:1"
- offset="1"
- id="s16115" />
- <ns:midPointStop
- style="stop-color:#FFCD00"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#FFCD00"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFFFB3"
- offset="0.6" />
- <ns:midPointStop
- style="stop-color:#FFFFB3"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFFFB3"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="310.39999"
- y1="397.70001"
- x2="310.89999"
- y2="399.5"
- id="lg6467"
- xlink:href="#lg4280_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
- <linearGradient
- x1="310.89999"
- y1="395.79999"
- x2="313.29999"
- y2="403.10001"
- id="lg4279_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
- <stop
- style="stop-color:#ffffb3;stop-opacity:1"
- offset="0"
- id="s16100" />
- <stop
- style="stop-color:#ffffb3;stop-opacity:1"
- offset="0.40000001"
- id="s16102" />
- <stop
- style="stop-color:#ffcd00;stop-opacity:1"
- offset="0.89999998"
- id="s16104" />
- <stop
- style="stop-color:#ffcd00;stop-opacity:1"
- offset="1"
- id="s16106" />
- <ns:midPointStop
- style="stop-color:#FFFFB3"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#FFFFB3"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFFFB3"
- offset="0.4" />
- <ns:midPointStop
- style="stop-color:#FFFFB3"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFCD00"
- offset="0.9" />
- <ns:midPointStop
- style="stop-color:#FFCD00"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFCD00"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="310.89999"
- y1="395.79999"
- x2="313.29999"
- y2="403.10001"
- id="lg6465"
- xlink:href="#lg4279_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
- <linearGradient
- x1="307.79999"
- y1="395.20001"
- x2="313.79999"
- y2="413.60001"
- id="lg4278_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
- <stop
- style="stop-color:#ffffb3;stop-opacity:1"
- offset="0"
- id="s16091" />
- <stop
- style="stop-color:#fcd72f;stop-opacity:1"
- offset="0.40000001"
- id="s16093" />
- <stop
- style="stop-color:#ffcd00;stop-opacity:1"
- offset="1"
- id="s16095" />
- <ns:midPointStop
- style="stop-color:#FFFFB3"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#FFFFB3"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FCD72F"
- offset="0.4" />
- <ns:midPointStop
- style="stop-color:#FCD72F"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFCD00"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="306.5"
- y1="393"
- x2="309"
- y2="404"
- id="lg6400"
- xlink:href="#lg4278_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
- <linearGradient
- x1="352.10001"
- y1="253.60001"
- x2="348.5"
- y2="237.8"
- id="lg4276_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
- <stop
- style="stop-color:#ffff87;stop-opacity:1"
- offset="0"
- id="s16077" />
- <stop
- style="stop-color:#ffad00;stop-opacity:1"
- offset="1"
- id="s16079" />
- <ns:midPointStop
- style="stop-color:#FFFF87"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#FFFF87"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFAD00"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="335.60001"
- y1="354.79999"
- x2="337.89999"
- y2="354.79999"
- id="lg4275_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
- <stop
- style="stop-color:#d9d9d9;stop-opacity:1"
- offset="0"
- id="s16057" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0.80000001"
- id="s16059" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="1"
- id="s16061" />
- <ns:midPointStop
- style="stop-color:#D9D9D9"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#D9D9D9"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.8" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="335.60001"
- y1="354.79999"
- x2="337.89999"
- y2="354.79999"
- id="lg6463"
- xlink:href="#lg4275_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
- <linearGradient
- x1="337.39999"
- y1="353.10001"
- x2="339.39999"
- y2="357.10001"
- id="lg4274_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="s16048" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0.1"
- id="s16050" />
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="1"
- id="s16052" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.1" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#CCCCCC"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="337.39999"
- y1="353.10001"
- x2="339.39999"
- y2="357.10001"
- id="lg6461"
- xlink:href="#lg4274_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
- <linearGradient
- x1="334.39999"
- y1="355.5"
- x2="335.5"
- y2="356.79999"
- id="lg4273_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="s16041" />
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="1"
- id="s16043" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="5.6e-003" />
- <ns:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#CCCCCC"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="334.39999"
- y1="355.5"
- x2="335.5"
- y2="356.79999"
- id="lg6381"
- xlink:href="#lg4273_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
- <linearGradient
- x1="348.39999"
- y1="247.39999"
- x2="354.10001"
- y2="242"
- id="lg4271_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="0"
- id="s16025" />
- <stop
- style="stop-color:#9e9e9e;stop-opacity:1"
- offset="0.40000001"
- id="s16027" />
- <stop
- style="stop-color:black;stop-opacity:1"
- offset="1"
- id="s16029" />
- <ns:midPointStop
- style="stop-color:#F2F2F2"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#F2F2F2"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#000000"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="351.29999"
- y1="257.29999"
- x2="346.29999"
- y2="235.5"
- id="lg4270_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#ffff87;stop-opacity:1"
- offset="0"
- id="s16007" />
- <stop
- style="stop-color:#ffad00;stop-opacity:1"
- offset="1"
- id="s16009" />
- <ns:midPointStop
- style="stop-color:#FFFF87"
- offset="0" />
- <ns:midPointStop
- style="stop-color:#FFFF87"
- offset="0.5" />
- <ns:midPointStop
- style="stop-color:#FFAD00"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="351.29999"
- y1="257.29999"
- x2="346.29999"
- y2="235.5"
- id="lg6459"
- xlink:href="#lg4270_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
- <linearGradient
- x1="43.799999"
- y1="32.5"
- x2="63.299999"
- y2="66.400002"
- id="XMLID_2708_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="stop75318" />
- <stop
- style="stop-color:#fffcea;stop-opacity:1"
- offset="1"
- id="stop75320" />
- <a:midPointStop
- style="stop-color:#FFFFFF"
- offset="0" />
- <a:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#FFFCEA"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="43.799999"
- y1="32.5"
- x2="63.299999"
- y2="66.400002"
- id="lg1907"
- xlink:href="#XMLID_2708_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-29,-22.6)" />
- <linearGradient
- x1="52.5"
- y1="40.400002"
- x2="58.200001"
- y2="64"
- id="XMLID_2707_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#ffdea0;stop-opacity:1"
- offset="0"
- id="stop75305" />
- <stop
- style="stop-color:#ffd89e;stop-opacity:1"
- offset="0.30000001"
- id="stop75307" />
- <stop
- style="stop-color:#ffd79e;stop-opacity:1"
- offset="0.30000001"
- id="stop75309" />
- <stop
- style="stop-color:#dbaf6d;stop-opacity:1"
- offset="0.69999999"
- id="stop75311" />
- <stop
- style="stop-color:#6f4c24;stop-opacity:1"
- offset="1"
- id="stop75313" />
- <a:midPointStop
- style="stop-color:#FFDEA0"
- offset="0" />
- <a:midPointStop
- style="stop-color:#FFDEA0"
- offset="0.6" />
- <a:midPointStop
- style="stop-color:#FFD79E"
- offset="0.3" />
- <a:midPointStop
- style="stop-color:#FFD79E"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#DBAF6D"
- offset="0.7" />
- <a:midPointStop
- style="stop-color:#DBAF6D"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#6F4C24"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="52.5"
- y1="40.400002"
- x2="58.200001"
- y2="64"
- id="lg1910"
- xlink:href="#XMLID_2707_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-29,-22.6)" />
- <linearGradient
- x1="58"
- y1="73.199997"
- x2="44.5"
- y2="19"
- id="XMLID_2704_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-29,-22.6)">
- <stop
- style="stop-color:#d4a96c;stop-opacity:1"
- offset="0.5"
- id="stop75284" />
- <stop
- style="stop-color:#dcb273;stop-opacity:1"
- offset="0.60000002"
- id="stop75286" />
- <stop
- style="stop-color:#f0ca87;stop-opacity:1"
- offset="0.80000001"
- id="stop75288" />
- <stop
- style="stop-color:#ffdc96;stop-opacity:1"
- offset="0.69999999"
- id="stop75290" />
- <stop
- style="stop-color:#c18a42;stop-opacity:1"
- offset="1"
- id="stop75292" />
- <a:midPointStop
- style="stop-color:#D4A96C"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#D4A96C"
- offset="0.6" />
- <a:midPointStop
- style="stop-color:#FFDC96"
- offset="0.7" />
- <a:midPointStop
- style="stop-color:#FFDC96"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#C18A42"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="53.700001"
- y1="32"
- x2="53.700001"
- y2="64.599998"
- id="XMLID_2703_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#e5c9b0;stop-opacity:1"
- offset="0"
- id="stop75268" />
- <stop
- style="stop-color:#e5c9b0;stop-opacity:1"
- offset="0.40000001"
- id="stop75270" />
- <stop
- style="stop-color:#c0aa94;stop-opacity:1"
- offset="1"
- id="stop75272" />
- <a:midPointStop
- style="stop-color:#E5C9B0"
- offset="0" />
- <a:midPointStop
- style="stop-color:#E5C9B0"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#E5C9B0"
- offset="0.4" />
- <a:midPointStop
- style="stop-color:#E5C9B0"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#C0AA94"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="53.700001"
- y1="32"
- x2="53.700001"
- y2="64.599998"
- id="lg1916"
- xlink:href="#XMLID_2703_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-29,-22.6)" />
- <linearGradient
- x1="224.31"
- y1="19.450001"
- x2="214.33"
- y2="11.46"
- id="XMLID_419_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#404040;stop-opacity:1"
- offset="0"
- id="s1903" />
- <stop
- style="stop-color:#6d6d6d;stop-opacity:1"
- offset="0.33000001"
- id="s1905" />
- <stop
- style="stop-color:#e9e9e9;stop-opacity:1"
- offset="1"
- id="s1907" />
- <a:midPointStop
- offset="0"
- style="stop-color:#404040" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#404040" />
- <a:midPointStop
- offset="0.33"
- style="stop-color:#6D6D6D" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#6D6D6D" />
- <a:midPointStop
- offset="1"
- style="stop-color:#E9E9E9" />
- </linearGradient>
- <linearGradient
- x1="221.84"
- y1="32.779999"
- x2="212.2"
- y2="20.27"
- id="lg1988"
- xlink:href="#XMLID_419_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
- <linearGradient
- x1="228.35001"
- y1="33.279999"
- x2="215.42999"
- y2="33.279999"
- id="lg1900"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="s1902" />
- <stop
- style="stop-color:white;stop-opacity:0"
- offset="1"
- id="s1906" />
- <a:midPointStop
- style="stop-color:#575757"
- offset="0" />
- <a:midPointStop
- style="stop-color:#575757"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#6D6D6D"
- offset="0.33" />
- <a:midPointStop
- style="stop-color:#6D6D6D"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#D3D3D3"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="234.81"
- y1="33.279999"
- x2="228.27"
- y2="33.279999"
- id="lg1908"
- xlink:href="#lg1900"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
- <linearGradient
- x1="228.35001"
- y1="33.279999"
- x2="215.42999"
- y2="33.279999"
- id="XMLID_416_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#575757;stop-opacity:1"
- offset="0"
- id="s1874" />
- <stop
- style="stop-color:#6d6d6d;stop-opacity:1"
- offset="0.33000001"
- id="s1876" />
- <stop
- style="stop-color:#d3d3d3;stop-opacity:1"
- offset="1"
- id="s1878" />
- <a:midPointStop
- offset="0"
- style="stop-color:#575757" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#575757" />
- <a:midPointStop
- offset="0.33"
- style="stop-color:#6D6D6D" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#6D6D6D" />
- <a:midPointStop
- offset="1"
- style="stop-color:#D3D3D3" />
- </linearGradient>
- <linearGradient
- x1="228.35001"
- y1="33.279999"
- x2="215.42999"
- y2="33.279999"
- id="lg1991"
- xlink:href="#XMLID_416_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
- <radialGradient
- cx="603.19"
- cy="230.77"
- r="1.67"
- fx="603.19"
- fy="230.77"
- id="x5010_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
- <stop
- style="stop-color:#c9ffc9;stop-opacity:1"
- offset="0"
- id="stop29201" />
- <stop
- style="stop-color:#23a11f;stop-opacity:1"
- offset="1"
- id="stop29203" />
- <a:midPointStop
- offset="0"
- style="stop-color:#C9FFC9" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#C9FFC9" />
- <a:midPointStop
- offset="1"
- style="stop-color:#23A11F" />
- </radialGradient>
- <radialGradient
- cx="603.19"
- cy="230.77"
- r="1.67"
- fx="603.19"
- fy="230.77"
- id="radialGradient5711"
- xlink:href="#x5010_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
- <linearGradient
- x1="592.31"
- y1="162.60001"
- x2="609.32001"
- y2="145.59"
- id="lg5722"
- xlink:href="#x5003_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
- <linearGradient
- x1="601.48999"
- y1="170.16"
- x2="613.84003"
- y2="170.16"
- id="x5002_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#d9d9d9;stop-opacity:1"
- offset="0"
- id="stop29134" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0.2"
- id="stop29136" />
- <stop
- style="stop-color:#999;stop-opacity:1"
- offset="1"
- id="stop29138" />
- <a:midPointStop
- offset="0"
- style="stop-color:#D9D9D9" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#D9D9D9" />
- <a:midPointStop
- offset="0.20"
- style="stop-color:#FFFFFF" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#FFFFFF" />
- <a:midPointStop
- offset="1"
- style="stop-color:#999999" />
- </linearGradient>
- <linearGradient
- x1="601.48999"
- y1="170.16"
- x2="613.84003"
- y2="170.16"
- id="lg5725"
- xlink:href="#x5002_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
- <linearGradient
- x1="592.20001"
- y1="156.45"
- x2="609.98999"
- y2="174.23"
- id="x5004_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
- <stop
- style="stop-color:#d9d9d9;stop-opacity:1"
- offset="0"
- id="stop29157" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="1"
- id="stop29159" />
- <a:midPointStop
- offset="0"
- style="stop-color:#D9D9D9" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#D9D9D9" />
- <a:midPointStop
- offset="1"
- style="stop-color:#FFFFFF" />
- </linearGradient>
- <linearGradient
- x1="592.20001"
- y1="156.45"
- x2="609.98999"
- y2="174.23"
- id="lg5728"
- xlink:href="#x5004_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
- <linearGradient
- x1="592.31"
- y1="162.60001"
- x2="609.32001"
- y2="145.59"
- id="x5003_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="0"
- id="stop29143" />
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="1"
- id="stop29145" />
- <a:midPointStop
- offset="0"
- style="stop-color:#F2F2F2" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#F2F2F2" />
- <a:midPointStop
- offset="1"
- style="stop-color:#E5E5E5" />
- </linearGradient>
- <linearGradient
- x1="592.31"
- y1="162.60001"
- x2="609.32001"
- y2="145.59"
- id="lg5732"
- xlink:href="#x5003_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
- <linearGradient
- x1="592.20001"
- y1="156.45"
- x2="609.98999"
- y2="174.24001"
- id="x5000_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
- <stop
- style="stop-color:#d9d9d9;stop-opacity:1"
- offset="0"
- id="stop29124" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="1"
- id="stop29126" />
- <a:midPointStop
- offset="0"
- style="stop-color:#D9D9D9" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#D9D9D9" />
- <a:midPointStop
- offset="1"
- style="stop-color:#FFFFFF" />
- </linearGradient>
- <linearGradient
- x1="592.20001"
- y1="156.45"
- x2="609.98999"
- y2="174.24001"
- id="lg5735"
- xlink:href="#x5000_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
- <linearGradient
- x1="308.54999"
- y1="149.89999"
- x2="299.72"
- y2="148.83"
- id="XMLID_2433_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#d6d6d6;stop-opacity:1"
- offset="0"
- id="71615" />
- <stop
- style="stop-color:#a5a5a5;stop-opacity:1"
- offset="1"
- id="71617" />
- <a:midPointStop
- offset="0"
- style="stop-color:#D6D6D6" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#D6D6D6" />
- <a:midPointStop
- offset="1"
- style="stop-color:#A5A5A5" />
- </linearGradient>
- <linearGradient
- x1="308.54999"
- y1="149.89999"
- x2="299.72"
- y2="148.83"
- id="lg1952"
- xlink:href="#XMLID_2433_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
- <radialGradient
- cx="307.39999"
- cy="121"
- r="23.35"
- fx="307.39999"
- fy="121"
- id="XMLID_2432_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
- <stop
- style="stop-color:#d2d2d2;stop-opacity:1"
- offset="0.19"
- id="71592" />
- <stop
- style="stop-color:#cfcfcf;stop-opacity:1"
- offset="0.44999999"
- id="71594" />
- <stop
- style="stop-color:#c7c7c7;stop-opacity:1"
- offset="0.60000002"
- id="71596" />
- <stop
- style="stop-color:#b9b9b9;stop-opacity:1"
- offset="0.74000001"
- id="71598" />
- <stop
- style="stop-color:#a4a4a4;stop-opacity:1"
- offset="0.86000001"
- id="71600" />
- <stop
- style="stop-color:#8a8a8a;stop-opacity:1"
- offset="0.95999998"
- id="71602" />
- <stop
- style="stop-color:gray;stop-opacity:1"
- offset="1"
- id="71604" />
- <a:midPointStop
- offset="0.19"
- style="stop-color:#D2D2D2" />
- <a:midPointStop
- offset="0.8"
- style="stop-color:#D2D2D2" />
- <a:midPointStop
- offset="1"
- style="stop-color:#808080" />
- </radialGradient>
- <radialGradient
- cx="307.39999"
- cy="121"
- r="23.35"
- fx="307.39999"
- fy="121"
- id="radialGradient2331"
- xlink:href="#XMLID_2432_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-276.62,-121.54)" />
- <linearGradient
- x1="294.13"
- y1="127.07"
- x2="294.13"
- y2="142.2"
- id="XMLID_2430_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#b5d8ff;stop-opacity:1"
- offset="0"
- id="71582" />
- <stop
- style="stop-color:black;stop-opacity:1"
- offset="1"
- id="71584" />
- <a:midPointStop
- offset="0"
- style="stop-color:#B5D8FF" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#B5D8FF" />
- <a:midPointStop
- offset="1"
- style="stop-color:#000000" />
- </linearGradient>
- <linearGradient
- x1="294.13"
- y1="127.07"
- x2="294.13"
- y2="142.2"
- id="lg2820"
- xlink:href="#XMLID_2430_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
- <linearGradient
- x1="279.10999"
- y1="148.03"
- x2="309.16"
- y2="148.03"
- id="XMLID_2429_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#e1e1e1;stop-opacity:1"
- offset="0"
- id="71564" />
- <stop
- style="stop-color:#e1e1e1;stop-opacity:1"
- offset="0.25"
- id="71566" />
- <stop
- style="stop-color:#a5a5a5;stop-opacity:1"
- offset="0.44"
- id="71568" />
- <stop
- style="stop-color:#a5a5a5;stop-opacity:1"
- offset="1"
- id="71570" />
- <a:midPointStop
- offset="0"
- style="stop-color:#E1E1E1" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#E1E1E1" />
- <a:midPointStop
- offset="0.25"
- style="stop-color:#E1E1E1" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#E1E1E1" />
- <a:midPointStop
- offset="0.44"
- style="stop-color:#A5A5A5" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#A5A5A5" />
- <a:midPointStop
- offset="1"
- style="stop-color:#A5A5A5" />
- </linearGradient>
- <linearGradient
- x1="279.10999"
- y1="148.03"
- x2="309.16"
- y2="148.03"
- id="lg2818"
- xlink:href="#XMLID_2429_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
- <radialGradient
- cx="622.34302"
- cy="14.449"
- r="26.496"
- fx="622.34302"
- fy="14.449"
- id="lg3499_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
- <stop
- style="stop-color:#23468e;stop-opacity:1"
- offset="0"
- id="stop10972" />
- <stop
- style="stop-color:#012859;stop-opacity:1"
- offset="1"
- id="stop10974" />
- <a:midPointStop
- offset="0"
- style="stop-color:#23468E" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#23468E" />
- <a:midPointStop
- offset="1"
- style="stop-color:#012859" />
- </radialGradient>
- <radialGradient
- cx="622.34302"
- cy="14.449"
- r="26.496"
- fx="622.34302"
- fy="14.449"
- id="rg5791"
- xlink:href="#lg3499_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
- <linearGradient
- x1="616.112"
- y1="76.247002"
- x2="588.14099"
- y2="60.742001"
- id="lg3497_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#01326e;stop-opacity:1"
- offset="0"
- id="stop10962" />
- <stop
- style="stop-color:#012859;stop-opacity:1"
- offset="1"
- id="stop10964" />
- <a:midPointStop
- offset="0"
- style="stop-color:#01326E" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#01326E" />
- <a:midPointStop
- offset="1"
- style="stop-color:#012859" />
- </linearGradient>
- <linearGradient
- x1="617.698"
- y1="82.445999"
- x2="585.95203"
- y2="54.848999"
- id="lg3496_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0"
- id="stop10950" />
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="1"
- id="stop10952" />
- <a:midPointStop
- offset="0"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="1"
- style="stop-color:#CCCCCC" />
- </linearGradient>
- <linearGradient
- x1="617.698"
- y1="82.445999"
- x2="585.95203"
- y2="54.848999"
- id="lg5794"
- xlink:href="#lg3496_"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="601.39001"
- y1="55.341"
- x2="588.29199"
- y2="71.515999"
- id="lg3495_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#d9d9d9;stop-opacity:1"
- offset="0"
- id="stop10941" />
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="0.52200001"
- id="stop10943" />
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="1"
- id="stop10945" />
- <a:midPointStop
- offset="0"
- style="stop-color:#D9D9D9" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#D9D9D9" />
- <a:midPointStop
- offset="0.522"
- style="stop-color:#F2F2F2" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#F2F2F2" />
- <a:midPointStop
- offset="1"
- style="stop-color:#CCCCCC" />
- </linearGradient>
- <linearGradient
- x1="601.39001"
- y1="55.341"
- x2="588.29199"
- y2="71.515999"
- id="lg5771"
- xlink:href="#lg3495_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
- <linearGradient
- x1="611.34601"
- y1="55.279999"
- x2="590.39001"
- y2="81.157997"
- id="lg3494_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#d9d9d9;stop-opacity:1"
- offset="0"
- id="stop10932" />
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="0.52200001"
- id="stop10934" />
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="1"
- id="stop10936" />
- <a:midPointStop
- offset="0"
- style="stop-color:#D9D9D9" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#D9D9D9" />
- <a:midPointStop
- offset="0.522"
- style="stop-color:#F2F2F2" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#F2F2F2" />
- <a:midPointStop
- offset="1"
- style="stop-color:#CCCCCC" />
- </linearGradient>
- <linearGradient
- x1="611.34601"
- y1="55.279999"
- x2="590.39001"
- y2="81.157997"
- id="lg5774"
- xlink:href="#lg3494_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
- <linearGradient
- x1="798.72998"
- y1="69.839996"
- x2="799.04999"
- y2="70.709999"
- id="g3302_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#005e00;stop-opacity:1"
- offset="0"
- id="s6504" />
- <stop
- style="stop-color:#23a11f;stop-opacity:1"
- offset="1"
- id="s6506" />
- <a:midPointstop
- style="stop-color:#005E00"
- offset="0" />
- <a:midPointstop
- style="stop-color:#005E00"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#23A11F"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="798.72998"
- y1="69.839996"
- x2="799.04999"
- y2="70.709999"
- id="lg5851"
- xlink:href="#g3302_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
- <linearGradient
- x1="779.19"
- y1="122.73"
- x2="811.69"
- y2="149.74001"
- id="g3301_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="0"
- id="s6483" />
- <stop
- style="stop-color:#eee;stop-opacity:1"
- offset="0.17"
- id="s6485" />
- <stop
- style="stop-color:#e3e3e3;stop-opacity:1"
- offset="0.34"
- id="s6487" />
- <stop
- style="stop-color:#cfcfcf;stop-opacity:1"
- offset="0.50999999"
- id="s6489" />
- <stop
- style="stop-color:#b4b4b4;stop-opacity:1"
- offset="0.67000002"
- id="s6491" />
- <stop
- style="stop-color:#919191;stop-opacity:1"
- offset="0.83999997"
- id="s6493" />
- <stop
- style="stop-color:#666;stop-opacity:1"
- offset="1"
- id="s6495" />
- <a:midPointstop
- style="stop-color:#F2F2F2"
- offset="0" />
- <a:midPointstop
- style="stop-color:#F2F2F2"
- offset="0.71" />
- <a:midPointstop
- style="stop-color:#666666"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="779.19"
- y1="122.73"
- x2="811.69"
- y2="149.74001"
- id="lg5855"
- xlink:href="#g3301_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
- <clipPath
- id="g3299_">
- <use
- id="use6469"
- x="0"
- y="0"
- width="1005.92"
- height="376.97"
- xlink:href="#g101_" />
- </clipPath>
- <radialGradient
- cx="1189.9301"
- cy="100.05"
- r="40.400002"
- fx="1189.9301"
- fy="100.05"
- id="g3300_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="s6472" />
- <stop
- style="stop-color:white;stop-opacity:0"
- offset="1"
- id="s6474" />
- <a:midPointstop
- style="stop-color:#FFFFFF"
- offset="0" />
- <a:midPointstop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#000000"
- offset="1" />
- </radialGradient>
- <radialGradient
- cx="1199.74"
- cy="97.150002"
- r="40.400002"
- fx="1199.74"
- fy="97.150002"
- id="rg5860"
- xlink:href="#g3300_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
- <linearGradient
- x1="796.38"
- y1="67.580002"
- x2="781.28003"
- y2="58.549999"
- id="g3298_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#4c8bca;stop-opacity:1"
- offset="0"
- id="s6462" />
- <stop
- style="stop-color:#b7e9ff;stop-opacity:1"
- offset="1"
- id="s6464" />
- <a:midPointstop
- style="stop-color:#4C8BCA"
- offset="0" />
- <a:midPointstop
- style="stop-color:#4C8BCA"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#B7E9FF"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="800.97998"
- y1="140.72"
- x2="777.71997"
- y2="121.76"
- id="g3297_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0"
- id="s6448" />
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="1"
- id="s6450" />
- <a:midPointstop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointstop
- style="stop-color:#E5E5E5"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#CCCCCC"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="800.97998"
- y1="140.72"
- x2="777.71997"
- y2="121.76"
- id="lg5890"
- xlink:href="#g3297_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
- <linearGradient
- x1="790.03998"
- y1="-16.33"
- x2="779.84003"
- y2="-3.73"
- id="g3296_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0,70.17)">
- <stop
- style="stop-color:#d9d9d9;stop-opacity:1"
- offset="0"
- id="s6439" />
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="0.51999998"
- id="s6441" />
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="1"
- id="s6443" />
- <a:midPointstop
- style="stop-color:#D9D9D9"
- offset="0" />
- <a:midPointstop
- style="stop-color:#D9D9D9"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#F2F2F2"
- offset="0.52" />
- <a:midPointstop
- style="stop-color:#F2F2F2"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#CCCCCC"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="790.03998"
- y1="-16.33"
- x2="779.84003"
- y2="-3.73"
- id="lg5866"
- xlink:href="#g3296_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
- <linearGradient
- x1="785.84003"
- y1="72.989998"
- x2="785.26001"
- y2="76.279999"
- id="g3293_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="s6412" />
- <stop
- style="stop-color:#737373;stop-opacity:1"
- offset="1"
- id="s6414" />
- <a:midPointstop
- style="stop-color:#FFFFFF"
- offset="0" />
- <a:midPointstop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#737373"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="785.84003"
- y1="72.989998"
- x2="785.26001"
- y2="76.279999"
- id="lg5871"
- xlink:href="#g3293_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
- <linearGradient
- x1="789.37"
- y1="69.879997"
- x2="791.03998"
- y2="77.120003"
- id="g3292_"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#999;stop-opacity:1"
- offset="0"
- id="s6403" />
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="0.28"
- id="s6405" />
- <stop
- style="stop-color:#666;stop-opacity:1"
- offset="1"
- id="s6407" />
- <a:midPointstop
- style="stop-color:#999999"
- offset="0" />
- <a:midPointstop
- style="stop-color:#999999"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#F2F2F2"
- offset="0.28" />
- <a:midPointstop
- style="stop-color:#F2F2F2"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#666666"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="789.37"
- y1="69.879997"
- x2="791.03998"
- y2="77.120003"
- id="lg5874"
- xlink:href="#g3292_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
- <linearGradient
- x1="786.65997"
- y1="136.12"
- x2="786.71002"
- y2="134.33"
- id="g3290_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
- <stop
- style="stop-color:#d9d9d9;stop-opacity:1"
- offset="0"
- id="s6380" />
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1"
- offset="1"
- id="s6382" />
- <a:midPointstop
- style="stop-color:#D9D9D9"
- offset="0" />
- <a:midPointstop
- style="stop-color:#D9D9D9"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#B2B2B2"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="786.65997"
- y1="136.12"
- x2="786.71002"
- y2="134.33"
- id="lg5878"
- xlink:href="#g3290_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
- <radialGradient
- cx="1458.77"
- cy="-5.0999999"
- r="35.130001"
- fx="1458.77"
- fy="-5.0999999"
- id="g3289_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="s6371" />
- <stop
- style="stop-color:#999;stop-opacity:1"
- offset="1"
- id="s6373" />
- <a:midPointstop
- style="stop-color:#FFFFFF"
- offset="0" />
- <a:midPointstop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#999999"
- offset="1" />
- </radialGradient>
- <radialGradient
- cx="1458.77"
- cy="-5.0999999"
- r="35.130001"
- fx="1458.77"
- fy="-5.0999999"
- id="rg5881"
- xlink:href="#g3289_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
- <radialGradient
- cx="1612.98"
- cy="-4.4699998"
- r="36.580002"
- fx="1612.98"
- fy="-4.4699998"
- id="g3288_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0"
- id="s6362" />
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1"
- offset="0.63999999"
- id="s6364" />
- <stop
- style="stop-color:#737373;stop-opacity:1"
- offset="1"
- id="s6366" />
- <a:midPointstop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointstop
- style="stop-color:#E5E5E5"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#B2B2B2"
- offset="0.64" />
- <a:midPointstop
- style="stop-color:#B2B2B2"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#737373"
- offset="1" />
- </radialGradient>
- <radialGradient
- cx="1612.98"
- cy="-4.4699998"
- r="36.580002"
- fx="1612.98"
- fy="-4.4699998"
- id="rg5884"
- xlink:href="#g3288_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
- <radialGradient
- cx="1470.5"
- cy="-10.21"
- r="33.290001"
- fx="1470.5"
- fy="-10.21"
- id="g3287_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
- <stop
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0"
- id="s6347" />
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1"
- offset="0.38999999"
- id="s6349" />
- <stop
- style="stop-color:#b1b1b1;stop-opacity:1"
- offset="0.75"
- id="s6351" />
- <stop
- style="stop-color:#aaa;stop-opacity:1"
- offset="0.88"
- id="s6353" />
- <stop
- style="stop-color:#9e9e9e;stop-opacity:1"
- offset="0.97000003"
- id="s6355" />
- <stop
- style="stop-color:#999;stop-opacity:1"
- offset="1"
- id="s6357" />
- <a:midPointstop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointstop
- style="stop-color:#E5E5E5"
- offset="0.5" />
- <a:midPointstop
- style="stop-color:#B2B2B2"
- offset="0.39" />
- <a:midPointstop
- style="stop-color:#B2B2B2"
- offset="0.87" />
- <a:midPointstop
- style="stop-color:#999999"
- offset="1" />
- </radialGradient>
- <radialGradient
- cx="1470.5"
- cy="-10.21"
- r="33.290001"
- fx="1470.5"
- fy="-10.21"
- id="rg5887"
- xlink:href="#g3287_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
- <pattern
- patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
- id="cream-spots"
- height="32"
- width="32"
- patternUnits="userSpaceOnUse">
- <g
- transform="translate(-365.3146,-513.505)"
- id="g3047">
- id="path2858" />
- <path
- inkscape:label="#path2854"
- sodipodi:nodetypes="czzzz"
- style="fill:#e3dcc0"
- id="path3060"
- d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504
381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C
372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504
390.31462,524.53704 390.31462,529.50504 z " />
-</g>
- </pattern>
- <pattern
- patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
- id="dark-cream-spots"
- height="32"
- width="32"
- patternUnits="userSpaceOnUse">
- <g
- transform="translate(-408.0946,-513.505)"
- id="dark-cream-spot"
- inkscape:label="#g3043">
- <path
- sodipodi:nodetypes="czzzz"
- style="fill:#c8c5ac"
- d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504
424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C
415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504
433.09458,524.53704 433.09458,529.50504 z "
- id="path2953" />
- </g>
- </pattern>
- <pattern
- patternTransform="matrix(0.375,0,0,0.375,379,400)"
- id="white-spots"
- height="32"
- width="32"
- patternUnits="userSpaceOnUse">
- <g
- transform="translate(-484.3997,-513.505)"
- id="white-spot"
- inkscape:label="#g3035">
- <path
- style="opacity:0.25;fill:white"
- id="path3033"
- d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504
500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C
491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504
509.39967,524.53704 509.39967,529.50504 z "
- sodipodi:nodetypes="czzzz" />
- </g>
- </pattern>
- <pattern
- patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
- id="black-spots"
- height="32"
- width="32"
- patternUnits="userSpaceOnUse">
- <g
- transform="translate(-448.3997,-513.505)"
- id="black-spot"
- inkscape:label="#g3039">
- <path
- sodipodi:nodetypes="czzzz"
- d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504
464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C
455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504
473.39967,524.53704 473.39967,529.50504 z "
- id="path2961"
- style="opacity:0.25;fill:black" />
- </g>
- </pattern>
- <linearGradient
- x1="501.0903"
- y1="-19.2544"
- x2="531.85413"
- y2="0.72390002"
- id="linearGradient17334"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0"
- id="stop17336" />
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0.51120001"
- id="stop17338" />
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0.64609998"
- id="stop17340" />
- <stop
- style="stop-color:#16336e;stop-opacity:1"
- offset="1"
- id="stop17342" />
- <a:midPointStop
- offset="0"
- style="stop-color:#B4DAEA" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#B4DAEA" />
- <a:midPointStop
- offset="0.5112"
- style="stop-color:#B4DAEA" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#B4DAEA" />
- <a:midPointStop
- offset="0.6461"
- style="stop-color:#5387BA" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#5387BA" />
- <a:midPointStop
- offset="1"
- style="stop-color:#16336E" />
- </linearGradient>
- <linearGradient
- x1="415.73831"
- y1="11.854"
- x2="418.13361"
- y2="18.8104"
- id="linearGradient17426"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
- <stop
- style="stop-color:#ccc;stop-opacity:1"
- offset="0"
- id="stop17428" />
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="1"
- id="stop17430" />
- <a:midPointStop
- offset="0"
- style="stop-color:#CCCCCC" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#CCCCCC" />
- <a:midPointStop
- offset="1"
- style="stop-color:#F2F2F2" />
- </linearGradient>
- <linearGradient
- x1="478.21341"
- y1="-131.9297"
- x2="469.85818"
- y2="-140.28481"
- id="linearGradient17434"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
- <stop
- style="stop-color:#f3403f;stop-opacity:1"
- offset="0"
- id="stop17436" />
- <stop
- style="stop-color:#d02a28;stop-opacity:1"
- offset="0.37889999"
- id="stop17438" />
- <stop
- style="stop-color:#b21714;stop-opacity:1"
- offset="0.77649999"
- id="stop17440" />
- <stop
- style="stop-color:#a6100c;stop-opacity:1"
- offset="1"
- id="stop17442" />
- <a:midPointStop
- offset="0"
- style="stop-color:#F3403F" />
- <a:midPointStop
- offset="0.4213"
- style="stop-color:#F3403F" />
- <a:midPointStop
- offset="1"
- style="stop-color:#A6100C" />
- </linearGradient>
- <linearGradient
- x1="502.70749"
- y1="115.3013"
- x2="516.39001"
- y2="127.1953"
- id="linearGradient17709"
- xlink:href="#XMLID_1749_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
- <linearGradient
- x1="506.09909"
- y1="-11.5137"
- x2="527.99609"
- y2="2.7063999"
- id="linearGradient17711"
- xlink:href="#XMLID_1752_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
- <linearGradient
- x1="516.57672"
- y1="-15.769"
- x2="516.57672"
- y2="0.84280002"
- id="linearGradient17713"
- xlink:href="#XMLID_1753_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
- <linearGradient
- x1="505.62939"
- y1="-14.9526"
- x2="527.49402"
- y2="-0.7536"
- id="linearGradient17715"
- xlink:href="#XMLID_1756_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
- <linearGradient
- x1="500.70749"
- y1="-13.2441"
- x2="513.46442"
- y2="-2.1547"
- id="linearGradient17717"
- xlink:href="#XMLID_1757_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
- <linearGradient
- x1="473.7681"
- y1="209.17529"
- x2="486.98099"
- y2="213.2001"
- id="linearGradient17721"
- xlink:href="#XMLID_2274_"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="481.23969"
- y1="212.5742"
- x2="472.92981"
- y2="207.4967"
- id="linearGradient17723"
- xlink:href="#XMLID_2275_"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="500.70749"
- y1="-13.2441"
- x2="513.46442"
- y2="-2.1547"
- id="linearGradient17416"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0"
- id="stop17418" />
- <stop
- style="stop-color:#96bad6;stop-opacity:1"
- offset="1"
- id="stop17420" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#96BAD6"
- offset="1" />
- </linearGradient>
- <defs
- id="defs9929">
- <path
- d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93
471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49
473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49
475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
- id="XMLID_960_" />
- </defs>
- <clipPath
- id="clipPath17448">
- <use
- id="use17450"
- x="0"
- y="0"
- width="744.09448"
- height="600"
- xlink:href="#XMLID_960_" />
- </clipPath>
- <linearGradient
- x1="473.7681"
- y1="209.17529"
- x2="486.98099"
- y2="213.2001"
- id="linearGradient17452"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#f3403f;stop-opacity:1"
- offset="0"
- id="stop17454" />
- <stop
- style="stop-color:#d02a28;stop-opacity:1"
- offset="0.37889999"
- id="stop17456" />
- <stop
- style="stop-color:#b21714;stop-opacity:1"
- offset="0.77649999"
- id="stop17458" />
- <stop
- style="stop-color:#a6100c;stop-opacity:1"
- offset="1"
- id="stop17460" />
- <a:midPointStop
- style="stop-color:#F3403F"
- offset="0" />
- <a:midPointStop
- style="stop-color:#F3403F"
- offset="0.4213" />
- <a:midPointStop
- style="stop-color:#A6100C"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="481.23969"
- y1="212.5742"
- x2="472.92981"
- y2="207.4967"
- id="linearGradient17463"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#f3403f;stop-opacity:1"
- offset="0"
- id="stop17465" />
- <stop
- style="stop-color:#d02a28;stop-opacity:1"
- offset="0.37889999"
- id="stop17467" />
- <stop
- style="stop-color:#b21714;stop-opacity:1"
- offset="0.77649999"
- id="stop17469" />
- <stop
- style="stop-color:#a6100c;stop-opacity:1"
- offset="1"
- id="stop17471" />
- <a:midPointStop
- style="stop-color:#F3403F"
- offset="0" />
- <a:midPointStop
- style="stop-color:#F3403F"
- offset="0.4213" />
- <a:midPointStop
- style="stop-color:#A6100C"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="481.23969"
- y1="212.5742"
- x2="472.92981"
- y2="207.4967"
- id="linearGradient17807"
- xlink:href="#XMLID_2275_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-177.1654,35.43307)" />
- <linearGradient
- x1="473.7681"
- y1="209.17529"
- x2="486.98099"
- y2="213.2001"
- id="linearGradient17810"
- xlink:href="#XMLID_2274_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-177.1654,35.43307)" />
- <linearGradient
- x1="502.70749"
- y1="115.3013"
- x2="516.39001"
- y2="127.1953"
- id="linearGradient17812"
- xlink:href="#XMLID_1749_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
- <linearGradient
- x1="506.09909"
- y1="-11.5137"
- x2="527.99609"
- y2="2.7063999"
- id="linearGradient17814"
- xlink:href="#XMLID_1752_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
- <linearGradient
- x1="516.57672"
- y1="-15.769"
- x2="516.57672"
- y2="0.84280002"
- id="linearGradient17816"
- xlink:href="#XMLID_1753_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
- <linearGradient
- x1="505.62939"
- y1="-14.9526"
- x2="527.49402"
- y2="-0.7536"
- id="linearGradient17818"
- xlink:href="#XMLID_1756_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
- <linearGradient
- x1="502.70749"
- y1="115.3013"
- x2="516.39001"
- y2="127.1953"
- id="linearGradient17347"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0"
- id="stop17349" />
- <stop
- style="stop-color:#96bad6;stop-opacity:1"
- offset="1"
- id="stop17351" />
- <a:midPointStop
- offset="0"
- style="stop-color:#5387BA" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#5387BA" />
- <a:midPointStop
- offset="1"
- style="stop-color:#96BAD6" />
- </linearGradient>
- <linearGradient
- x1="516.57672"
- y1="-15.769"
- x2="516.57672"
- y2="0.84280002"
- id="linearGradient17379"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1"
- offset="0"
- id="stop17381" />
- <stop
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="1"
- id="stop17383" />
- <a:midPointStop
- offset="0"
- style="stop-color:#B2B2B2" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#B2B2B2" />
- <a:midPointStop
- offset="1"
- style="stop-color:#F2F2F2" />
- </linearGradient>
- <linearGradient
- x1="502.70749"
- y1="115.3013"
- x2="516.39001"
- y2="127.1953"
- id="linearGradient17862"
- xlink:href="#XMLID_1749_"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)"
/>
- <linearGradient
- x1="505.62939"
- y1="-14.9526"
- x2="527.49402"
- y2="-0.7536"
- id="linearGradient17864"
- xlink:href="#XMLID_1756_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
- <defs
- id="defs3859">
- <polygon
- points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05
471.08,194.07 470.26,194.83 465.54,213.52 "
- id="XMLID_343_" />
- </defs>
- <linearGradient
- x1="471.0806"
- y1="201.07761"
- x2="481.91711"
- y2="210.4977"
- id="linearGradient17389"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#6498c1;stop-opacity:1"
- offset="0.005618"
- id="stop17391" />
- <stop
- style="stop-color:#79a9cc;stop-opacity:1"
- offset="0.2332"
- id="stop17393" />
- <stop
- style="stop-color:#a4cde2;stop-opacity:1"
- offset="0.74049997"
- id="stop17395" />
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="1"
- id="stop17397" />
- <a:midPointStop
- style="stop-color:#6498C1"
- offset="5.618000e-003" />
- <a:midPointStop
- style="stop-color:#6498C1"
- offset="0.4438" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="1" />
- </linearGradient>
- <clipPath
- id="clipPath17400">
- <use
- id="use17402"
- x="0"
- y="0"
- width="744.09448"
- height="600"
- xlink:href="#XMLID_343_" />
- </clipPath>
- <linearGradient
- x1="505.62939"
- y1="-14.9526"
- x2="527.49402"
- y2="-0.7536"
- id="linearGradient17404"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0"
- id="stop17406" />
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0.51120001"
- id="stop17408" />
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0.64609998"
- id="stop17410" />
- <stop
- style="stop-color:#16336e;stop-opacity:1"
- offset="1"
- id="stop17412" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5112" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.6461" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#16336E"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="506.09909"
- y1="-11.5137"
- x2="527.99609"
- y2="2.7063999"
- id="linearGradient17882"
- xlink:href="#XMLID_1752_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)"
/>
- <defs
- id="defs3826">
- <polygon
- points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04
469.05,196.69 468.24,197.45 463.52,216.14 "
- id="XMLID_338_" />
- </defs>
- <linearGradient
- x1="468.2915"
- y1="204.7612"
- x2="479.39871"
- y2="214.4166"
- id="linearGradient17357"
- gradientUnits="userSpaceOnUse">
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0"
- id="stop17359" />
- <stop
- style="stop-color:#96bad6;stop-opacity:1"
- offset="1"
- id="stop17361" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#96BAD6"
- offset="1" />
- </linearGradient>
- <clipPath
- id="clipPath17364">
- <use
- id="use17366"
- x="0"
- y="0"
- width="744.09448"
- height="600"
- xlink:href="#XMLID_338_" />
- </clipPath>
- <linearGradient
- x1="506.09909"
- y1="-11.5137"
- x2="527.99609"
- y2="2.7063999"
- id="linearGradient17368"
- gradientUnits="userSpaceOnUse"
-
gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0"
- id="stop17370" />
- <stop
- style="stop-color:#b4daea;stop-opacity:1"
- offset="0.51120001"
- id="stop17372" />
- <stop
- style="stop-color:#5387ba;stop-opacity:1"
- offset="0.64609998"
- id="stop17374" />
- <stop
- style="stop-color:#16336e;stop-opacity:1"
- offset="1"
- id="stop17376" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5112" />
- <a:midPointStop
- style="stop-color:#B4DAEA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.6461" />
- <a:midPointStop
- style="stop-color:#5387BA"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#16336E"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="296.4996"
- y1="188.81061"
- x2="317.32471"
- y2="209.69398"
- id="linearGradient2387"
- xlink:href="#linearGradient2381"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
- <linearGradient
- x1="296.4996"
- y1="188.81061"
- x2="317.32471"
- y2="209.69398"
- id="linearGradient5105"
- xlink:href="#linearGradient2381"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
- <linearGradient
- x1="296.4996"
- y1="188.81061"
- x2="317.32471"
- y2="209.69398"
- id="linearGradient5145"
- xlink:href="#linearGradient2381"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2381"
- id="linearGradient2371"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
- x1="296.4996"
- y1="188.81061"
- x2="317.32471"
- y2="209.69398" />
- </defs>
- <g
-
transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
- id="g5089">
- <path
- d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875
L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C
31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L
32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375
C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
- transform="translate(282.8327,227.1903)"
-
style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
- id="path5091" />
- <rect
- width="27.85074"
- height="29.369793"
- rx="1.1414107"
- ry="1.1414107"
- x="286.96509"
- y="227.63805"
- style="fill:#032c87"
- id="rect5093" />
- <path
- d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L
287.29827,254.83069 L 288.43262,225.43675 z "
- style="fill:white"
- id="rect5095" />
- <path
- d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091
301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C
307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432
309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
- style="fill:#a70000;fill-opacity:1;stroke-width:2"
- id="path5097" />
- <rect
- width="25.241802"
- height="29.736675"
- rx="0.89682275"
- ry="0.89682275"
- x="290.73544"
- y="220.92249"
- style="fill:#809cc9"
- id="rect5099" />
- <path
- d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C
581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C
574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
- transform="matrix(0.499065,-0.866565,0,1,0,0)"
- style="fill:#4573b3;fill-opacity:1"
- id="rect5101" />
- <path
- d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363
314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124
292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363
293.2599,221.89363 z "
- style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
- id="path5103" />
- </g>
-</svg>
commit 088f79346a779e95a62732052c431f2ae6887560
Author: Jeroen van Meeuwen (Fedora Unity) <kanarip(a)fedoraunity.org>
Date: Thu Jun 18 15:53:25 2009 +0200
Update (rename to Complete Reference)
diff --git a/doc/Revisor_Documentation/en-US/Book_Info.xml
b/doc/Revisor_Documentation/en-US/Book_Info.xml
index c7ebea9..7a9e7d8 100644
--- a/doc/Revisor_Documentation/en-US/Book_Info.xml
+++ b/doc/Revisor_Documentation/en-US/Book_Info.xml
@@ -3,16 +3,19 @@
]>
<bookinfo id="Revisor_Documentation-Documentation">
- <title>Revisor Documentation</title>
+ <title>Complete Reference</title>
+ <subtitle>Revisor Complete Installation, Configuration and Tweaking
Reference</subtitle>
+ <productname>Revisor</productname>
+ <productnumber>2.1.5</productnumber>
+
<!--
- <subtitle>short descriptor</subtitle>
- <productname>Documentation</productname>
- <productnumber>0.1</productnumber>
<edition>0</edition>
<pubsnumber>0</pubsnumber>
//-->
<abstract>
- <para>A short overview and summary of the book's subject and purpose,
traditionally no more than one paragraph long. Note: the abstract will appear in the front
matter of your book and will also be placed in the #description field of the book's
RPM spec file.</para>
+ <para>
+ This is Revisors upstream documentation.
+ </para>
</abstract>
<corpauthor>
<inlinemediaobject>
diff --git a/doc/Revisor_Documentation/en-US/Complete_Reference.ent
b/doc/Revisor_Documentation/en-US/Complete_Reference.ent
new file mode 100644
index 0000000..9282cde
--- /dev/null
+++ b/doc/Revisor_Documentation/en-US/Complete_Reference.ent
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Documentation">
+<!ENTITY BOOKID "Revisor_Documentation">
+<!ENTITY YEAR "2008">
+<!ENTITY HOLDER "Jeroen van Meeuwen">
+
diff --git a/doc/Revisor_Documentation/en-US/Complete_Reference.xml
b/doc/Revisor_Documentation/en-US/Complete_Reference.xml
new file mode 100644
index 0000000..757504d
--- /dev/null
+++ b/doc/Revisor_Documentation/en-US/Complete_Reference.xml
@@ -0,0 +1,27 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+ <xi:include href="Book_Info.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Preface.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="Revisor_Documentation-Introduction.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Features.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Installation.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Using_Kickstart.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Compose_Process_Details.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Plugins.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Tweaking_The_Build_Process.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Tips_and_Tricks.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Frequently_Asked_Questions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Testing.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Revisor_Documentation-Development.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="Revision_History.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <index />
+ <xi:include href="Appendix.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+</book>
+
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation.ent
b/doc/Revisor_Documentation/en-US/Revisor_Documentation.ent
deleted file mode 100644
index 9282cde..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation.ent
+++ /dev/null
@@ -1,5 +0,0 @@
-<!ENTITY PRODUCT "Documentation">
-<!ENTITY BOOKID "Revisor_Documentation">
-<!ENTITY YEAR "2008">
-<!ENTITY HOLDER "Jeroen van Meeuwen">
-
diff --git a/doc/Revisor_Documentation/en-US/Revisor_Documentation.xml
b/doc/Revisor_Documentation/en-US/Revisor_Documentation.xml
deleted file mode 100644
index 757504d..0000000
--- a/doc/Revisor_Documentation/en-US/Revisor_Documentation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<book>
- <xi:include href="Book_Info.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Preface.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
- <xi:include href="Revisor_Documentation-Introduction.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Features.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Installation.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Using_Kickstart.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Compose_Process_Details.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Plugins.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Tweaking_The_Build_Process.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Tips_and_Tricks.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Frequently_Asked_Questions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Testing.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revisor_Documentation-Development.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
- <xi:include href="Revision_History.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <index />
- <xi:include href="Appendix.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
-</book>
-
commit a99c2825ba47a3fcba7c0d8c6475d9700488e7ee
Author: Jeroen van Meeuwen (Fedora Unity) <kanarip(a)fedoraunity.org>
Date: Thu Jun 18 15:36:29 2009 +0200
Update Single CD configuration
diff --git a/unity/conf/f11-install-single-cd.conf
b/unity/conf/f11-install-single-cd.conf
index f5d6637..2bac322 100644
--- a/unity/conf/f11-install-single-cd.conf
+++ b/unity/conf/f11-install-single-cd.conf
@@ -33,9 +33,10 @@ iso_basename = Fedora-Single
iso_label = Fedora
version = 11
version_from = F11
-comps_filter = 1
+comps_filter = 0
kickstart_file = /etc/revisor-unity/conf.d/fedora-11-single-cd.cfg
kickstart_include = 1
+kickstart_default = 1
[f11-i386-single-cd]
description = Fedora Unity Custom Spin Model for Single CD Installers
commit 06f2a463e500a8affbdbf2eab0509bc519070a0f
Author: Jeroen van Meeuwen (Fedora Unity) <kanarip(a)fedoraunity.org>
Date: Thu Jun 18 15:33:19 2009 +0200
The fedora-install-fedora.ks from upstream does not make sense. In
the event a package should under no circumstance end up on the media,
then repository specific excludes are not the way to go. As you can
see in the version from upstream, this does not scale very well.
The excluded packages list should be global, not per repository.
Instead, force the kickstart %packages manifest to extend YUMs global
exclude= setting, and let dependency resolving fail if you are
excluding a package required by another package.
diff --git a/conf/conf.d/fedora-11-gold.cfg b/conf/conf.d/fedora-11-gold.cfg
index d4ce9e3..69e9cd4 100644
--- a/conf/conf.d/fedora-11-gold.cfg
+++ b/conf/conf.d/fedora-11-gold.cfg
@@ -10,7 +10,7 @@
#part iso --size=4998
# Add the repos you wish to use to compose here. At least one of them needs group data.
-repo --name=rawhide
--mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=$basearch
--exclude kernel*debug* --exclude kernel-kdump* --exclude syslog-ng
+repo --name=rawhide
--mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=$basearch
--exclude kernel*debug* --exclude kernel-kdump* --exclude syslog-ng --exclude
java-1.5.0-gcj-devel --exclude astronomy-bookmarks --exclude generic* --exclude
java-1.5.0-gcj-javadoc --exclude btanks --exclude GConf2-dbus --exclude bluez-gnome
repo --name=rawhide-source
--mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide-source&arch=$basearch
# Package manifest for the compose. Uses repo group metadata to translate groups.
@@ -25,13 +25,12 @@ kernel*
echo-icon-theme
tracker
swfdec
-libflashsupport
nspluginwrapper
liferea
esc
thunderbird
+@dial-up
# apps
-@authoring-and-publishing
@eclipse
joe
emacs
@@ -44,7 +43,6 @@ wireshark-gnome
@development-tools
@fedora-packager
@gnome-software-development
-@java-development
@kde-software-development
@web-development
@x-software-development
@@ -58,7 +56,7 @@ wireshark-gnome
@server-cfg
@smb-server
@sql-server
-@web-server --optional
+@web-server
# Keep dap off the install media, makes Eng & Sci show up
-dap-server-cgi
# Virt group
@@ -128,7 +126,6 @@ jfsutils
@marathi-support
@mongolian-support
@nepali-support
-@northern-sami-support
@northern-sotho-support
@norwegian-support
@oriya-support
@@ -176,4 +173,18 @@ jfsutils
-java-1.5.0-gcj-devel
-libgcj-src
-*javadoc*
+-frysk
+-*gcj*
+
+-kernel*debug*
+-kernel-kdump*
+-syslog-ng
+-java-1.5.0-gcj-devel
+-astronomy-bookmarks
+-generic*
+-java-1.5.0-gcj-javadoc
+-btanks
+-GConf2-dbus
+-bluez-gnome
+
%end
commit 993be228ca44f0fac714c6b77de88a753f3dc213
Author: Jeroen van Meeuwen (Fedora Unity) <kanarip(a)fedoraunity.org>
Date: Thu Jun 18 15:32:33 2009 +0200
Add debug message for filesystem type chosen
diff --git a/revisor/image.py b/revisor/image.py
index 07a1f33..06ef051 100644
--- a/revisor/image.py
+++ b/revisor/image.py
@@ -218,6 +218,8 @@ class
LoopImageCreator(ImageCreator,imgcreate.creator.LoopImageCreator):
self.__fstype = imgcreate.kickstart.get_image_fstype(self.ks, "ext3")
+ self.log.debug(_("Filesystem type set to: %s") %(self.__fstype),
level=7)
+
self.__fslabel = self.cfg.lm_fs_label
self.__minsize_KB = 0
self.__blocksize = 4096
commit 3623d05267a0b792208e8f0113fdaa32c6579b97
Author: Jeroen van Meeuwen (Fedora Unity) <kanarip(a)fedoraunity.org>
Date: Thu Jun 18 15:32:04 2009 +0200
Fix F11 not being in the list of exceptions
diff --git a/revisor/pungi.py b/revisor/pungi.py
index a1613f4..1b38419 100644
--- a/revisor/pungi.py
+++ b/revisor/pungi.py
@@ -274,7 +274,7 @@ cost=500
#buildinstall.append('TMPDIR=%s' % self.workdir) # TMPDIR broken in
buildinstall
# FIXME: Determine options from the anaconda-runtime version
- if self.cfg.version_from in [ "F9", "F10", "DEVEL"
]:
+ if self.cfg.version_from in [ "F9", "F10", "F11",
"DEVEL" ]:
buildinstall.append('--debug')
if self.cfg.version_from in [ "RHEL5" ]:
@@ -295,7 +295,7 @@ cost=500
buildinstall.append('"%s %s"' % (self.cfg.product_name,
self.cfg.version))
# FIXME: Everything < F9 needs --prodpath
- if not self.cfg.version_from in [ "F9", "F10",
"DEVEL" ]:
+ if not self.cfg.version_from in [ "F9", "F10",
"F11", "DEVEL" ]:
buildinstall.append('--prodpath')
buildinstall.append(self.cfg.product_path)