MAKEPKG(8)

NAME
makepkg - make Slackware packages.

SYNOPSIS
makepkg [ -l, --linkadd y|n ] [ -c, --chown y|n ] [ --threads <number> ] [ --compress <option> ] [ --acls ] [ --xattrs ] [ --remove-rpaths ] [ --remove-tmp-rpaths ] packagename

DESCRIPTION
makepkg creates a new Slackware compatible package. The package is constructed using the contents of the current directory and all subdirectories. If symbolic links exist, they will be converted to script code to recreate them when the package is installed. This code will be appended to the primary installation script ( install/doinst.sh ) , or, if that script does not exist it will be created with those contents. The package will be written out to the file packagename which should be the full name, including the extension. This is usually .txz, but .tgz, .tbz, and .tlz are also accepted. The proper compression utility (xz, gzip, bzip2, or lzip) needs to be installed on the machine.

OPTIONS

-l, --linkadd y|n
    If y, add any symbolic links found to the install script (doinst.sh) and delete them. This is the recommended action. If this option is not used, makepkg will prompt if symbolic links are found.

-p, --prepend
    If this option is given, then any symbolic links added to doinst.sh will be prepended to the existing script. This is useful for packages that contain shared libraries that need to be linked first because programs will use them later in the doinst.sh script.

-c, --chown y|n
    If y, makepkg will reset all directory permissions to 755 and ownership to root:root. In general, you should have the permissions and ownerships worked out yourself, so relying on setting this option to y is somewhat sloppy. It is not the default. If an option is not provided, makepkg will prompt.

--threads <number>
    For xz/plzip compressed packages, set the maximum number of threads to be used for compression. Only has an effect on large packages. For plzip the default is the number of CPU threads available. For xz the default is to let xz decide how many threads to use, except on 32-bit platforms where the default number of threads is 2.

--compress <option>
    Supply a custom option to the compressor. This will be used in place of the default, which is: -9

--acls
    Support storing POSIX ACLs in the package. The resulting package will not be compatible with pkgtools version < 15.0.

--xattrs
    Support storing extended attributes in the package. The resulting package will not be compatible with pkgtools version < 15.0.

--remove-rpaths
    Remove all rpaths from ELF objects. By default, makepkg will warn if any are found.

--remove-tmp-rpaths
    Remove all rpaths from ELF objects containing an rpath wih the /tmp directory in it. Such rpaths could be a security hole.

ENVIRONMENT

SOURCE_DATE_EPOCH
    A UNIX date-time (seconds since 1 Jan 1970). If set, any newer timestamps in the package will be rewritten ("clamped") to this date-time. See https://reproducible-builds.org/specs/source-date-epoch/ for more details.

INSTALLATION SCRIPTS
There are 3 types of installation scripts supported in the Slackware package system.

The first is the
    primary installation script. This is found in the subdirectory ./install and must have the name doinst.sh in order to be recognized. This ( and other install scripts ) should be written using the basic Bourne shell syntax recognized by the ash shell, since this is the shell that will be used to execute the script when installing from a Slackware install floppy. This is a common trap - beware of using bash syntax extensions, because the script will work fine when installed from the hard drive, but will bomb out when installed from floppy. If the package is for personal use, this isn't a problem. Be careful, though, if you plan to share your package with other users. The primary installation script is executed immediately after the package is installed with installpkg, pkgtool, or setup.

The second type of script is the
    configuration script. This is found in the subdirectory ./var/lib/pkgtools/setup and must have a name that starts with setup. in order to be recongnized. An example is the timezone script: /var/lib/pkgtools/setup/setup.timeconfig. These scripts are executed during the CONFIGURE phase of setup, and are re-executed each time the user runs the CONFIGURE option from setup from then on. Typically, the user will go through this phase of setup following the installation of all the packages. Anything that needs to be interactive should go in one of these scripts to avoid halting the package installation process during setup.

The third type of script is the
    onlyonce script. Like the name suggests, these are executed only once after the package is installed, in contrast to the standard configuration script. These scripts are also found in the ./var/lib/pkgtools/setup directory and must have a name that starts with setup., but in addition the name must contain the string onlyonce. An example might be a script with the name /var/lib/pkgtools/setup/setup.onlyonce.testscript

PACKAGE FORMAT
makepkg uses GNU tar plus GNU gzip to create its packages. A simple way to extract the contents of a package (without executing the installation scripts, of course) is to use a command like this:

explodepkg package.tgz

Or, something like this:

gzip -dc package.tgz | tar xvvf -

AUTHOR
Patrick J. Volkerding <volkerdi@slackware.com>

SEE ALSO
installpkg(8), explodepkg(8), removepkg(8), pkgtool(8), upgradepkg(8)