apk-tools

the small and simple package manager

home : downloads : project :

Name

apk_add — a utility for installing software packages

Synopsis

apk_add [-dfhInqsuv] [-p prefix] apkname ...

DESCRIPTION

The apk_add command is used to install software packages.

WARNING

Since the apk_add command may execute scripts or programs contained within a package file, your system may be susceptible to “trojan horses” or other subtle attacks from miscreants who create dangerous package files.

You are advised to verify the competence and identity of those who provide installable package files.

OPTIONS

The following command line arguments are supported:

apkname

Specify a full package file, a package name with version, a package name without version, or a full URI. Packages (that are not local pkgfiles) will be fetched from APK_PATH. If a full URI is supplied, dependencies are also fetched from the same site.

-d

Don't install any dependecies.

-f

Force installation to proceed even if prerequisite packages are not installed or the requirements script fails. Although apk_add will still try to find and auto-install missing prerequisite packages, a failure to find one will not be fatal.

-h

Show help and exit.

-I

Don't execute any installation scripts (pre-update, pre-install, post-install or post-update).

-n

Don't actually install a package, just report the steps that would be taken if it was.

-p prefix

Set prefix as the directory in which to extract files from a package.

-q

Quiet mode. Supress non-error messages.

-s

Don't verify the checksum of the package against the index.

-u

Update already installed packages.

-v

Turn on verbose output.

TECHNICAL DETAILS

If the apkname is not a file in the local file system and the package is not already installed, the apk_add utility will fetch the package to the $ROOT/var/cache/packages directory and verify the checksum. The apk_add utility then runs through the following sequence to install a package:

  1. Create a unique temporary directory in /usr/tmp, unpack the package and create the $ROOT/var/db/apk/pkgname-ver/CONTENTS file where pkgname-ver is the package name (with version) in question.

  2. Remove a downloaded package if $APK_KEEPCACHE is not set.

  3. Scan all the package dependencies. If any of these required packages is not currently installed, an attempt is made to find and install it; if the missing package cannot be found or installed, the installation is terminated.

  4. If the package is an update for an already installed package and it contains a pre-update file, it is then executed as

    sh  pre-update pkgname-ver pkgname-oldver

    where pkgname-ver is the package name (with version) in question and pkgname-oldver is the currently installed version of the package.

    If the pre-update script fails, installation terminates.

  5. If the package contains a pre-install file, it is then executed as

    sh pre-install pkgname-ver

    where pkgname-ver is the package name (with version) in question and pkgname-oldver is the currently installed version of the package.

    If the pre-install script fails, installation terminates.

  6. Register or update all config files in the $ROOT/var/lib/apk/default.tdb sfic database of the package.

    The config files are defined by the $APK_LBUDIRS envirnoment variable or /etc/apk.conf keyword.

  7. Merge the files extracted to /usr/tmp into $ROOT. This is done by parsing the temporary directory and moving files and directories to $ROOT.

  8. Create the $ROOT/var/db/apk/pkgname-ver/CONTENTS file where pkgname-ver is the package name (with version) in question.

  9. Any dependencies are recorded or updated in the other packages' REQUIRED_BY list.

  10. If the package contains a post-install file, it is then executed as

    sh var/db/apk/pkgname-ver/post-install pkgname-ver

    where pkgname-ver is the package name (with version) in question.

  11. If package is an update, then remove all files that exist in the old packages' CONTENTS list but not in the new CONTENTS list. Remove also the old packages' meta data, the $ROOT/var/db/apk/pkgname-ver.tar.gz file.

  12. If package is an update and contains a post-update file, it is then executed as

    sh var/db/apk/pkgname-ver/post-update pkgname-ver pkgname-oldver

    where pkgname-ver is the package name (with version) in question and pkgname-oldver is the old version of the package.

  13. Finally the $ROOT/var/db/apk/pkgname-ver directory is compressed to $ROOT/var/db/apk/pkgname-ver.tar.gz and the temporay directory and the $ROOT/var/db/apk/pkgname-ver directory are deleted.

ENVIRONMENT

APK_ADD_TMP

Directory where apk_add stores temporary files. Default is /usr/tmp.

APK_CACHE

Alternative location for the cached index file. Default is $ROOT/var/lib/apk.

APK_DBDIR

Alternative location for the installed package database. Default is $ROOT/var/db/apk.

APK_KEEPCACHE

Downloaded files will not be deleted if this is set to "yes".

APK_PATH

List of URI's to remote package repository mirrors. The URI's are separated by a semicolon (;).

APKTOOLS_CONF

Configuration file for the apk-tools suite. Default is /etc/apk.conf.

PACKAGES

Base directory where apk_add saves downloaded packages. Default is $ROOT/var/cache/packages.

FILES

$ROOT/var/cache/packages

Default location to save downloaded files into.

$ROOT/var/db/apk

Default location for the installed package database.

$ROOT/var/lib/apk/INDEX.sha1.gz

The cached index file.

$ROOT/var/lib/apk/default.tdb

The sfic database that contains the default config files' status.

/etc/apk.conf

Default location of the apk-tools configuration file.

/usr/tmp

Default location for temporary files and directories.

SEE ALSO

apk_fetch (1), apk.conf (5)

SourceForge.net Logo