slpkg(1)

NAME
slpkg - Package manager utility for Slackware Linux.

SYNOPSIS
slpkg [COMMAND] [PACKAGE ...] [OPTIONS]

DESCRIPTION

Slpkg is a feature-rich package manager for Slackware-based systems. It installs, upgrades, removes, and builds packages from multiple repositories, including SlackBuilds.org (SBo, Ponce) and binary repositories. Slpkg automatically resolves and tracks dependencies, maintains a full installation history with transaction rollback, detects orphaned and foreign packages, and verifies the integrity of installed files. Additional features include reverse dependency analysis, package pinning and blacklisting, security auditing, file search within package indexes, and export/import of package lists. The tool follows the standards of the SlackBuilds.org organization and Slackware Linux's official procedures for package installation, upgrades, and removal.

COMMANDS

  Repository

update, (u, upd)
    Synchronizes remote repositories with local repositories and updates the package databases with the latest available versions.

upgrade, (U, upg)
    Upgrades installed packages if newer versions are available in the repository.

    After a successful kernel upgrade, slpkg detects the change automatically. If BOOTLOADER_COMMAND is configured in slpkg.toml, slpkg runs it to update the bootloader; otherwise a manual-update reminder is shown. A reboot prompt follows: the default answer is N (the user must explicitly choose to reboot). Use -y to confirm the reboot automatically. The prompt is suppressed when ASK_QUESTION is disabled.

    Use -o all (or equivalently -o '*') to upgrade installed packages from all priority-enabled repositories in a single interactive pass. If the PRIORITY list in the [ALL_REPOS] section of /etc/slpkg/repositories.toml is configured, only those repositories are processed in the declared order. If PRIORITY is empty (the default), all enabled repositories are used in the order they appear in repositories.toml, so the command works out-of-the-box without any configuration. The command follows the same interactive flow as a single-repository upgrade: one combined package selection, one combined dependency selection, and a unified display showing all packages under a single Upgrading: section and all dependencies under a single Upgrading dependencies: section. Each package and dependency is labelled with a cyan [repo] suffix in the terminal selector so the source repository is always visible. If the same package is found in more than one priority repository, the first repository in PRIORITY order is used; a warning is shown only for packages that were actually selected by the user, not for every cross-repo conflict found across all enabled repositories.

    The confirmation behaviour is controlled by ALL_REPOS_CONFIRM in the [behavior] section of /etc/slpkg/slpkg.toml: once (default) asks a single question for all repositories; per_repo asks separately before each repository.

repo, (rp, rep)
    Manages repository configuration in /etc/slpkg/repositories.toml. Without options, prints a table of all known repositories with their enabled/disabled status, mirror URL, and a marker (*) on the default repository.

    Use --enable NAME ... to enable one or more repositories (sets ENABLE = true in the corresponding TOML section).

    Use --disable NAME ... to disable one or more repositories (sets ENABLE = false ).

    Use --mirror NAME URL to change the mirror URL for a repository (sets the MIRROR key in the corresponding TOML section).

    Use --default NAME to set the default repository (updates REPOSITORY in the [DEFAULT] TOML section).

    Use --priority [NAME ...] to set the repository priority order used by upgrade -o all and install -o all (updates PRIORITY in the [ALL_REPOS] TOML section). Calling --priority with no arguments shows the current priority list without modifying it. Use --clear-priority to explicitly clear the priority list.

    Use -q , --quiet to list only repository names, one per line (no table).

    Use -j/--json to output the repository list as a JSON array of objects, each containing name, enabled (boolean), default (boolean), and mirror — suitable for scripting and tooling.

    Repository names are matched case-insensitively. All options preserve the existing formatting, ordering, and comments of repositories.toml via tomlkit. After enabling or changing a mirror, run slpkg update to refresh the package database.

repo-info, (ri, rinf)
    Displays repository information, including active repositories, last update time, and the number of packages they provide.

    Use -j/--json to output the information as a JSON array of objects, each containing name, enabled (boolean), default (boolean), last_updated, packages (count), and mirror — suitable for scripting and tooling.

stats, (st, stt)
    Displays system-wide installation statistics grouped by repository tag. The output consists of two bar charts:

        •   Packages per repository — sorted by package count descending. Each row shows the package count, its percentage of the total, and the uncompressed disk usage for that repository.

        •   Disk usage per repository — sorted by disk usage descending. Each row shows the uncompressed size and its percentage of the total installed footprint.

    Both charts use the tag embedded in the installed package filename to identify the source repository (e.g. no tag → slack, _SBo → sbo, alien → alien). Sizes are read directly from the UNCOMPRESSED PACKAGE SIZE header in /var/log/packages/.

    Use -j/--json to output the statistics in a structured JSON format. Each repository entry in the summary object contains both count and size (bytes).

    Use -t/--top N to append a ranked list of the N largest installed packages, sorted by uncompressed size.

rollback, (rb, und)
    Identifies and attempts to undo the most recent package transaction recorded in /var/log/slpkg/history.log. If the last action was an installation or upgrade, rollback will remove the affected packages. If the last action was a removal, it will attempt to reinstall the packages from their original repository. This command treats all packages processed in the same batch (with the same timestamp) as a single transaction.

self-check, (sc, schk)
    Checks whether a newer version of slpkg is available and displays relevant update information if found.

  Packages

build, (b, bld)
    Compiles packages from SlackBuilds scripts without performing installation.

install, (i, inst)
    Builds and installs packages in the correct dependency order while maintaining logs of installed packages and their dependencies for clean removal.

    Use -o all (or equivalently -o '*') to search all priority-enabled repositories for the given package name(s) in a single interactive pass. Packages found in multiple repositories are presented with a cyan [repo] suffix in the terminal selector so the user can choose which version to install. Dependencies are resolved and displayed with the same [repo] suffix. After selection, SBo/Ponce repositories are built separately (one pass each); binary repositories are merged into a single combined download-and-install pass. A single Finished: timer is printed at the end.

    Use -c, --check, --dry-run to preview the full list of packages (including resolved dependencies) that would be installed, without performing any changes. Works correctly with -o all: shows the combined package summary and then exits without downloading or installing anything.

reinstall, (re, rein)
    Reinstalls one or more already-installed packages by fetching and rebuilding (or re-downloading) them from their source repository. The repository is detected automatically from the tag embedded in the installed package filename (e.g. _SBo → sbo, alien → alien; no tag → slack). Use -o to override the auto-detected repository.

    Dependencies are resolved and presented for selection by default. Use -N/--no-resolve to skip dependency reinstallation.

    Use -e/--edit to open a SlackBuild file in the system editor before building. Applies to SBo/Ponce repositories only.

    Use -T/--repo-tag to assign a custom tag to the rebuilt package. Applies to SBo/Ponce repositories only.

rebuild, (rbd, rbld)
    Identifies all installed packages from the selected SBo or Ponce repository (based on their repository tag, e.g., _SBo) and initiates a mass rebuild and reinstallation process. This is particularly useful after major system or library updates to ensure all SlackBuilds are linked against the current libraries. For binary repositories, use the reinstall command instead.

    Use -T, --repo-tag <TAG> to filter installed packages by a specific tag. If '*' is used as the tag, all packages from the repository found on the system will be included, regardless of their installed tag.

    Use -S, --select to interactively choose specific packages from the list of installed SlackBuilds to rebuild.

    Note: Mass rebuilding of SlackBuilds has a high probability of failure for certain packages. This is because many SlackBuilds require specific build-time parameters, environmental variables, or manual intervention as described in their respective README files. It is recommended to use the --check or --select options to review the build list and ensure that all prerequisites are met for complex packages.

install-pkg, (ip, ipkg)
    Installs one or more local Slackware package files directly, bypassing repository lookup. Recognized file extensions are controlled by the PACKAGE_TYPE configuration key in slpkg.toml (defaults to .txz, .tgz, .tlz, .tbz). Uses installpkg by default (configurable via LOCAL_INSTALLPKG in slpkg.toml). Use -r to reinstall the same version with upgradepkg --reinstall (configurable via REINSTALL in slpkg.toml). Use -X to pass any additional flags directly to the install command (e.g. -X "--root /mnt"). Blacklisted packages are identified in the summary and trigger a warning before proceeding.

remove, (R, rmv)
    Removes packages along with their dependencies if originally installed via slpkg install.

    Use -c, --check, --dry-run to preview which packages (and dependencies) would be removed, without performing any changes.

download, (dl, dwn)
    Downloads the latest SlackBuilds scripts along with their corresponding source files or pre-built packages, without proceeding to build or install them.

export, (ex, exp)
    Exports a list of all manually installed packages (packages not installed as dependencies, or marked manually) to a specified file. The exported file uses the .pkgs extension and can be used with slpkg install to replicate the system setup.

    Use --no-deps to exclude dependency information (normally included as comments) from the exported file, producing a cleaner list of package names only.

import, (im, imp)
    Imports and installs a list of packages from a .pkgs file. Unlike a direct install command, import first validates the file, groups packages by their original repository, and checks if all required repositories are currently enabled. It provides a detailed summary of missing packages and disabled repositories before asking for confirmation to proceed with the installation.

verify, (V, vfy)
    Verifies the integrity of installed packages by checking for missing files. Reads each package's FILE LIST from /var/log/packages/ and confirms that every recorded file still exists on the filesystem. If no package names are given, all installed packages are verified. Directories, virtual paths (dev/, proc/, sys/, run/), and .new or .sample configuration files are excluded from the check. On completion, a summary shows the number of packages verified, packages with issues, and total missing files.

    Use -q/--quiet to print only the names of packages with missing files, one per line, with no details or summary — suitable for scripting.

    Use -f/--fix to automatically reinstall all packages with missing files after the check completes. The source repository for each package is detected from its installed tag (same logic as reinstall). Packages whose repository cannot be determined are skipped with a warning. Add -y to skip the confirmation prompt.

  Query

list, (l, lst)
    Searches for and lists all installed packages on the system. Use -j/--json to output the results as a JSON array of objects, each containing package, name, version, arch, build, tag, and size_bytes — suitable for scripting and tooling.

info, (inf, show)
    Shows detailed package information in the terminal interface. Use -j/--json to output the package details as a JSON array of objects — suitable for scripting and tooling.

search, (s, ser)
    Searches the repository and finds packages matching specified criteria. Use -q/--quiet to print only the matching package names, one per line, with no headers or summary — suitable for scripting. Use -j/--json to output the results as a JSON array of objects, each containing repository, name, version, and installed (boolean) — suitable for scripting and tooling.

file-search, (f, fs)
    Searches for specific files, libraries, or paths within the available repository packages. It provides the exact location of the file and the package that contains it.

list-files, (lf, lfl)
    Lists all files installed by one or more packages. Reads the FILE LIST from /var/log/packages/ for each specified package name and prints every recorded path. Use -q/--quiet to suppress headers and print only the file paths, one per line.

changelog, (n, chg)
    Displays the changelog for the specified repository. Supports optional filtering with -Q (accepts Python regular expressions), line limiting with -n, compact one-line-per-package output with -s, date-block filtering with --date, terminal pager navigation with -g, and opening the changelog file in the system editor with -e.

history, (hi, hst)
    Displays the package operation history log. Shows all past install, upgrade, reinstall, remove, and build actions grouped by date, newest first. The optional -n flag limits the output to the last N entries. Use -x/--clear to delete the history log file entirely.

    Use --package NAME to filter the output and show only entries for the specified package name (case-insensitive).

    Use -j/--json to output history entries as a JSON array of objects, each containing timestamp, date, time, action, name, version, and repository. Respects --package and -n filters.

  Dependencies

depends, (d, dep)
    Displays the forward dependency tree for the specified package as a hierarchical tree. Each node shows a direct dependency of its parent; sub-dependencies are indented beneath their parent using tree connectors (├─ / └─). Dependencies not found in the repository are highlighted in red. A summary of direct and transitive dependency counts is shown at the end. Use -q/--quiet to print a flat list of all dependency names (direct and transitive), one per line, with no tree or summary — suitable for scripting.

reverse, (r, rdeps)
    Shows which repository packages depend on (require) the specified package. Direct dependees are listed using tree connectors (├─ / └─). Use -F to follow the chain upward recursively and display the full reverse-dependency tree, with a summary of direct and transitive counts. Use -q/--quiet to print only the package names, one per line, with no tree or summary — suitable for scripting.

why, (w, wy)
    Shows which currently installed packages depend on the given package(s). Reads /var/log/slpkg/deps.log and reports every top-level package that lists the queried package as a direct dependency. Accepts one or more package names. Use * as a package name to query all installed packages at once. If a package is not tracked as a dependency of any installed package, an informative message is shown instead.

    Options specific to this command:

    -t, --transitive — Follow the dependency chain upward recursively and display the full ancestor tree, showing the parents of parents up to the top-level packages, rendered with tree connectors (├─ / └─) and a direct/transitive summary.

    -p, --pkg-version — Append the installed version next to each package name in the output.

    -q, --quiet — Print only package names, one per line, suppressing all formatting. Suitable for scripting and piping:

        slpkg why python3 -q | xargs slpkg remove

orphans, (or, orp)
    Lists installed packages that were pulled in as dependencies but are no longer required by any currently installed top-level package. Detection relies on /var/log/slpkg/deps.log, which is maintained automatically whenever packages are installed or removed through slpkg. Only packages that were originally installed via slpkg install are tracked; packages installed by other means will not appear. If the log file is missing or empty, no orphans are reported.

    Use --autoremove to automatically remove all orphaned packages in one step. Add -y to skip the confirmation prompt.

    Use -q to print only the package names, one per line, suitable for scripting.

    Review the list first before removing, as some packages may have been installed intentionally even if they are no longer recorded as a dependency of another package.

mark, (mk, mrk)
    Marks one or more packages as manually installed, permanently exempting them from the orphans list even when no tracked top-level package depends on them. This is useful when a package was originally installed as a dependency but the user intends to keep it directly. Marks are persisted in /var/log/slpkg/marks.log as a sorted JSON list.

    Run slpkg mark with no arguments to list all currently marked packages. Run slpkg mark <package> to mark one or more packages as manually installed. Use -u/--unmark with one or more package names to remove their manual mark. Use --unmark without any package name to remove all marks at once. Packages must be installed on the system; otherwise, the command exits with an error. Use -q/--quiet (without arguments) to print only the marked package names, one per line.

pin, (pn, pnh)
    Pins one or more packages to prevent slpkg upgrade from upgrading them. Without arguments, lists all currently pinned packages. Use -u/--unpin with one or more package names to unpin them. Use --unpin without any package name to remove all pins at once. Packages must be installed on the system; otherwise, the command exits with an error. Use -q/--quiet (without arguments) to print only the pinned package names, one per line. Pins are stored in /var/log/slpkg/pins.log.

check-broken, (cb, cbr)
    Scans /var/log/slpkg/deps.log and reports packages whose tracked dependencies are no longer installed. Only covers packages installed through slpkg. Supports -q/--quiet for machine-readable output (one package name per line).

  System

config, (C, conf)
    Edits the configuration file at /etc/slpkg/slpkg.toml using an interactive dialog interface or using the env variable EDITOR if dialog is not available.

    Use --validate to check the file for syntax errors, wrong-type values, invalid enum choices, and out-of-range numbers without opening an editor. Exits with status 0 if the file is usable, or 1 if errors are found.

clean, (c, cln)
    Removes all downloaded SlackBuilds components: scripts, sources, and packages.

clean-system, (cs, csy)
    Identifies and optionally removes packages that are installed on the system but do not exist in any currently enabled repository. This is useful for finding "foreign" or "alien" packages.

    Use --autoremove to automatically remove all identified foreign packages. Add -y to skip the confirmation prompt.

    Use -q/--quiet to print only the package names, one per line.

health-check, (hc, hchk)
    Scans installed ELF binaries and shared libraries using the ldd utility to identify broken shared library links ("not found" errors). Broken files are mapped back to their originating packages. This is useful for identifying packages that need to be rebuilt or reinstalled after major system updates.

    If one or more package names or patterns (wildcards) are provided, only those matching packages are checked. If omitted, all installed packages on the system are verified.

    Note on packages in /opt or custom paths: Binaries installed in non-standard locations (like /opt/) may report missing libraries even if the files exist on disk. This occurs when the dynamic linker is not aware of the package's private library directories. To resolve this, ensure the appropriate paths are added to /etc/ld.so.conf (or a file in /etc/ld.so.conf.d/) and run ldconfig(8).

    Use -q/--quiet to print only the names of packages that contain broken links, one per line.

audit, (ad, adt)
    Audits installed packages for known security vulnerabilities (CVEs) by querying the OSV (Open Source Vulnerabilities) API at https://osv.dev. It matches installed versions against a global database of security advisories.

    If one or more package names or patterns (wildcards) are provided, only those matching packages are checked. If omitted, all installed packages on the system are audited.

    The output includes the CVE ID, a brief summary of the vulnerability, and known aliases (like GitHub Security Advisories).

blacklist, (bl, blk)
    Display, add to, or remove from the blacklist file /etc/slpkg/blacklist.toml. Blacklisted packages are excluded from all slpkg operations (install, upgrade, etc.).

    Run slpkg blacklist with no arguments to list all blacklisted packages. Run slpkg blacklist <package> to add one or more packages to the blacklist (duplicates are skipped). Use -r/--remove with one or more package names to remove them from the blacklist (missing entries are warned). Use -r/--remove without any package name to remove all entries at once. Use -q/--quiet to print only the blacklisted package names, one per line.

version, (v, ver)
    Show version and exit.

help, (h, hlp)
    Show the help message and exit.

    Passing a command name prints its detailed help:

        slpkg help install
        slpkg help repo

    Passing a category name lists all commands in that group:

        slpkg help repository
        slpkg help packages
        slpkg help query
        slpkg help dependencies
        slpkg help system

GLOBAL OPTIONS

The following options are accepted by every command and may be placed anywhere on the command line.

-d, --debug
    Enable DEBUG logging mode.

-k, --no-lock
    Disable the process locking mechanism. This allows users to run multiple instances of slpkg simultaneously (e.g., for multiple search or info operations).

-o, --repository NAME
    Override the default repository for the current command. For search, upgrade, and install only: use -o '*' or -o all to target all priority-enabled repositories in a single interactive pass (the two forms are equivalent; the latter requires no shell quoting).

OPTIONS

-A, --autoremove
    Automatically remove identified packages. Used with orphans and clean-system.

-b, --benchmark
    Benchmark repository mirrors. Used with repo-info.

-c, --check, --dry-run
    Show what would happen without making any changes (dry run). Used with update, upgrade, rebuild, install, and remove. For update, checks whether remote repositories have new content without syncing. For upgrade and rebuild, lists packages that would be changed. For install and remove, shows the full package list (with resolved dependencies) that would be processed, then exits without installing or removing anything.

-x, --clear
    Delete the history log file. Used with history.

-C, --color <ON/OFF>
    Enable or disable color output. Global option.

-t, --description
    Print short package description. Used with search and list.

--default NAME
    Set the default repository. Used with repo.

--disable NAME ...
    Disable one or more repositories. Used with repo.

--enable NAME ...
    Enable one or more repositories. Used with repo.

-D, --dialog
    Enable dialog-based interface. Global option.

-e, --edit
    Open configuration or changelog in editor. Used with config and changelog.

-e, --edit NAME
    Open specified SBo file in editor. Used with build, install, and reinstall.

-X, --extra-args ARGS
    Pass extra flags to install command. Used with install-pkg.

-f, --fix
    Reinstall packages with missing files after verification. Used with verify.

-F, --full-reverse
    Show full recursive reverse dependency tree. Used with reverse.

-h, --help
    Show command help and exit. Global option.

-i, --ignore-case
    Enable case-insensitive matching. Used with search and query commands.

-j, --json
    Output results in JSON format. Used with list, info, search, history, repo, repo-info, and stats.

-t, --top N
    Display top N largest packages. Used with stats.

--mirror NAME URL
    Set a new mirror URL for a repository. Used with repo.

--priority [NAME ...]
    Set the repository priority order used by upgrade -o all and install -o all. Calling --priority with no arguments shows the current priority list without modifying it. Used with repo.

--clear-priority
    Clear the repository priority list (sets PRIORITY to an empty list in the [ALL_REPOS] section of repositories.toml). Used with repo.

--repos-priority NAME ...
    Override the upgrade-all repository order for this run only (transient, does not modify repositories.toml). Used with upgrade and install when -o '*' is active.

-n, --lines N
    Limit output to N lines/entries. Used with changelog and history.

-n, --no-deps
    Exclude dependency comments in output file. Used with export.

-L, --local
    Search in locally installed packages logs. Used with file-search.

-N, --no-resolve
    Disable automatic dependency resolution. Used with install, build, reinstall, remove, upgrade, and import.

-w, --output-dir PATH
    Specify download directory. Used with download.

--package NAME
    Filter history output to entries for the given package name (case-insensitive). Used with history.

-P, --parallel
    Enable parallel downloading. Used with upgrade, build, install, reinstall, rebuild, and import.

-g, --pager
    View output through a terminal pager. Used with changelog.

-p, --pkg-version
    Show package versions. Used with search, depends, reverse, and why.

--date <YYYY-MM-DD>
    Restrict changelog output to a single date block. Only entries whose date matches the given ISO-8601 date are shown. The date must be provided in YYYY-MM-DD format (e.g. 2026-03-07). Compatible with -s, -Q, -n, and -g. Used with changelog.

-s, --short
    Print a compact grouped summary of the changelog. Output is organised by date: each date appears once as a header in the form [YYYY-MM-DD], followed by one indented line per package entry ( package.txz: Action.). A blank line separates consecutive date groups. Directory prefixes (e.g. a/, l/, testing/packages/) and indented multi-line descriptions are omitted. The -n limit counts package lines only; date headers and blank separators are not counted. Respects -Q and -o. Used with changelog.

-Q, --query PATTERN
    Filter changelog output by a Python regular expression (case-insensitive). Plain text strings (e.g. ffmpeg) are valid patterns and behave as before. Regex meta-characters enable richer filtering:

        •   kernel.*generic — both words must appear on the same line

        •   upgrade|remove — lines mentioning either word

        •   ^a/ — lines starting with the a/ category prefix

        •   openssl-3\.4 — exact version string (dot escaped)
    If PATTERN is not valid regex, slpkg prints an error and exits with status 1. Used with changelog.

-q, --quiet
    Suppress verbose output. Global option.

-r, --reinstall
    Force reinstallation of packages. Used with install, install-pkg, and import.

-r, --remove
    Remove entries from the blacklist. Used with blacklist.

-T, --repo-tag TAG
    Set custom repository tag for SBo. Used with build, install, and reinstall.

-S, --select
    Enable interactive package selection. Global option.

-I, --skip-installed
    Skip already installed packages. Used with build, install, and import.

-t, --top N
    Limit output to the top N largest packages by size. Used with stats.

-t, --transitive
    Follow dependency chain recursively. Used with why.

-u, --unmark
    Remove manual installation mark. Used with mark.

-u, --unpin
    Remove upgrade lock from packages. Used with pin.

--validate
    Validate /etc/slpkg/slpkg.toml for syntax errors, wrong-type values, invalid enum choices, and out-of-range numbers without opening an editor. Warnings are shown for unknown sections, unknown keys, or missing keys (defaults apply). Errors are shown for type mismatches, disallowed values, and numbers below their minimum. Exits 0 if the file is usable, 1 if errors are found. Used with config.

-y, --yes
    Answer 'yes' to all prompts. Global option.

OPTION SYNTAX

For convenience, you may combine multiple single-character options that don’t require arguments. For example:

       slpkg install <package ...> -Pry

WILDCARDS

slpkg uses * as a general wildcard meaning “all” in several contexts:

Package names
    Pass * (quoted) or all as a package name to match every package in the repository.

        slpkg search '*'        # all packages (quoted)
        slpkg list all          # same, no quoting needed

-o / --repository
    Pass -o '*' or -o all to target all repositories at once. The all form requires no shell quoting and is preferred for interactive use; '*' is retained for backward compatibility.

        slpkg upgrade -o all    # upgrade-all (preferred)
        slpkg upgrade -o '*'    # equivalent, requires quoting

-e / --edit
    Pass '*' to open all relevant SBo files for editing before a build.

Shell quoting note: When using '*' as a literal argument, always enclose it in single or double quotes to prevent the shell from expanding it as a glob pattern. The all keyword avoids this requirement entirely.

Reserved name: The repository name all is reserved by slpkg and must not be used as a section name in repositories.toml.

NOTES

When color output is enabled, four colors indicate package state:

Green
    Package is not installed and will be installed.

Yellow
    Package is installed and will be upgraded or reinstalled.

Grey
    Package is already installed and up to date.

Red Package will be removed.

Color indicators are only shown when color output is enabled in the configuration file. When colors are disabled, no visual distinction is made between package states.

Error messages for missing or uninstalled packages will include a red (blacklisted) tag if the package is found in /etc/slpkg/blacklist.toml.

The upgrade command can process packages from multiple repositories. If the repository tag is removed from /etc/slpkg/repositories.toml, slpkg cannot determine the originating repository of an installed package.

The remove command removes tracked dependencies only when the package was originally installed via slpkg install. Packages installed by other means have no dependency record and their dependencies will not be removed.

The wildcard * (or all) can be used in various contexts; see the WILDCARDS section for full details.

The special form upgrade -o all (or upgrade -o '*') activates upgrade-all mode, which upgrades installed packages from all repositories listed in the PRIORITY list of the [ALL_REPOS] section in /etc/slpkg/repositories.toml. This is the only context in which -o does not refer to a single repository. Use --repos-priority NAME ... to override the repository order for this run only, without modifying repositories.toml.

EXAMPLES

Update repository databases and upgrade all outdated packages:

    slpkg update && slpkg upgrade

Display system installation statistics:

    slpkg stats
    slpkg stats --top 20          # show 20 largest packages
    slpkg stats --json            # output in JSON format

Undo the most recent package operation:

    slpkg rollback

Find and remove foreign packages:

    slpkg clean-system
    slpkg clean-system --autoremove

Check for broken shared library links:

    slpkg health-check
    slpkg health-check vlc        # check specific package
    slpkg health-check "lib*"     # check using patterns

Export manually installed packages to a list:

    slpkg export mybackup.pkgs
    slpkg export list.pkgs --no-deps

Install a package and all its dependencies automatically:

    slpkg install ffmpeg

Remove orphaned dependency packages (review first, then autoremove):

    slpkg orphans
    slpkg orphans --autoremove
    slpkg orphans --autoremove -y

Find out which installed packages depend on python3:

    slpkg why python3
    slpkg why python3 -t          # full ancestor tree
    slpkg why python3 -p          # include installed versions
    slpkg why python3 -q          # names only, for scripting

Show the reverse-dependency tree for a library (who in the repo needs it):

    slpkg reverse libpng
    slpkg reverse libpng -F       # full recursive tree

Show the forward dependency tree for a package:

    slpkg depends HandBrake

Search for a package across all enabled repositories:

    slpkg search python
    slpkg search python -i        # case-insensitive
    slpkg search python --json    # machine-readable JSON output

Keep a dependency package after its parent is removed:

    slpkg mark python-daemonize
    slpkg mark                            # list all marked packages
    slpkg mark python-daemonize --unmark  # unmark one package
    slpkg mark --unmark                   # unmark all packages at once

Prevent a package from being upgraded, then re-allow it:

    slpkg pin rust
    slpkg pin                          # list all pinned packages
    slpkg pin rust --unpin             # unpin one package
    slpkg pin --unpin                  # unpin all packages at once

Exclude packages from all slpkg operations:

    slpkg blacklist                      # list blacklisted packages
    slpkg blacklist google-chrome vlc    # add one or more packages
    slpkg blacklist google-chrome -r     # remove one package
    slpkg blacklist -r                   # remove all entries at once

Install multiple packages silently (combined short options):

    slpkg install ffmpeg vlc -qy

Remove a package and its tracked dependencies:

    slpkg remove HandBrake
    slpkg remove HandBrake -y      # skip confirmation

Dry run — see what would be upgraded without making changes:

    slpkg upgrade --check
    slpkg upgrade --check -o '*'   # across all repositories

Manage repository configuration without editing repositories.toml manually:

    slpkg repo                              # list all repositories (table view)
    slpkg repo -q                           # list repository names only
    slpkg repo --enable alien ponce         # enable one or more repos
    slpkg repo --disable sbo                # disable a repo
    slpkg repo --mirror alien https://mirror.example.com/alien/15.0/x86_64/
    slpkg repo --default alien              # set default repository
    slpkg repo --priority ponce alien       # set priority order (upgrade + install)
    slpkg repo --priority                   # show current priority list
    slpkg repo --clear-priority             # clear priority list

Upgrade installed packages from all priority-enabled repositories in one pass:

    slpkg upgrade -o all                              # interactive upgrade-all
    slpkg upgrade -o all -y                           # skip confirmation prompt
    slpkg upgrade -o all --check                      # dry run, no changes made
    slpkg upgrade -o all --repos-priority alien ponce # override repo order this run only

Find which package provides a file or library:

    slpkg file-search libssl.so
    slpkg file-search libssl.so -q  # package names only

Verify the integrity of installed packages:

    slpkg verify
    slpkg verify ffmpeg vlc         # specific packages only

Reinstall packages from their detected repository:

    slpkg reinstall ffmpeg              # auto-detect repo, select deps
    slpkg reinstall ffmpeg vlc -y       # skip confirmation
    slpkg reinstall ffmpeg -N           # skip dependencies
    slpkg reinstall ffmpeg -o ponce     # force a specific repository
    slpkg reinstall ffmpeg -e ffmpeg    # edit SlackBuild before build
    slpkg reinstall ffmpeg -T _custom   # assign a custom tag

Build a package without installing it:

    slpkg build HandBrake
    slpkg build HandBrake -e HandBrake  # open SlackBuild in editor first

Download scripts and sources without building:

    slpkg download ffmpeg
    slpkg download ffmpeg --select  # interactive selection

Show package information:

    slpkg info ffmpeg
    slpkg info FFMPEG -i            # case-insensitive
    slpkg info ffmpeg --json        # machine-readable JSON output

List installed packages with JSON output:

    slpkg list '*'                  # all installed packages
    slpkg list python               # filter by name
    slpkg list '*' --json           # machine-readable JSON output

View operation history:

    slpkg history
    slpkg history -n 20                    # last 20 entries
    slpkg history --package ffmpeg         # history for ffmpeg only
    slpkg history --package ffmpeg -n 5    # last 5 entries for ffmpeg
    slpkg history --json                   # machine-readable JSON output
    slpkg history --package ffmpeg --json  # filter + JSON
    slpkg history --clear                  # delete history log

List, query, and manage repositories:

    slpkg repo                     # table of all repositories
    slpkg repo --json              # machine-readable JSON output
    slpkg repo -q                  # names only (one per line)
    slpkg repo-info                # status, last update, package counts
    slpkg repo-info --json         # machine-readable JSON output
    slpkg repo-info -o sbo --json  # single repository in JSON

Search changelog for a specific entry (plain text or regex):

    slpkg changelog -o sbo -Q ffmpeg
    slpkg changelog -o slack -Q "kernel.*generic"
    slpkg changelog -o slack -Q "upgrade|remove"
    slpkg changelog -o slack -s -Q "^a/"

Install a locally-built package file:

    slpkg install-pkg /tmp/HandBrake-1.8.2-x86_64-1_SBo.txz
    slpkg install-pkg ./pkg.txz -y    # skip confirmation
    slpkg install-pkg ./pkg.txz -r    # reinstall same version

Check or edit the configuration file:

    slpkg config --validate           # validate without editing
    slpkg config                      # open in $EDITOR
    slpkg config -D                   # open interactive dialog form

UTILITIES

slpkg_new-configs
    A standalone utility installed alongside slpkg, invoked directly as slpkg_new-configs (not as a subcommand of slpkg).

    When slpkg itself is upgraded, updated versions of /etc/slpkg/slpkg.toml, /etc/slpkg/repositories.toml, and /etc/slpkg/blacklist.toml may be installed as *.new files alongside the originals. Run slpkg_new-configs to handle each pending file interactively.

    For each *.new file found, one of five actions can be chosen:

        K   Keep — leave the existing file untouched and remove the .new file.

        O   Overwrite — replace the existing file with the .new file (the current file is backed up as .orig first).

        R   Remove — delete both the existing file and the .new file.

        M   Merge — compute a diff between the existing config and the .new file. New keys and sections absent from the current config are shown as (+) additions; obsolete keys and sections no longer present in the new file are shown as (-) removals. After reviewing the diff a Y/N confirmation is requested. If confirmed, tomlkit applies both additions and removals while preserving all user-customised values. The current file is backed up as .orig and the .new file is renamed to .new.orig. If the user cancels, the file is not modified. If no changes are detected, the file is left untouched and an "already up-to-date" message is shown.

        P   Prompt — ask separately for each file (useful when a global action was chosen but a specific file needs different handling).

EXIT STATUS

0   Successful execution.

1   General error: invalid arguments, configuration or TOML parse error, repository failure, GPG verification failure, checksum mismatch, blacklisted package, or other internal slpkg error.

When slpkg invokes external tools, their exit code is propagated unchanged as the exit status of slpkg itself.

  installpkg / upgradepkg exit codes

1   tar returned a non-zero exit code.

2   Corrupt compression envelope.

3   Unsupported package format (file does not end in .tgz, .txz, .tbz, or .tlz).

4   Package file not found.

5   Required external compression utility is missing.

  removepkg exit codes

1   Package not found or removal failed.

  SlackBuild scripts
When a SlackBuild script fails during build or install, its exit code (typically 1) is propagated directly.

FILES

  Configuration files

/etc/slpkg/slpkg.toml
    Main configuration file. Controls colors, pager, logging level, default repository, build options, and other runtime settings.

/etc/slpkg/repositories.toml
    Repository configuration. Enables or disables repositories and sets their mirror URLs.

/etc/slpkg/blacklist.toml
    Blacklist configuration. Packages listed here are excluded from all slpkg operations.

On upgrade, updated configuration files are installed as *.new files alongside the originals. Use slpkg_new-configs to review, merge, or remove them. The M (merge) action computes a diff between the existing config and the .new file — showing new keys as (+) additions and obsolete keys as (-) removals — then asks for Y/N confirmation before applying changes. After a successful merge the existing file is backed up as .orig and the .new file is renamed to .new.orig.

  Package list files

Package operations can read input from a plain text file containing one package name per line. By default, files with the .pkgs suffix are recognized as package lists. The suffix can be changed in /etc/slpkg/slpkg.toml.

  Lock file

/var/run/slpkg.lock
    Process lock file. Created on startup and released on exit to prevent multiple instances of slpkg from running simultaneously. Falls back to /tmp/slpkg/slpkg.lock if /var/run/ is not writable. Use -k/--no-lock to disable locking for read-only operations (e.g. search, info).

  Log files

/var/log/slpkg/deps.log
    Dependency tracking log. Records the dependencies installed with each package. Used by remove, orphans, and why.

/var/log/slpkg/marks.log
    Manually marked packages. Packages listed here are excluded from the orphans list regardless of dependency status.

/var/log/slpkg/pins.log
    Pinned packages. Packages listed here are skipped during slpkg upgrade.

/var/log/slpkg/history.log
    Package operation history. Records all install, upgrade, reinstall, remove, and build actions with timestamps.

/var/log/slpkg/process.log
    Build and installation process output log.

/var/log/slpkg/slpkg.log
    Application log. Verbosity controlled by logging_level in slpkg.toml.

ENVIRONMENT

SLPKG_REPO
    Overrides the default repository for the current session without editing /etc/slpkg/repositories.toml. The value must match a repository name as defined in that file (e.g. sbo, ponce, slack). Takes precedence over DEFAULT_REPOSITORY in repositories.toml, but is overridden by the -o / --repository command-line flag.

    export SLPKG_REPO=ponce
    slpkg search foo
    slpkg install foo
    unset SLPKG_REPO

EDITOR
    Text editor used by the config command and the -e / --edit option when dialog is not available or not selected. Takes precedence over the editor setting in slpkg.toml.

PAGER
    Terminal pager used by the -g / --pager option. Takes precedence over the pager setting in slpkg.toml.

The following variables are set by slpkg when invoking SlackBuild scripts:

OUTPUT
    Directory where the built package file is written. Set automatically by slpkg to a temporary directory; overrides any value the script may define internally.

MAKEFLAGS
    Parallel build flags passed to make(1). Set to -jN where N is the value of makeflags in slpkg.toml.

REPORT BUGS

Please report any found to: https://gitlab.com/dslackw/slpkg/-/issues.

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

AUTHOR

Dimitris Zlatanidis <dslackw@gmail.com>

COPYRIGHT
Copyright © 2013-2026 Dimitris Zlatanidis.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.