Edition 0
Copyright © 2007 - 2009 Jeroen van Meeuwen
Mono-spaced Bold
To see the contents of the filemy_next_bestselling_novel
in your current working directory, enter thecat my_next_bestselling_novel
command at the shell prompt and press Enter to execute the command.
Press Enter to execute the command.Press Ctrl+Alt+F2 to switch to the first virtual terminal. Press Ctrl+Alt+F1 to return to your X-Windows session.
mono-spaced bold
. For example:
File-related classes includefilesystem
for file systems,file
for files, anddir
for directories. Each class has its own associated set of permissions.
Choose Mouse Preferences. In the Buttons tab, click the Left-handed mouse check box and click to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand).→ → from the main menu bar to launchTo insert a special character into a gedit file, choose → → from the main menu bar. Next, choose → from the Character Map menu bar, type the name of the character in the Search field and click . The character you sought will be highlighted in the Character Table. Double-click this highlighted character to place it in the Text to copy field and then click the button. Now switch back to your document and choose → from the gedit menu bar.
Mono-spaced Bold Italic
or Proportional Bold Italic
To connect to a remote machine using ssh, typessh
at a shell prompt. If the remote machine isusername
@domain.name
example.com
and your username on that machine is john, typessh john@example.com
.Themount -o remount
command remounts the named file system. For example, to remount thefile-system
/home
file system, the command ismount -o remount /home
.To see the version of a currently installed package, use therpm -q
command. It will return a result as follows:package
.
package-version-release
Publican is a DocBook publishing system.
mono-spaced roman
and presented thus:
books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs
mono-spaced roman
but add syntax highlighting as follows:
package org.jboss.book.jca.ex1; import javax.naming.InitialContext; public class ExClient { public static void main(String args[]) throws Exception { InitialContext iniCtx = new InitialContext(); Object ref = iniCtx.lookup("EchoBean"); EchoHome home = (EchoHome) ref; Echo echo = home.create(); System.out.println("Created Echo"); System.out.println("Echo.echo('Hello') = " + echo.echo("Hello")); } }
[1] Livna (http://livna.org) merged into RPMFusion after having offered numerous free and non-free packages through a third-party repository
[2] RPMFusion (http://rpmfusion.org) is the best & largest third-party addon repository to Fedora and Enterprise Linux, with free and nonfree packages
kickstart_exact_nevra
, you can even select specific versions of packages to be included on the product.
part / <size>
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).
isolinux.cfg
after the compose is done, is a plugin. See Chapter 9, Plugins for more information.
/var/tmp/revisor-yumcache/
(by default), enabling you to download just once and never again.
repo
configuration directive that is available with kickstart, you can exclude packages using the --exclude=
parameter to the repo
configuration directive. However, that parameter does not allow wildcard matches.
repo
, which takes either --baseurl
or --mirrorlist
, but not both.
Table of Contents
# yum install revisor
# yum install revisor
$ git clone git://git.fedorahosted.org/revisor/
/etc/revisor/
. There is two types of configuration files Revisor uses:
/etc/revisor/revisor.conf
, 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.
/etc/revisor/conf.d/
, contain configuration for YUM. To be more precise, Revisor doesn't even handle the files (it let's YUM do so). The files in /etc/revisor/conf.d/
practically contain the same information as /etc/yum.conf
combined with the files in /etc/yum.repos.d/
(but not exactly the same content!).
/etc/revisor/revisor.conf
/etc/revisor/revisor.conf
. This configuration file contains two sections:
[revisor]
# revisor --list-models
/etc/revisor/conf.d/
main =
setting points to one of the YUM configuration files in /etc/revisor/conf.d/
.
/etc/
, and they should thus not do so. Users anticipate that if they change a file in /etc/
these changes are persistent in that they are not destroyed when a package is updated. If an update to Revisor is installed on your system, files with the extension .rpmnew
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 searching for and examining the .rpmnew
files.
/etc/revisor/
) for your own custom configuration.
/etc/revisor/revisor.conf
, 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.
/etc/revisor/revisor.conf
consists of multiple sections (the file is in .INI format). One is the [revisor]
global section, where you specify configuration options that apply to each other section or Model.
[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
/etc/revisor/conf.d/
are YUM configuration files. Revisor directs YUM through its API to use these files during the compose process, and does not handle these files itself. This chapter explains how these files are used, how you can change them and lists a few tips and tricks.
$releasever
or $basearch
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. Ergo, if a repository configuration has http://server/repo/$releasever/$basearch/, for a Fedora 12 i386 YUM configuration file you would need to change such in http://server/repo/12/i386/.
baseurl
configuration directive in each repository configuration section to tell YUM to use the local mirror.
mirrorlist
, preferably by outcommenting it, so that YUM will only use the local mirror.
baseurl
uses http://download.fedoraproject.org/
. 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.
baseurl
directive to the location of the repository on the local mirror.
baseurl
of file:///path/to/repository/
.
file://
is the "protocol" for the location, and the location is /path/to/repository/
. Put together, you have three slashes.
cfg.py
. Maybe you can write a plugin with a command-line option that spits out the required packages per model, and optionally download all of them, and create a repository out of the downloaded packages. If you do so, please let us know at the Revisor Development mailing-list at https://fedorahosted.org/mailman/listinfo/revisor-devel, and we'll be glad to help you out or maintain the plugin upstream.
baseurl
and/or mirrorlist
you configure manually or through YUM. Make sure you expand any $releasever
, $basearch
and $arch
variables.
man createrepo
for more information.
#yum -c
\
/path/to/configuration/file
clean all
#yum -c
\
/path/to/configuration/file
list kernel
-d 9
to the command line in order to have YUM spit out more detailed debugging output. This detailed output should leave you a clue or two about what might be wrong with the configuration.
proxy=
configuration directive.
Table of Contents
# yum -y install revisor-unity
#revisor --cli --config /etc/revisor-unity/f12-install-respin.conf \
--model f12-x86_64-respin
repo
repo
command in kickstart is used when Revisor is configured to use the repositories configured in the kickstart file only. Use kickstart_repos = 1
to enable this feature, or set the appropriate checkbox in the Revisor GUI.
%packages
%packages
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).
%packages --nobase
, but @core cannot be excluded using a kickstart package manifest.
kickstart_exact
, you can exclude @core and @base so that you need to explicitly select them in the kickstart package manifest.
kickstart_exact_nevra
...
Table of Contents
--config
command-line parameter, or uses it's builtin default, /etc/revisor/revisor.conf
.
[revisor]
section for all settings available in it's ConfigStore and sets those configured in the global section. Remember that if an option is not available in the ConfigStore but is configured in the global configuration section, it is ignored.
[revisor]
, Revisor will set that model to be used and loads it.
--model
, Revisor loads that model.
[revisor]
, 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.
%packages
manifest.
%packages
manifest only allows you to select package names. With Revisor though, you can select exact package NEVRA to select a certain version or architecture for the package that you want. Additionally, if a package is not available, Revisor searches the Provides of the available packages.
%packages @group1 @group2 --nodefaults @group3 --optional package1 package2 -package3 %end
--nodefaults
to the group line or in the Revisor GUI, right-click on the group and choose Deselect all packages.
--optional
to the group line or in the Revisor GUI, right-click on the group and choose Select all optional packages.
--respin
). It imitates the behavior pungi has, and thus enables you to copy that behavior. Note that --respin
has other implications as well.
--nodefaults
or --optional
), appends the names of the other packages in that group as well.
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
-firefox
syntax in the kickstart package manifest, and setting kickstart_uses_pkgsack_excludes
to 1.
Conflicts:
RPM header or file level). Both will be pulled in, hence disabling you to install everything ('*'
or -previously- @Everything
in the kickstart package manifest).
--copy-dir
, you can specify a path Revisor should copy onto the media.
--copy-dir
will be copied recursively to the files/
sub-directory at the root of the ISO image (or the first ISO image if you compose split media).
--copy-dir
. The kickstart files now end up available to the installation procedures as cdrom:/files/*.ks
, and can thus be used by specifying them on the kernel cmdline (ks=cdrom:/files/profile1.ks
), or, when used in combination with --isolinux-cfg
from the Isolinux Plugin, can be added as an option in the isolinux menu.
--copy-dir
to make these files and scripts available during the installation and copy or execute them from either %pre
or %post
scripts.
--copy-dir
will be copied recursively onto the root directory (/
) of the live media filesystem (which is probably loop-mounted onto /var/tmp/revisor/
).
/home/user1/
on the composing system, you copy this directory so that the root of that new directory has a sub-directory home/
which in turn contains a sub-directory user1/
:
$mkdir -p /tmp/something/home/
$cp -a /home/user1 /tmp/something/home/.
$revisor [options] --copy-dir /tmp/something/
--clean-up
. The default value for this option is 1
, meaning Revisor will clean up it's temporary, compose-specific files, but no files that could be re-used. Specifying --clean-up=0
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 --clean-up=2
. Revisor will then also clean up the files that could be re-used.
/var/tmp/revisor/
, or put more accurately, the path specified as the installroot
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.
--isolinux-cfg
command-line option to Revisor. Specify a file here, and the original isolinux.cfg
that is built as part of the compose process is replaced by the isolinux.cfg
specified.
--rebrand
option, to which you can specify the name of your new product. When rebranding Fedora to Omega for example, specifying --rebrand Omega
would be sufficient to make sure the product does not have any Fedora trademarks.
# yum --enablerepo=updates-testing install revisor
# revisor
/etc/revisor/revisor.conf
main
.
$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
$ revisor --list-models >/dev/null
STDOUT
is redirected to /dev/null
, you should see no messages at all.
/etc/revisor/revisor.conf
. The file lists a series of models, each having their own YUM configuration file in /etc/revisor/conf.d/
.
/etc/revisor/revisor.conf
, the main
setting for that model should point to a valid file.
$ yum -c $file
list kernel
revisor-yumcache/
and revisor/
in /var/tmp/
, the default working directory, are not writeable for the user then YUM will throw permission denied errors.
/var/tmp/revisor/
and /var/tmp/revisor-yumcache/
or run the command with root permissions.
initrd.img
of the composed product, if 32-bit, /lib/ld-linux.so.2
(or any other version) should link to /lib/ld-2.9.so
(or any other version). If /lib/ld-linux.so.2
links to itself, the media will fail to install.
$ lsinitrd /path/to/initrd | grep ld-linux
rpm -Uvh
or rpm -Uvh --oldpackage
. Of course, Revisor's Makefiles also allow make install, but that leaves a number of unmanaged files on your computer you would have to track down manually in order to remove Revisor completely.
./switchhere
script:
$ ./switchhere
./switchhere
script does the following:
/etc/revisor/
to $PWD
/conf/
so that /etc/revisor/revisor.conf
, the primary configuration file, and /etc/revisor/conf.d/
, the configuration directory, are valid (the symlink causes the actual file and directory to be found in $PWD
/conf/
)
/usr/share/revisor/
directory so that a couple of symlinks can be created from within that directory:
/usr/share/revisor/ui => $PWD
/revisor/modgui/glade/
/usr/share/revisor/pixmaps => $PWD
/revisor/modgui/glade/pixmaps/
/usr/share/revisor/comps => $PWD
/conf/
/usr/share/revisor/ui => $PWD
/glade/
/usr/share/revisor/pixmaps => $PWD
/glade/pixmaps/
/usr/share/revisor/comps => $PWD
/conf/
/usr/share/man/man$x
/
directories to the source for these man pages in $PWD
/doc/
.
$ ./revisor.py
$ rpmquery --specfile --qf="%{REQUIRES}\n" revisor.spec | sort | uniq | xargs -n 1 repoquery --requires --alldeps --resolve
Revision History | |||
---|---|---|---|
Revision 1.0 | |||
|
Table of Contents
Configuration Options | |||
---|---|---|---|
Configuration Directive | CLI Option | ||
Possible Values | Default | Context | |
Description | |||
answer_yes
|
-y , --yes
| ||
0, 1 | 0 | global, model | |
Answer yes to all questions. This enables you to run an automated, unattended compose. | |||
clean_up
|
--clean-up
| ||
0, 1, 2 | 1 | global, model | |
Should Revisor not clean up at all (0), clean up it's temporary build data (1), or everything (2). Note that everything includes the yum cache. | |||
copy_dir
|
--copy-dir
| ||
[dir]
| False | global, model | |
A directory tree to copy onto the media created. In the case of installation media, the contents of the directory specified are copied onto cdrom:/files/ . In the case of live media, the contents of the directory specified are copied onto the root filesystem of the live system. See also Section 6.3, “HOWTO: Include folders and files on the Media”.
| |||
copy_local
|
--copy-local
| ||
False | global, model | ||
Tell Revisor to copy files, even when they are local. This applies to relative corner-cases where the repositories or the destination_directory is mounted over NFS, and some actions cannot be performed.
| |||
debuglevel
|
-d , --debug
| ||
0 - 9 | 0 | global, model | |
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. | |||
destination_directory
|
--destination-directory
| ||
/srv/revisor/
|
[path]
| global, model | |
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. | |||
getsource
|
--source
| ||
False | global, model | ||
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. | |||
include_bootiso
|
| ||
0, 1 | 0 | global, model | |
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 media_installation_tree [a])
| |||
kickstart_default
|
--kickstart-default
| ||
0, 1 | 0 | global, model | |
Whether to set the isolinux.cfg entry that makes the installer use the kickstart included on the media, as a default. | |||
kickstart_exact
|
--kickstart-exact
| ||
0, 1 | 0 | global, model | |
Tells Revisor to ignore @core and @base groups (like with %packages --nobase ) and only add what is in the package manifest.
| |||
kickstart_exact_nevra
|
--kickstart-exact-nevra
| ||
0, 1 | 0 | global, model | |
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. | |||
kickstart_file
|
--kickstart
| ||
[file]
| 0 | global, model | |
What kickstart file to use. When in CLI mode, this is a mandatory setting. | |||
kickstart_include
|
--kickstart-include
| ||
0, 1 | 0 | global, model | |
Whether to include the kickstart on the media so that the installer may find it as cdrom:/ks.cfg .
| |||
kickstart_repos
|
--kickstart-repos
| ||
0, 1 | 0 | global, model | |
Whether to use the repo directives in the kickstart provided to Revisor. Useful in cases where the repo directive in the kickstart file provided points to an arbitrary repository such as a repository mirrored by Cobbler, since there is no default URI location for those repositories -and Cobbler refers to them in the kickstart (template) using $yum_repo_stanza
| |||
kickstart_save
|
--kickstart-save
| ||
0, 1 | 0 | global, model | |
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. | |||
media_installation_bluray_duallayer
|
--install-bluray-dl
| ||
0, 1 | 0 | global, model | |
Whether to create Bluray Duallayer installation media (47GiB). | |||
media_installation_bluray
|
--install-bluray
| ||
0, 1 | 0 | global, model | |
Whether to create Bluray installation media (23GiB). | |||
media_installation_bluray_duallayer
|
--install-bluray-dl
| ||
0, 1 | 0 | global, model | |
Whether to create Bluray Duallayer installation media (47GiB). | |||
media_installation_cd
|
--install-cd
| ||
0, 1 | 0 | global, model | |
Whether to create CD installation media (685MiB). | |||
media_installation_dvd
|
--install-dvd
| ||
0, 1 | 0 | global, model | |
Whether to create DVD installation media (4.3GiB). | |||
media_installation_dvd_duallayer
|
--install-dvd-dl
| ||
0, 1 | 0 | global, model | |
Whether to create DVD Duallayer installation media (8.0GiB). | |||
media_installation_tree
|
--install-tree
| ||
0, 1 | 0 | global, model | |
Whether to create a an installation tree[b] (for publication over HTTP or FTP, or through Cobbler). No size limit. | |||
media_installation_unified
|
--install-unified
| ||
0, 1 | 0 | global, model | |
Whether to create a unified ISO, installation media (no size limit). | |||
media_live_optical
|
--live-optical
| ||
0, 1 | 0 | global, model | |
Whether to create Optical Live media (size unknown). | |||
model
|
--model
| ||
[model]
| global | ||
The model to use. | |||
report_sizes
|
--report_sizes
| ||
0, 1 | 0 | global, model | |
Report the sizes of RPM packages used. Lists the biggest packages in the transaction | |||
mode_respin
|
--respin
| ||
False | global, model | ||
Whether Revisor should operate in respin mode. See also Section 8.4, “Respin Mode” | |||
working_directory
|
-d , --debug
| ||
0 - 9 | 0 | global, model | |
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. | |||
[a] Note that the installation tree is always created. See Chapter 8, Compose Process Details for more details. [b] Note that the installation tree is always created. See Chapter 8, Compose Process Details for more details. |