PKGMK(1) User Commands PKGMK(1)
NAME
pkgmk - produce an installable package
SYNOPSIS
pkgmk [
-o] [
-a arch] [
-b base_src_dir] [
-d device]
[
-f prototype] [
-l limit] [
-p pstamp] [
-r root_path]
[
-v version] [
variable=value]... [
pkginst]
DESCRIPTION
The
pkgmk utility produces an installable package to be used as input
to the
pkgadd(8) command. The package contents is in directory
structure format.
The command uses the package
prototype(5) file as input and creates a
pkgmap(5) file. The contents for each entry in the
prototype file is
copied to the appropriate output location. Information concerning the
contents (checksum, file size, modification date) is computed and
stored in the
pkgmap file, along with attribute information specified
in the
prototype file.
pkgmk searches for the files listed in the
prototype(5) file as
described in the following conditions.
Note: If a prototype file
contains the explicit location of the file to include in the package,
then the following search explanations do not apply.
1. If neither
-b nor
-r options are specified, the file name
component of each file path listed in the
prototype(5) file is expected to be found in the same directory as the
prototype(5) file
2. If
-b is specified as a relative path (without a leading
"
/"), then
base_src_dir is prepended to the relative file
paths from the
prototype(5) file. The resulting path is
searched for in the
root_path directories. If a
root_path is not specified, it defaults to "
/".
3. If
-b is specified as an absolute path (with a leading
"
/"), then
base_src_dir is prepended to the relative paths
from the
prototype(5) file and the result is the location
of the file.
root_path is
not searched.
4. If
-r is specified, then full file paths are used from the
prototype(5) file. Relative paths have
base_src_dir prepended. If
base_src_dir is not specified, it defaults
to
"". The resulting path is searched for in each
directory of the
root_path.
If you created your prototype file using
"pkgproto a/relative/path"or
"pkgproto a/relative/path=install/path", you should use the
-r root_path option to specify the location of
a/relative/path so that
pkgmk can correctly locate your source files.
Package commands, including
pkgmk, are
largefile(7)-aware. They
handle files larger than 2 GB in the same way they handle smaller
files. In their current implementations,
pkgadd(8),
pkgtrans(1) and
other package commands can process a datastream of up to 4 GB.
OPTIONS
The following options are supported:
-a arch Overrides the architecture information provided in
the
pkginfo(5) file with
arch.
-b base_src_dir Prepends the indicated
base_src_dir to locate
relocatable objects on the source machine. Use
this option to search for all objects in the
prototype file.
pkgmk expects to find the objects
in /
base_src_dir or to locate the objects by use
of the
-b and
-r options, respectively.
-d device Creates the package on
device.
device can be an
absolute directory pathname or the identifiers for
a floppy disk or removable disk (for example,
/dev/diskette). The default device is the
installation spool directory (
/var/spool/pkg).
-f prototype Uses the file
prototype as input to the command.
The default
prototype filename is [
Pp]
rototype.
-l limit Specifies the maximum size in 512 byte blocks of
the output device as
limit. By default, if the
output file is a directory or a mountable device,
pkgmk employs the
df(8) command to dynamically
calculate the amount of available space on the
output device. This option is useful in
conjunction with
pkgtrans(1) to create a package
with a datastream format.
-o Overwrites the same instance; package instance is
overwritten if it already exists.
-p pstamp Overrides the production stamp definition in the
pkginfo(5) file with
pstamp.
-r root_path Uses the indicated
root_path with the source
pathname appended to locate objects on the source
machine, using a comma (
,) as the separator for
the path elements. If this option is specified,
look for the full destination path in each of the
directories specified. If neither
-b nor
-r is
specified, look for the leaf filename in the
current directory.
-v version Overrides the version information provided in the
pkginfo(5) file with
version.
variable=value Places the indicated variable in the packaging
environment. (See
prototype(5) for definitions of
variable specifications.)
OPERANDS
The following operand is supported:
pkginst A package designation by its instance. An instance can be
the package abbreviation or a specific instance (for
example,
inst.1 or
inst.2). All instances of a package can
be requested by
inst.*. The asterisk character (
*) is a
special character to some shells and might need to be
escaped. In the C-Shell,
* must be surrounded by single
quotes (
') or preceded by a backslash (\).
EXIT STATUS
The following exit values are returned:
0 Successful completion.
>0 An error occurred.
SEE ALSO
pkgparam(1),
pkgproto(1),
pkgtrans(1),
uname(1),
pkginfo(5),
pkgmap(5),
prototype(5),
attributes(7),
largefile(7),
df(8),
pkgadd(8) Application Packaging Developer's GuideNOTES
Architecture information is provided on the command line with the
-a option or in the
prototype(5) file. If no architecture information is
supplied,
pkgmk uses the output of
uname -m (see
uname(1)).
Version information is provided on the command line with the
-v option or in the
pkginfo(5) file. If no version information is
supplied, a default based on the current date is provided.
Command line definitions for both architecture and version override
the
prototype(5) definitions.
pkgmk fails if one of the following invalid combinations of zone-
related parameters is used:
1. Both
SUNW_PKG_ALLZONES and
SUNW_PKG_THISZONE are set to
TRUE.
2.
SUNW_PKG_HOLLOW is set to
TRUE and
SUNW_PKG_ALLZONES is
set to
FALSE.
3. The package contains a request script and
SUNW_PKG_THISZONE set to
TRUE.
For additional information regarding these parameters, see
pkginfo(5).
October 30, 2007 PKGMK(1)