Create a pkginfo file, if not done already.
For step-by-step instructions, see "How to Create a pkginfo File".
Create a prototype file, if not done already.
For step-by-step instructions, see "How to Create a prototype File Using the pkgproto Command".
Make your current working directory the same directory that contains your package's prototype file.
Build the package.
$ pkgmk [-o] [-a arch] [-b base-src-dir] [-d device] [-f filename] [-l limit] [-p pstamp] [-r rootpath] [-v version] [PARAM=value] [pkginst] |
-o |
Overwrites the existing version of the package. |
-a arch |
Overrides the architecture information in the pkginfo file. |
-b base-src-dir |
Requests that base-src-dir be added to the beginning of relocatable path names when the pkgmk command is searching for objects on the development system. |
-d device |
Specifies that the package should be copied onto device, which may be a an absolute directory path name, diskette, or removable disk. |
-f filename |
Names a file, filename, that is used as your prototype file. The default names are prototype or Prototype. |
-l limit |
Specifies the maximum size, in 512-byte blocks, of the output device. |
-p pstamp |
Overrides the production stamp definition in the pkginfo file. |
-r rootpath |
Requests that the root directory rootpath be used to locate objects on the development system. |
-v version |
Overrides the version information in the pkginfo file. |
PARAM=value |
Sets global environment variables. Variables beginning with lowercase letters are resolved at build time. Those beginning with uppercase letters are placed into the pkginfo file for use at install time. |
pkginst |
Specifies a package by its package abbreviation or a specific instance (for example, SUNWcadap.4) |
For more information, see pkgmk(1).
Verify the contents of the package.
$ pkgchk -d pkg-dir pkg-abbrev Checking uninstalled directory format package pkg-abbrev from pkg-dir ## Checking control scripts. ## Checking package objects. ## Checking is complete. $ |
The pkgchk command prints what aspects of the package are being checked and displays warnings or errors, as appropriate. For more information on the pkgchk command, see "Verifying the Integrity of a Package".
Errors should be considered very seriously; it may mean that a script needs fixing. However, a warning may just be a comment on the style of a script. Check it and move on if you disagree with the output from the pkgchk command.
If you want to add any optional information files and installation scripts to your package, see Chapter 3, Enhancing the Functionality of a Package. Otherwise, after you build the package, you should verify its integrity. Chapter 4, Verifying and Transferring a Package explains how to do this, and provides step-by-step instructions on how to transfer your verified package to a distribution medium.
This example uses the prototype file created in "Fine-Tuning a prototype File Created With the pkgproto Command".
$ cd /home/jane/InfoFiles $ pkgmk ## Building pkgmap from package prototype file. ## Processing pkginfo file. WARNING: parameter set to "system990708093144" WARNING: parameter set to "none" ## Attempting to volumize 13 entries in pkgmap. part 1 -- 3170 blocks, 17 entries ## Packaging one part. /var/spool/pkg/SUNWcadap/pkgmap /var/spool/pkg/SUNWcadap/pkginfo /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/demo/file1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/lib/file2 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file3.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file4.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/windex /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file5 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file6 ## Validating control scripts. ## Packaging complete. $ |
If your package contains relocatable files, you can use the -b base-src-dir option to the pkgmk command to specify a path name to be added to the beginning of the relocatable path names while the package is being created. This is useful if you haven't used the path1=path2 format for relocatable files or specified a search path with the !search command in the prototype file.
For example, to build a package using the sample prototype file created by the pkgproto command (see "Creating a prototype File With the pkgproto Command"), without modifying the path fields, and just adding an entry for the pkginfo file, the pkgmk command is:
$ cd /home/jane/InfoFiles $ pkgmk -o -b /home/jane ## Building pkgmap from package prototype file. ## Processing pkginfo file. WARNING: parameter set to "system960716102636" WARNING: parameter set to "none" ## Attempting to volumize 13 entries in pkgmap. part 1 -- 3170 blocks, 17 entries ## Packaging one part. /var/spool/pkg/SUNWcadap/pkgmap /var/spool/pkg/SUNWcadap/pkginfo /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/demo/file1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/lib/file2 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file3.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file4.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/windex /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file5 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file6 ## Validating control scripts. ## Packaging complete. |
In this example, the package is built in the default directory, /var/spool/pkg, by specifying the -o option (to overwrite the package we created in "Example--Building a Package").
If you put package information files (such as pkginfo and prototype) and the package objects in two different directories, you can create your package by using the -b base-src-dir and -r rootpath options to the pkgmk command. If you have your package objects in a directory called /product/pkgbin and the other package information files in a directory called /product/pkgsrc, you could use the following command to place the package in the /var/spool/pkg directory:
$ pkgmk -b /product/pkgbin -r /product/pkgsrc -f /product/pkgsrc/prototype |
Optionally, you could use this command to do the same:
$ cd /product/pkgsrc $ pkgmk -o -b /product/pkgbin |
In this example, the pkgmk command uses the current working directory to find the remaining parts of the package (like the prototype and pkginfo information files).