User Quick Reference
OpenPKG Quick Reference
=======================
Legend: "$" : shell prompt of any non-root user
"#" : shell prompt of root user
"<x>" : variable text; to be substituted suitable according to context
o Global decision on OpenPKG filesystem path and user/group ID:
All the following steps assume a permanent and unchanging filesystem path
to OpenPKG and all its subsequently installed software packages. Choose
the OpenPKG path and user/group ID carefully when starting with a clean
system!
$ opkg_root=/openpkg
$ opkg_ugid=openpkg
$ _
The example code snippets in this reference use shell variables for added
convenience, but feel free to substitute actual commands in their place.
o Boostrapping OpenPKG from scratch:
An OpenPKG instance lives in its own self-contained and self-controlled
dedicated filesystem hierarchy ($opkg_root). To use OpenPKG on a machine
without existing OpenPKG instance, bootstrap OpenPKG by downloading the
latest openpkg-<V>-<R>.src.sh from ftp://ftp.openpkg.org/release/<V>/SRC/.
When executed, this script establishes the OpenPKG hierarchy. This shell
script can be executed by any user, but requires development tools like
cc(1) and make(1).
After the hierarchy is established, installation continues with a second
script called openpkg-<V>-<R>.<arch>-<os>-<tag>.sh. Unlike the first
script, this one dows not requires development tools. Installation
requires root privileges to expand capabilities to the fullest extend.
It will be installable and usable as a unprivileged user with limited
functionality.
$ ftp ftp.openpkg.org
ftp> cd release/<M>.<N>/SRC
ftp> ls openpkg-*.src.sh
ftp> get openpkg-<V>-<R>.src.sh
ftp> bye
$ sh openpkg-<V>-<R>.src.sh --prefix=$opkg_root --user=$opkg_ugid --group=$opkg_ugid
$ su –
# sh openpkg-<V>-<R>.<arch>-<os>-<tag>.sh
# exit
$ _
o Updating OpenPKG to the latest version:
On a machine with an existing OpenPKG instance, or after bootstrapping
OpenPKG from scratch (see the previous procedure), use OpenPKG to update
OpenPKG! Download the latest openpkg-<V>-<R>.src.rpm from
ftp://ftp.openpkg.org/release/<M>.<N>/, and follow the instructions to
rebuild a binary package from source. Alternatively, get the latest
openpkg-<V>-<R>.<arch>-<os>-<tag>.rpm, and follow the instructions to
update or install a binary package.
o Find a package in the package repository:
To find a package and its version information you have to look
for the package files at ftp://ftp.openpkg.org/release/<M>.<N>/.
Alternative to this path, similar packages can be found at
ftp://ftp.openpkg.org/current/. These packages may be less stable,
however.
o Prepare your shell environment:
To more conveniently work with OpenPKG, modify the shell environment to
meet the needs of the installed OpenPKG packages. Note that while such
modifications may be convinient, the installed OpenPKG packages do not
depend on them for successful operation. In fact, this step can be
entirely skipped if only RPM operations are needed. In such a limited
case, simply execute "$opkg_root/bin/openpkg rpm".
To modify the shell environment, simply add the following command to your
Bourne-Shell profile. Alternatively, the same command can be entered
manually at the interactive shell prompt:
$ eval `/cw/etc/rc --eval all env`
$ _
o To install OpenPKG packages:
The most typical approach installing packages with OpenPKG involves doing
'Fetch and build a binary package from source' and then 'Install or update a
binary package' as described by the following sections. Do not ignore the
second section regardless of how a binary package is obtained.
o Fetch and build a binary package from source:
Before any installation can occur, the files in a source package must be
built into binaries (if such a binary package already exists, skip to the
next bullet item.) The product of this building process is a binary
package with a name like foo-<V>-<R>.<arch>-<os>-<tag>.rpm, The binary
package is found in $opkg_root/RPM/PKG/. The following command will
produce a binary package from source:
$ openpkg rpm --rebuild ftp://ftp.openpkg.org/release/<M>.<N>/foo-<V>-<R>.src.rpm
$ _
Alternatively, to perform the steps behind the --rebuild option
manually, enter the following commands:
$ openpkg rpm -Uvh ftp://ftp.openpkg.org/release/<M>.<N>/foo-<V>-<R>.src.rpm
$ cd $opkg_root/RPM/SRC/foo
$ openpkg rpm -bb foo.spec
$ _
This procedure allows the spec file to be altered.
o Install or update a binary package:
$ su –
# openpkg rpm -Uvh $opkg_root/RPM/PKG/foo-<V>-<R>.<arch>-<os>-<tag>.rpm
# exit
$ _
Attention! When updating a package with a previously hand-modified
configuration file, then OpenPKG first backs up this modified
configuration file to filename.rpmsave. RPM announces this questionable
act with a warning message.
Unfortunately, this condition cannot be automatically resolved by RPM.
Instead, each configuration file must be remodified by carefully comparing
the package's default configuration with the earlier version's own
modifications. Just moving back the file will result in the loss of any
vendor configuration changes.
o Downgrading a binary package:
In case the latest version of a package does not work as expected, it is
possible to revert to an older version. To downgrade a package to an older
version, run the following command:
$ su –
# openpkg rpm -Uvh --oldpackage $opkg_root/RPM/PKG/foo-<V>-<R>.<arch>-<os>-<tag>.rpm
# exit
$ _
o Configuring a package:
Package configuration is package dependent. However, if a package uses a
configuration file, it is always placed in $opkg_root/etc/foo/. RPM tags
such files as configuration files in order to treat them specially in
later update operations, so feel free to edit these files. Adjustments to
these configuration files will not be lost in subsequent package updates.
o Running a package:
A package can be manipulated by issuing "run commands" (rc) which are
found in $opkg_root/etc/rc.d/rc.foo. These can be executed on system
startup and shutdown time, on a regular interval (cron!), or manually by
the OpenPKG user (you):
$ su –
# $opkg_root/etc/rc foo restart
$ exit
$ _
Additionally, these RC scripts are controlled by various configuration
variables. The variable names and their defaults can be listed by running
the following command:
$ $opkg_root/etc/rc --config
$ _
Environment variables can be set by writing shell script code in
$opkg_root/etc/rc.conf which by default is created empty.
o Query information about binary packages:
– To list information about binary package:
$ openpkg rpm -qpi $opkg_root/RPM/PKG/foo-<V>-<R>.<arch>-<os>-<tag>.rpm
– To list all files a binary package will install:
$ openpkg rpm -qplv $opkg_root/RPM/PKG/foo-<V>-<R>.<arch>-<os>-<tag>.rpm
o Query information about installed packages:
– To list all installed packages and their versions:
$ openpkg rpm -qa
– To list information about an installed package:
$ openpkg rpm -qi foo
– To list all files a package has installed:
$ openpkg rpm -qlv foo
o Verify the integrity of a package:
RPM records summary information about each installed file and can
use this information to verify the integrity of the package(s).
– To check the integrity of all packages:
$ openpkg rpm -Va
– To check the integrity of a particular package:
$ openpkg rpm -V foo
– To check all package dependencies only:
$ openpkg rpm -Va --nofiles
o Deinstall (erase) a package:
$ su –
# openpkg rpm -e foo
# exit
$ _
o Automating package building and installation with dependencies
Use the "openpkg build" mechanism in openpkg-tools. To install the
tools including their requirements of make, binutils and gcc, run
$ su –
# openpkg install openpkg-tools
To create a shell script of commands to build and install a certain
package including it's dependencies, run
$ su –
# openpkg build foo | sh
Update all packages in dependency order
$ su –
# openpkg build -Ua | sh
Explore the power of this tool by running "openpkg man build"