PKG(8)

NAME
pkg - simple and fast package manager for the SlackBuilds.org repo

SYNOPSIS
pkg [OPTION]... [PACKAGES]...

DESCRIPTION

If invoked with no arguments, it will read white-space seperated packages from /etc/pkg/pkg_list.txt, resolves their dependencies and installs/upgrades them in the correct order if they are not already installed or are older than the version in the repository. The user will be prompted to optionally exclude packages from the list if -y is not given. If the package name is in /etc/pkg/pkg_list.txt is followed by key=value pairs, these will be passed to the Slackbuild as environment variables. For example, mypackage FOO=bar will set the environment variable FOO to bar when building mypackage. Additionally, if the file /etc/pkg/mypackage.prebuild exists and is executable, it will be run before building (and after downloading the sources of) mypackage. The first argument passed to the prebuild script is the path to the directory containing the sources/slackbuild of the package.

An initial pkg_list.txt can be generated by running pkg -l (list installed SBo packages) and then removing packages which you do not use directly but are, i.e., dependencies of other packages.

pkg also updates the /etc/slackpkg/blacklist so that orphaned packages are automatically removed when slackpkg clean-system is run, and packages in /etc/pkg/pkg_list.txt and their dependencies are not removed. To achive this it first copies /etc/pkg/blacklist to /etc/slackpkg/blacklist and then appends the packages in /etc/pkg/pkg_list.txt and their dependencies to the blacklist. So copy (parts of) your original blacklist to /etc/pkg/blacklist, if you want to exclude packages not managed by pkg from being removed by slackpkg clean-system, otherwise backup your original blacklist and create an empty file at /etc/pkg/blacklist. Note: if /etc/pkg/blacklist is not present, pkg will fail with an error message to ensure that /etc/slackpkg/blacklist is not overwritten by mistake.

Packages can also be greylisted in /etc/pkg/greylist so that they are not installed by pkg but are not removed by slackpkg clean-system either (since they are still added to etc/slackpkg/blacklist.

If positonal arguments are given, they are treated as package names and installed/upgraded in the correct order. The blacklist is not updated in this case. So pkg mypackage will install mypackage and its dependencies, but mypackage will be removed if slackpkg clean-system is run. Add mypackage to /etc/pkg/pkg_list.txt to prevent this.

pkg can also be used to view the README of a packages or list their dependencies/dependees.

By default, it clones the SBo repo to /var/lib/pkg/sbo syncs the repository before if the -u flag is given.

Any invalid flag like -h will print the usage and exit.

Options

-b display build scripts for the given packages

-d don't filter out installed packages

-f string
        path to the input file (default "/etc/pkg/pkg_list.txt")

-g ignore the greylist

-l list installed packages

-m skip MD5Sum checks

-n don't install dependencies

-r string
        display dependees of the given package

-s search for a package

-t track the given packages (show all dependencies)

-u update the repository

-v display information for the given packages

-y Skip all prompts

Most flags can be combined, i.e. pkg -d -n mypackage will (re)install mypackage regardless of whether it is already installed and will not install its dependencies.

License

Copyright © 2025 Moritz R. Schaefer. License GPLv3+: GNU GPL version 3 or later ⟨https://gnu.org/licenses/gpl.html⟩. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Disclaimer

I wrote this for personal use. While there is a lot of automated testing there are probably not so many users/testers. Use at your own risk.

To run the tests you do need the google-go-lang package from Slackbuilds.org. Run make test to run the tests.