Skip to content

Commands

Anagnostakis Ioannis edited this page Jun 29, 2026 · 14 revisions

Commands

The full reference for all 35 actions, with the exact descriptions printed by slacker --help. Run slacker <command> --help for a command's options, or man slacker for the complete manual.

Global flags (any command):

Flag Effect
--config-dir <DIR> Directory holding the plain-text config files (default /etc/slacker).
-y, --yes Assume "yes" to confirmation prompts.
--dry-run Show what would happen without changing the system.
--no-deps Do not read .dep files / pull in dependencies for this run.
-h, --help Print help.
-V, --version Print version.

Metadata

Command What it does
update [gpg] Refresh metadata from every repo. update gpg imports repo GPG keys.
check-updates Check every configured repo for pending updates (exit 100 if any).
show-changelog [REPO] Print a repo's cached ChangeLog. With no argument, the official (tracked) repo; name a repo to fetch and show that one instead.
history [NAME] Show a chronological log of package changes - installed, upgraded and removed, and when - newest first. Derived from the pkgtools admin directories, so it also reflects changes made outside slacker. See Package History.

Querying (read-only, no root)

Command What it does
search NAME Find a package by its exact name (case-insensitive).
file-search FILE Find which package ships a file (uses MANIFEST).
info PACKAGE Show details and per-repo candidates for a package.
list-repos List configured repositories with priority, verify policy and how many installed packages came from each.
status The setup doctor - checks the whole setup and says what to do next, and runs even when the config is broken (diagnosing that is its job). Verifies the environment (pkgtools and helper tools on PATH, config-file syntax), then mirror (and whether it is up to date with the upstream master, pointing you at find-mirror when it is stale), repos, priorities, verification, GPG keys (verified empirically against the keyring), metadata freshness, whether every repo targets the running system's release, blacklist (and pins, flagging any pinned to an inactive repo), an integrity audit of slacker's own config + cache + state (root ownership, world-writable paths, stray symlinks), installed-package sources, pending .new configs, and - if online - reachability and pending updates. Ends with the exact commands to run next, in order.
find-mirror Find the fastest up-to-date mirror for your location: probes the official mirror list, times each one, drops stale mirrors (>48h behind the upstream master), ranks the rest by speed, lists the 7 fastest and proposes the 3 fastest - never changing your config. Runs before a mirror is configured, so it is the natural first command on a fresh install. Works on -current and stable (and on 32-bit).

Installing and removing

Command What it does
install PATTERN... Install new packages (refuses already-installed ones).
upgrade PATTERN... Upgrade installed packages to the newest available revision.
reinstall PATTERN... Reinstall the currently installed version.
remove PATTERN... Remove installed packages.
download [-o DIR] PATTERN... Download package files without installing. Saved to the cache by default, or to a directory given with -o/--output.
revert-pkg NAME Roll an official package back to a previous -current version (rollback). Lists its earlier versions from removed_packages, fetches the chosen build from the cumulative archive (GPG-verified against the pinned Slackware key), and downgrades with upgradepkg --reinstall. Official packages only and hard-blocked outside Slackware -current - the code reads VERSION_CODENAME from /etc/os-release and refuses (fail-closed) on a stable release, because the cumulative archive holds -current packages that would break it. Requires REVERT=on. See Common Workflows.

Bulk operations

Command What it does
upgrade-all Upgrade every installed package that has a newer revision - honouring priority (no migration, no downgrade).
upgrade-dist {current|VERSION} Distribution upgrade to a different Slackware release (e.g. 15.0 → -current). The target is an explicit argument; allowed routes are a fail-closed whitelist. UNLIKE every other command it deliberately ignores source priority and the blacklist and takes the target's version of every package. Re-points the mirror/repos, upgrades everything (core first, GnuPG chain last), runs install-new + clean-system + a second pass, and ends with a kernel reminder. --dry-run first. See Distribution Upgrade.
install-new [REPO...] Install every package the selected repos provide that you don't already have - the "fill what's missing" counterpart to install @repo. Catches both packages newly added to the distribution and ones you removed, and stays correct across any number of updates. Honours source/tag priority and the blacklist (frozen packages are skipped); a new build/version of an installed package is an upgrade (use upgrade-all), not new. Default: official repo(s) only; name repos to use those instead.
clean-system Remove installed packages no longer in the official baseline - the official repo plus any immutable repo. slackpkg-style: a package the distribution dropped is removed even if a third-party repo still ships the name. Kept by the blacklist, an IGNORE_TAGS build tag, or an immutable repo. See Common Workflows.
clean-cache [REPO...] Delete downloaded package files from the cache. Repo metadata and GPG keys are never touched. Optionally limit to named repos.
new-config Reconcile leftover *.new configuration files. A bulk choice applies to all at once - **(K)**eep current (leave the .new for later), **(O)**verwrite all (old saved as .orig), **(R)**emove all .new, or **(P)**rompt one by one (default) - and the per-file prompt adds (M)erge and (D)iff.

Blacklist

Command What it does
frozen RULE... Add one or more blacklist rules ("freeze"). Each argument is one rule: a glob (*, ?) or regex, a series/, or @repo PATTERN (quote rules with spaces). Run with no argument to list the current frozen rules. See Blacklist.
unfrozen RULE... Remove one or more blacklist rules ("unfreeze") - the counterpart to frozen. Each argument must match an existing rule exactly, as a literal string (special characters like .*, *, / are never interpreted as a pattern). Run with no argument to list the current rules. See Blacklist.
pin REPO:PACKAGE Pin a package to ONE repo, ignoring priority (e.g. pin alienbob:vlc) - the positive counterpart to frozen. Every command (incl. upgrade-all) then sources that package only from that repo. Stored in the blacklist file as @repo 100% package; uses an exact name (not a pattern); a freeze on the same package always wins. Run with no argument to list the current pins. See Blacklist.
unpin PACKAGE... Remove a pin - the counterpart to pin. The package returns to normal priority-based resolution. Run with no argument to list the current pins. See Blacklist.

Repositories and tags

Command What it does
list-repos List configured repositories with priority, verify policy and installed counts.
status The setup doctor: health-checks the whole setup - environment and config sanity, repos, whether your mirror is up to date with upstream, GPG keys, metadata, an integrity audit of config + cache, and online reachability - and says what to do next.
add-repo PRIORITY NAME URL [flags] Add a binary repository to the repos file. URL must be http:// or https:// and unique. Flags (separate words, no quotes): official, immutable (keeps its packages out of clean-system), subtree (a Slackware distribution subtree - extra/, patches/, … - whose packages download from the parent/root URL), verify=.... See Repositories and Priority.
del-repo NAME Remove a binary repository (by name) from the repos file.
pri-repo PRIORITY NAME Change a repo's priority in the repos file. NAME must be an active repo (the closest match is suggested on a typo); PRIORITY must not already be used by another repo (priorities are kept distinct, and the clashing repo is named). Only that repo's priority is rewritten - its URL and flags stay untouched. See Repositories and Priority.
add-tag PRIORITY NAME TAG Add a build-tag priority line to the repos file (e.g. add-tag 100 SBo _SBo; no quotes).
del-tag TAG Remove a build-tag priority line (by its TAG) from the repos file.

Repository safety (quarantine model)

Command What it does
vet-repo NAME Re-run the safety vetting on a repo on demand (fetches metadata only). Quarantines it if it fails, or clears a prior quarantine if it now passes.
trust-repo NAME Trust a quarantined repo, lifting its freeze so it can be used again. This overrides slacker's safety verdict - at your own responsibility.
distrust-repo NAME Manually quarantine (freeze) a repo so it provides no packages until you trust-repo it again.

See Security for the trust model.

Templates

Command What it does
generate-template NAME Snapshot installed packages into a template.
install-template NAME Install all packages listed in a template.
remove-template NAME Remove all packages listed in a template.
delete-template NAME Delete a template file (does not touch installed packages).

See Templates.


Full slacker --help

The authoritative output, verbatim:

slackpkg + slackpkg+ in one, minimal Rust tool

Usage: slacker [OPTIONS] <COMMAND>

Commands:
  update             Refresh metadata from every repo. `update gpg` imports repo GPG keys
  search             Find a package by its exact name (case-insensitive)
  file-search        Find which package ships a file (uses MANIFEST)
  info               Show details and per-repo candidates for a package
  list-repos         List configured repositories with priority, verify policy and how many installed packages came from each
  status             Health-check the whole setup and report what to do next - the setup doctor
  install            Install new packages (refuses already-installed ones)
  upgrade            Upgrade installed packages to the newest available revision
  reinstall          Reinstall the currently installed version
  remove             Remove installed packages
  revert-pkg         Revert an official package to a previous -current version (rollback)
  download           Download package files without installing. Saved to the cache by default, or to a directory given with -o/--output
  upgrade-all        Upgrade every installed package that has a newer revision
  upgrade-dist       Distribution upgrade: migrate a Slackware 15.0 system to -current (or to the next stable). UNLIKE every other command it deliberately ignores source priority and the blacklist and takes the target distribution's version of every package
  install-new        Install every package the selected repos provide that isn't already installed - the "fill what's missing" counterpart to `install @repo`: catches packages new to the distribution and ones you removed, correct across any number of updates. Honours source/tag priority and the blacklist (frozen packages are skipped); a newer build/version of an installed package is an upgrade (use `upgrade-all`), not new. Default: official repo(s) only; name repos to use those instead
  clean-system       Remove installed packages no longer in the official baseline - the official repo plus any `immutable` repo. slackpkg-style: a package the distribution dropped is removed even if a third-party repo still ships the name. Kept by the blacklist, an `IGNORE_TAGS` build tag, or an immutable repo
  clean-cache        Delete downloaded package files from the cache. Repo metadata and GPG keys are never touched. Optionally limit to named repos
  new-config         Handle leftover *.new configuration files
  check-updates      Check every configured repo for pending updates (exit 100 if any)
  show-changelog     Print a repo's cached ChangeLog. With no argument, the official (tracked) repo; name a repo to fetch and show that one instead
  history            Show a chronological log of package changes - installed, upgraded and removed, and when - newest first. Derived from the pkgtools admin directories, so it also reflects changes made outside slacker
  find-mirror        Find the fastest up-to-date Slackware mirror for your location: probes the official mirror list over HTTP and ranks reachable, fresh mirrors by speed, lists the 7 fastest and proposes the 3 fastest. Works on -current and stable. Does not change your configuration
  generate-template  Snapshot installed packages into a template
  install-template   Install all packages listed in a template
  remove-template    Remove all packages listed in a template
  delete-template    Delete a template file (does not touch installed packages)
  frozen             Add one or more blacklist rules ("freeze"). Each argument is one rule: a glob (`*`, `?`) or a regex, a `series/`, or `@repo PATTERN` (quote rules with spaces). Run with no argument to list the current frozen rules
  unfrozen           Remove one or more blacklist rules ("unfreeze"). Each argument must match an existing rule EXACTLY, as a literal string - special characters like `.*`, `*`, `-` or `/` are compared verbatim, never as a pattern. Run with no argument to list the current rules. Quote rules with spaces
  pin                Pin a package to ONE repo, regardless of priority: `pin repo:package` (e.g. `pin alienbob:vlc`). From then on every command (incl. upgrade-all) sources that package only from that repo. Stored in the `blacklist` file as `@repo 100% package`. A freeze on the same package always wins. Run with no argument to list the current pins
  unpin              Remove a pin: `unpin package` (e.g. `unpin vlc`). The package returns to normal priority-based resolution. Run with no argument to list the current pins
  add-repo           Add a binary repository to the `repos` file: `add-repo PRIORITY NAME URL [official] [immutable] [subtree] [verify=...]`. URL must be http:// or https:// and unique. Separate words, no quotes (quote only a URL that contains shell-special characters). `immutable` keeps every package attributed to the repo out of clean-system. `subtree` marks a Slackware distribution subtree (extra/, patches/, ...) whose packages download from the parent (root) URL
  del-repo           Remove a binary repository (by name) from the `repos` file
  pri-repo           Change a repo's priority in the `repos` file: `pri-repo PRIORITY NAME`. Refuses if NAME is not an active repo (suggesting the closest match), or if PRIORITY is already used by another repo (priorities must be distinct)
  add-tag            Add a build-tag priority line to the `repos` file: `add-tag PRIORITY NAME TAG` (e.g. `add-tag 100 SBo _SBo`; no quotes)
  del-tag            Remove a build-tag priority line (by its TAG) from the `repos` file
  vet-repo           Re-run the safety vetting on a repo on demand (fetches metadata only). Quarantines it if it fails, or clears a prior quarantine if it now passes
  trust-repo         Trust a quarantined repo, lifting its freeze so it can be used again. This overrides slacker's safety verdict - at your own responsibility
  distrust-repo      Manually quarantine (freeze) a repo so it provides no packages until you `trust-repo` it again
  help               Print this message or the help of the given subcommand(s)

Options:
      --config-dir <CONFIG_DIR>  Directory holding the plain-text config files [default: /etc/slacker]
  -y, --yes                      Assume "yes" to confirmation prompts
      --dry-run                  Show what would happen without changing the system
      --no-deps                  Do not read .dep files / pull in dependencies for this run
  -h, --help                     Print help
  -V, --version                  Print version

Exit codes

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#161b22','primaryBorderColor':'#1f6feb','primaryTextColor':'#e6edf3','lineColor':'#6e7781','fontFamily':'monospace'}}}%%
flowchart LR
  A["0 success"]:::green
  B["1 error"]:::grey
  C["20 nothing found"]:::grey
  D["50 slacker upgraded itself - re-run"]:::blue
  E["100 pending updates (check-updates)"]:::blue
  classDef grey fill:#0d1117,stroke:#6e7781,color:#8b949e;
  classDef blue fill:#0d1117,stroke:#1f6feb,color:#e6edf3;
  classDef green fill:#0d1117,stroke:#2ea043,color:#e6edf3;
Loading
Code Meaning
0 success
1 an error occurred
20 no package found to act on
50 slacker upgraded itself and must be re-run
100 there are pending updates (from check-updates)

Privileges and locking

Read-only commands (search, info, file-search, check-updates, show-changelog, history, find-mirror) run as any user. Everything that changes the system, cache, or config must be run as root. Mutating commands take an exclusive lock (/run/slacker.lock) so only one runs at a time; queries take no lock and run freely in parallel.

Clone this wiki locally