Skip to content

Common Workflows

Anagnostakis Ioannis edited this page Jun 30, 2026 · 8 revisions

Common Workflows

The recipes you will actually use. All mutating commands need root.


Keep the system up to date

slacker update            # refresh metadata (verifies GPG), pick which repos
slacker install-new       # install repo packages you don't have (new or removed)
slacker upgrade-all       # upgrade everything with a newer revision
slacker clean-system      # drop packages the distro no longer ships
slacker new-config        # reconcile any leftover *.new config files

Want to know first whether anything changed?

slacker check-updates ; echo "exit=$?"   # exit 100 means updates are pending

Find a faster, up-to-date mirror

Not sure your mirror is the best one - or status says it has fallen behind upstream? Let slacker rank them for you:

slacker find-mirror       # probe every official mirror, list the fastest fresh ones

It times each mirror, drops any more than 48 hours behind the upstream master, ranks the rest by speed, and prints the fastest as the line to put in /etc/slacker/mirrors. It never edits your config - you paste the suggested line. It even works before a mirror is configured, so it is also the first command on a fresh install. See Quick Start.


Upgrade the whole system to a new Slackware release

A distribution upgrade (e.g. 15.0 → -current) is one command - but a big, one-way one. Always preview it first:

slacker --dry-run upgrade-dist current     # show the route + plan, change nothing
sudo slacker upgrade-dist current          # the real upgrade (interactive)

It re-points your mirror and repos to the target release, replaces every package with the target's build (priority and blacklist deliberately bypassed - the one command that does), runs install-new + clean-system + a second pass, and ends with a kernel/initrd/bootloader reminder before you reboot. Have backups, and read Distribution Upgrade for the full sequence, the allowed routes, and the (experimental, not yet tested) local-source option.


Find and install something

slacker search firefox            # exact name
slacker info ffmpeg               # which repo wins, plus all candidates
slacker install mozilla-firefox
slacker install vlc mpv obs-studio        # several at once
slacker install alienbob:vlc              # take this build from one repo, just this once
slacker --dry-run install vlc             # preview only, change nothing

If a pattern matches several packages you get a numbered chooser (Enter = all, 1 3 5 or 2-4 = a subset, n = cancel).


Install or remove a whole repo / tag

slacker install @gnome            # every package in the gnome repo
slacker remove  @gnome            # the installed packages that came from it
slacker remove  @_SBo             # every installed SlackBuilds.org package

Protect your SBo / local / third-party packages

Two complementary tools:

  1. Tag priority - give your source tag a high priority so upgrade-all never migrates or downgrades it:
    # in /etc/slacker/repos
    100  SBo    _SBo
    100  local  _rtz
    
  2. Blacklist (frozen) - freeze a specific package or pattern outright:
    slacker frozen "@alienbob vlc-[0-9]"     # freeze alienbob's vlc only (regex)
    slacker frozen "webkit2gtk6.0*"          # a glob (the dot is literal)
    slacker frozen kde/                       # freeze the whole kde series
  3. Pin (pin) - the opposite of a freeze: take one package only from one repo, ignoring priority, for every command (persistent, stored in blacklist):
    slacker pin alienbob:vlc                  # vlc now comes only from alienbob
    slacker unpin vlc                         # back to normal; `unpin` lists pins
    Pins use an exact name (not a pattern); a freeze on the same package wins.

See Repositories and Priority and Blacklist.


Keep extra / testing / patches without them being "cleaned"

Mark those repos immutable (and subtree) in repos, and clean-system will leave their installed packages alone - no per-package blacklisting needed:

90  extras   mirror/extra    subtree immutable
91  testing  mirror/testing  subtree immutable

Audit what happened on this machine

slacker history --last 30                  # the 30 most recent changes
slacker history vlc                        # one package's whole story
slacker history --installed --since 2026-06-01
slacker history --removed                  # what left, and when

Reconstructed from the pkgtools admin dirs, so it includes changes made by slackpkg, sbopkg, or plain installpkg too. See Package History.


Clone a machine's package set

# on the source machine
slacker generate-template snapshot
# copy /etc/slacker/templates/snapshot.template to the target machine, then:
slacker install-template snapshot

See Templates.


Roll back a bad upgrade (official packages, -current)

A -current update broke something? Roll an official package back to a previous version. slacker finds its earlier builds in the system's removed_packages, fetches the one you pick from the cumulative archive (GPG-verified against the pinned Slackware key), and downgrades with upgradepkg --reinstall.

slacker revert-pkg emacs                   # pick from a numbered list of older builds
slacker revert-pkg emacs -y                # take the most recent previous version
slacker --dry-run revert-pkg emacs         # show the exact build/URL, change nothing

After a successful revert it offers to freeze the package so the next upgrade-all won't pull it forward again; lift that later with slacker unfrozen emacs when a fixed version lands. Official packages only (the cumulative archive carries no third-party repos), and only on -current - the command reads VERSION_CODENAME and refuses to run on a stable release, since mixing -current packages into a stable system would break it. Toggle the feature with REVERT in slacker.conf. See Commands and Blacklist.


Download without installing (e.g. to inspect or carry)

slacker download -o /tmp vlc
slacker download @alienbob          # confirms before >10 files

clean-cache later frees the space; metadata and keys are never touched.

Clone this wiki locally