OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /v/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-tools                    Date:   27-Jun-2006 18:04:50
  Branch: HEAD                             Handle: 2006062717044900

  Modified files:
    openpkg-tools/cmd       build.pl

  Log:
    major overhaul of the 'openpkg build' manual page

  Summary:
    Revision    Changes     Path
    1.21        +186 -94    openpkg-tools/cmd/build.pl
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-tools/cmd/build.pl
  ============================================================================
  $ cvs diff -u -r1.20 -r1.21 build.pl
  --- openpkg-tools/cmd/build.pl        27 Jun 2006 13:15:33 -0000      1.20
  +++ openpkg-tools/cmd/build.pl        27 Jun 2006 16:04:49 -0000      1.21
  @@ -2501,7 +2501,7 @@
   
   =head1 NAME
   
  -B<openpkg build> - B<OpenPKG> Maintenance Tool (Building)
  +B<openpkg build> - B<OpenPKG> Maintenance Tool
   
   =head1 SYNOPSIS
   
  @@ -2538,18 +2538,26 @@
   =head1 DESCRIPTION
   
   The B<openpkg build> tool provides automated recursive from-scratch
  -installation and updating of existing RPM packages (B<openpkg build>).
  -It writes a shell script to standard output that installs or upgrades
  -software packages including all dependencies. Packages that are upgraded
  -automatically trigger rebuilds of all packages that depend on the
  -upgraded package ("reverse dependencies"). The dependency information is
  -read from an index generated by B<openpkg index>.
  +installation of packages and the updating and upgrading of installed
  +packages.
  +
  +It generates a Bourne-Shell script on standard output (F<stdout>)
  +that can be executed to perform the package installation or
  +updating/upgrading procedure for all requested packages and their
  +dependencies.
  +
  +Packages that are upgraded automatically trigger rebuilds of all
  +packages that depend on the upgraded package ("reverse dependencies").
  +The dependency information is read from an XML/RDF index generated by
  +the companion tool B<openpkg index>.
  +
  +=head1 ARGUMENTS
   
   Packages are selected by providing a list of name patterns. Each
  -pattern is either a package name or a prefix followed by a '*'
  -character. Additionally you can append a discrimination prefix separated
  -by a comma that matches against the full name-version-revision
  -string.
  +pattern is either a package name or a name prefix followed by a 'F<*>'
  +character. Additionally, in order to resolve ambiguous dependencies, you
  +can append a discrimination prefix separated by a comma that matches
  +against the full "I<name>-I<version>-I<revision>" string of a package.
   
   =head1 OPTIONS
   
  @@ -2557,24 +2565,26 @@
   
   =over 4
   
  -=item B<-R> I<rpm>
  +=item B<-R> I<command>
   
  -Specify a path to the installed B<OpenPKG> C<rpm> command. Several
  -other internal paths are deduced from the I<rpm> path, so this should be
  -something like "I<%{l_prefix}>C</bin/openpkg rpm>".
  +Specify the "B<openpkg rpm>" command with fully qualified path.
  +Several other internal paths are deduced from the I<command> path,
  +so this should be something like "I<prefix>C</bin/openpkg rpm>".
   
   =item B<-r> I<repository>
   
  -Specify a path to an RPM repository, this can be a URL or a directory
  +Specify the path to an OpenPKG RPM package repository. This can be a URL or 
a directory
   path. The name of the package file is appended to this path.
  -The default is to use a URL pointing to the B<OpenPKG> FTP server.
  +The default is to use a URL pointing to the B<OpenPKG> FTP server
  +as determined by the "B<openpkg release>" command.
   
   =item B<-f> I<index.rdf>
   
  -Specify a path to the primary XML/RDF index, this can be a URL or a
  -file path. If the index contains references to other indexes these are
  -included automatically. The default is to use a URL pointing to the
  -B<OpenPKG> FTP server for the B<OpenPKG> release you are using.
  +Specify the path to the primary XML/RDF index. This can be a URL or a
  +file path. If the index contains references to other indices, these
  +are recursively included automatically. The default is to use a URL
  +pointing to the B<OpenPKG> FTP server as as determined by the "B<openpkg
  +release>" command.
   
   =item B<-u>
   
  @@ -2585,7 +2595,8 @@
   =item B<-U>
   
   The generated script will try to upgrade all selected packages
  -including their dependencies to the most recent version.
  +including their dependencies to the most recent version. Use
  +this for usual upgrade tasks in combination with option "B<-a>".
   
   =item B<-z>
   
  @@ -2596,7 +2607,7 @@
   =item B<-Z>
   
   B<openpkg build> ignores all installed packages, the
  -script will rebuild all selected packages from scratch.
  +generated script will rebuild all selected packages from scratch.
   
   =item B<-i>
   
  @@ -2605,19 +2616,22 @@
   
   =item B<-q>
   
  -Ignore all reverse dependencies.
  -I<ATTENTION: this might break already installed packages!>
  +Ignore all reverse dependencies. This means that all packages which are
  +rebuild do I<not> trigger a rebuild of packages which depend on them.
  +I<ATTENTION: this might break already installed packages and has to be
  +used with care! You should really know what you are doing.>
   
   =item B<-s>
   
  -Print a status map instead of the install script. The map consists
  -of 3 columns: "old", "tag" and "new". "old" shows the installed
  -version of a package or just the package name if no package of
  -that name is installed and "new" shows the repository version
  -of a package if it is considered for installation. "tag" has the
  -following possible values:
  +Generate a status map instead of the shell script. The map consists
  +of 3 columns: I<old>, I<tag> and I<new>. The I<old> column shows
  +the installed version of a package (I<name>-I<version>-I<release>)
  +or just the package name (I<name>) if no package of that name
  +is installed and the I<new> column shows the repository version
  +(I<name>-I<version>-I<release>) of a package if it is considered for
  +installation. The I<tag> column shows the following possible values:
   
  -=over 4
  +=over 10
   
   =item OK
   
  @@ -2634,7 +2648,7 @@
   =item DEPEND
   
   The installed package needs rebuilding because one of its
  -dependencies is rebuilt.
  +dependencies is rebuild.
   
   =item MISMATCH
   
  @@ -2654,20 +2668,20 @@
   
   =item B<-S>
   
  -Similar to B<-s> but also lists the newest versions in the
  -repository. The following tag might appear in the map.
  +Similar to option "B<-s>" but also lists the newest versions in the
  +repository. The following I<tag> might appear in the map:
   
  -=over 4
  +=over 10
   
   =item NEW
   
  -The package exists in the repository but isn't required yet.
  +The package exists in the repository but is not required yet.
   
   =back
   
   =item B<-M>
   
  -Similar to B<-s> but print a short dependency map.
  +Similar to option "B<-s>" but print a short dependency map.
   
   =item B<-L>
   
  @@ -2676,127 +2690,205 @@
   =item B<-W>
   
   Include all conditional dependencies as if all possible configuration
  -options had been switched on. This has little use except for generating
  -an all-inclusive list with the B<-L> option.
  -I<ATTENTION: Even mutually exclusive options are evaluated to be 'on',
  -building packages with B<-W> therefore might fail or cause unusable
  -results!>
  +options had been switched on. This has little use in practice except for
  +generating an all-inclusive list with option "B<-L>". I<ATTENTION: Even
  +mutually exclusive options are evaluated to be 'on', building packages
  +with option "-W" therefore might fail or cause unusable results!>
   
   =item B<-X>
   
  -Ignore an installed XML parser module but use the internal
  -simple text parser instead.
  +Ignore an installed Perl XML parser module and use the internal
  +simple XML/RDF parser instead.
   
   =item B<-K>
   
   Keep packages that were installed temporarily during the build process.
  +Without this option those packages are removed.
   
   =item B<-e>
   
  -Rebuild exact version from repository even when you have installed
  -a newer version from another repository.
  +Rebuild exact version of a package from repository even when you have
  +installed a newer version from another repository.
   
   =item B<-b>
   
  -Wrap rebuild commands with build-time check for existing binary packages
  -if the package is rebuilt as a dependency. Wrap install commands with a
  -build/install-time check for different MD5 signature checksum of binary
  -package and installed package. This is best to use with B<-u> to defer
  -all such checks until build-time.
  +Wrap package rebuilding commands with script execution-time checks for
  +existing binary packages if the package is rebuild as a dependency. Wrap
  +package install commands with script execution-time checks for different
  +MD5 signature checksums of binary packages and installed packages. This
  +is best to use with option "B<-u>" to defer all such checks until script
  +execution-time.
   
   =item B<-B>
   
  -Same as -b but also check all packages for existing binary packages
  -at run-time.
  +Same as option "B<-b>" but also check all packages for existing binary
  +packages at script execution-time.
   
   =item B<-g>
   
   The generated script will rebuild all packages selected even when the
   most recent version is already installed. Dependencies are not affected.
  +Use this especially for updating a package with different build options
  +(see option "B<-D>").
   
   =item B<-P> I<priv-cmd>
   
  -Command prefix to use for install commands that require elevated
  -privileges. The most common tool for this is sudo(8). If I<priv-cmd>
  -starts with a dash it will be run without the dash and the command
  -line it should execute is passed as a single quoted string.
  +Command prefix to use for generated script commands that require
  +elevated privileges (like "B<openpkg rpm -Uvh>"). The most common tool
  +for this is sudo(8). If I<priv-cmd> starts with a dash it will be run
  +without the dash and the command line it should execute is passed as
  +a single quoted string. Use this option for upgrading privileges. For
  +instance, if you are running the C<openpkg build>" command as the
  +management user, use "C<-P sudo>" to make sure that the "B<openpkg rpm
  +-Uvh>" commands in the generated script execute with necessary elevated
  +privileges.
   
   =item B<-N> I<non-priv-cmd>
   
  -Command prefix to use for install commands that do not require elevated
  -privileges. The most common tool for this is sudo(8). If I<priv-cmd>
  -starts with a dash it will be run without the dash and the command
  -line it should execute is passed as a single quoted string.
  +Command prefix to use for generated script commands that do I<not>
  +require elevated privileges (like "B<openpkg rpm --rebuild>"). The most
  +common tool for this is su(8). If I<non-priv-cmd> starts with a dash
  +it will be run without the dash and the command line it should execute
  +is passed as a single quoted string. Use this option for downgrading
  +privileges. For instance, if you are running the C<openpkg build>"
  +command as the B<root> user, use "C<-N '-su - >I<musr>C< -c'>" to make
  +sure that the non-privileged commands in the generated script execute
  +with privileges of the management user I<musr>.
   
   =item B<-p> I<platform>
   
  -The platform string that is matched against the index for binary
  -packages. Default is an empty string so that no binary packages
  -are matched.
  +The platform string that is matched against the XML/RDF index for binary
  +packages. The default is an empty I<platform> string so that no binary
  +packages are matched at all.
   
   =item B<-D>I<var>=I<val>
   
  -Specify configuration options for selected packages. This can be
  -either B<-D>I<with_xxx>=I<yyy> or just B<-D>I<with_xxx>, the
  -latter is equivalent to a B<-D>I<with_xxx>=I<yes>. The parameters
  -are matched against selected packages that are already installed. If
  -they do indicate a change, the package is rebuild. There can be multiple
  -B<-D> options.
  -
  -If the option name is prefixed with a package name followed by two colons
  -then it applies only to the specified package. E.g. 
B<-D>I<gcc::with_binutils>.
  +Specify build options for selected packages. This can be either
  +"B<-D>I<with_xxx>=I<yyy>" or just "B<-D>I<with_xxx>". The latter is
  +equivalent to a "B<-D>I<with_xxx>=I<yes>". The parameters are matched
  +against selected packages that are already installed. If they do
  +indicate a change, the package is rebuild. There can be multiple "B<-D>"
  +options.
  +
  +If the option name is prefixed with a package name followed by
  +two colons then it applies only to the specified package, e.g.,
  +"B<-D>I<foo::with_bar>".
   
   =item B<-E> I<name>
   
   Ignore a package with the specified I<name>. This can be used to avoid
  -upgrading to a broken package in the repository. If you use a
  -wildcard pattern or the B<-a> or B<-A> options then I<name> will not
  -be selected. There can be multiple B<-E> options.
  +upgrading to a broken package in the repository or to skip a package
  +upgrade temporarily. If you use a wildcard pattern or the options
  +"B<-a>" or "B<-A>" then I<name> will be excluded. There can be multiple
  +"B<-E>" options.
   
   =item B<-H> I<name>
   
   Hint about packages that should be preferred when more than one fits
  -a requirement. There can be multiple B<-E> options.
  +a requirement. There can be multiple "B<-H>" options.
   
   =item B<-a>
   
   Select all installed packages. You cannot specify a pattern list together
  -with the B<-a> option.
  +with the "B<-a>" option.
   
   =item B<-A>
   
   Select all packages in the repository. You cannot specify a pattern list
  -together with the B<-A> option.
  +together with the "B<-A>" option.
   
   =back
   
   =head1 CONFIGURATION
   
  -B<openpkg build> reads the configuration file I<$HOME/.openpkg/build>.
  +B<openpkg build> reads the configuration file F<$HOME/.openpkg/build>.
   The file lists default options, one option per line and section tags
  -of the form C<[>I<prefix>C<]>. Options following such a tag are only
  -evaluated if the selected RPM path matches the prefix so that you can
  -define default options for multiple B<OpenPKG> hierarchies.
  +of the form C<[>I<rpm>C<]>. Options following such a tag are only
  +evaluated if the selected RPM command matches I<rpm> so that you can
  +define default options for multiple B<OpenPKG> instances.
   
  -=head1 CAVEATS
  +Example:
   
  -Parallel execution of B<openpkg build> causes undefined effects.
  + [/openpkg/openpkg rpm]
  + -X
  + -P sudo
  +
  +=head1 EXAMPLES
  +
  +The following shows a few typical OpenPKG instance
  +maintenance tasks which involve the B<openpkg build> command:
  +
  +=head2 Installation
  +
  +The following examples shows how to initially install an OpenPKG
  +instance under F</openpkg> with Apache/PHP & MySQL:
  +
  + # bootstrap the OpenPKG instance
  + $ ftp ftp.openpkg.org
  + ftp> cd release/2.X/SRC
  + ftp> get openpkg-2.X.0-2.X.0.src.sh
  + ftp> bye
  + $ sh openpkg-2.X.0-2.X.0.src.sh --prefix=/openpkg \
  +   --user=openpkg --group=openpkg --tag=openpkg
  + $ sh openpkg-2.X.0-2.X.0.*-*-openpkg.sh
  +
  + # install the OpenPKG Tool Chain
  + # (includes "openpkg build" command)
  + $ /openpkg/bin/openpkg build openpkg-tools | sh
  +
  + # install Apache/PHP & MySQL
  + $ /openpkg/bin/openpkg build \
  +   -Dapache::with_mod_php=yes apache mysql | sh
  +
  +=head2 Update
   
  -=head1 SEE ALSO
  +The following example shows how to update (no major
  +OpenPKG version change) an OpenPKG instance under F</openpkg>:
   
  -rpm(8), sudo(8)
  + # update all packages to their latest version
  + $ /openpkg/bin/openpkg build -Ua | sh
  +
  +=head2 Upgrade
  +
  +The following examples shows a complete procedure for upgrading (major
  +OpenPKG version change) the an instance under F</openpkg> to OpenPKG
  +2.X:
  +
  + # upgrade the bootstrap package
  + $ /openpkg/bin/openpkg rpm --rebuild \
  +   ftp://ftp.openpkg.org/release/2.X/SRC/openpkg-2.X.0-2.X.0.src.rpm
  + $ /openpkg/bin/openpkg rpm -Uvh \
  +   /openpkg/RPM/PKG/openpkg-2.X.0-2.X.0.*.rpm
  +
  + # upgrade OpenPKG Tool Chain
  + # (includes latest "openpkg build" command!)
  + $ /openpkg/bin/openpkg rpm -e openpkg-tools
  + $ /openpkg/bin/openpkg build openpkg-tools | sh
  +
  + # upgrade the whole OpenPKG instance, in correct dependency
  + # order and by keeping all chosen build-time options.
  + $ /openpkg/bin/openpkg build -ZaKB | sh
  +
  +=head2 Deinstallation
  +
  +The following example shows how to deinstall
  +an entire OpenPKG intance under F</openpkg>:
  +
  + # remove all packages and the instance itself
  + $ /openpkg/bin/openpkg rpm -e \
  +   `/openpkg/bin/openpkg rpm -qa`
  +
  +=head1 CAVEATS
  +
  +Parallel execution of B<openpkg build> causes undefined effects.
   
   =head1 HISTORY
   
   The B<openpkg build> command was invented in November 2002 by I<Michael
   van Elst> E<lt>[EMAIL PROTECTED]<gt> under contract with I<Cable
   & Wireless> E<lt>http://www.cw.com/E<gt> for use inside the B<OpenPKG>
  -project E<lt>http://www.openpkg.org/E<gt>.
  -
  -=head1 AUTHORS
  -
  - Michael van Elst
  - [EMAIL PROTECTED]
  +project E<lt>http://www.openpkg.org/E<gt>. It was then further
  +refined by the B<OpenPKG Foundation e.V.> as part of the OpenPKG Tool Chain.
   
   =cut
   
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     openpkg-cvs@openpkg.org

Reply via email to