-
Notifications
You must be signed in to change notification settings - Fork 0
Repositories and Priority
EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
This is slacker's defining idea, and the thing that sets it apart from a plain mirror tool: every repository lives in one priority-ordered model, and priority is never silently violated.
When the same package name is offered by several repositories, the one from the highest-priority repository wins. More importantly:
An installed package is never silently migrated to a different repository, and never downgraded. A candidate is proposed only from a repository of higher or equal priority. The single exception is an explicit
repo:namepin.
So giving a repository a distinct, high priority locks its packages: nothing from a lower repo can replace them, even with a newer version number.
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#161b22','primaryBorderColor':'#1f6feb','primaryTextColor':'#e6edf3','lineColor':'#6e7781','fontFamily':'monospace'}}}%%
flowchart TB
I["installed package<br/>(its build tag = its source)"] --> D{"candidate repo's priority<br/>vs the installed source"}
D -->|higher or equal| U["may upgrade / replace"]
D -->|lower| K["kept - never downgraded<br/>never migrated"]
PIN["repo:name pin"] -. "forces a repo,<br/>overriding priority" .-> U
classDef grey fill:#0d1117,stroke:#6e7781,color:#8b949e;
classDef blue fill:#0d1117,stroke:#1f6feb,color:#e6edf3;
classDef green fill:#0d1117,stroke:#2ea043,color:#e6edf3;
class I,PIN grey
class D blue
class U green
class K grey
How does slacker know an installed package's "source" without a database? From
its build tag - the build field minus the leading digits (1_SBo → _SBo,
7cf → cf, 1 → official). A user tag-priority line, or the highest-priority
binary repo that ships that tag (cf → conraid, alien → alienbob,
auto-detected), decides its owning priority.
# priority name url|mirror|mirror/<subpath> [flags]
100 slackware mirror official
200 patches mirror/patches subtree immutable
90 extras mirror/extra subtree immutable
85 testing mirror/testing subtree immutable
80 conraid https://slackers.it/repository/slackware64-current immutable
60 alienbob https://slackware.nl/people/alien/sbrepos/current/x86_64
# tag-priority lines (may share a priority):
100 SBo _SBo
100 local _rtz
| Form | Meaning |
|---|---|
| a literal URL |
https://, http://, or file:// (the last for a local clone / NFS / mounted media - three slashes for an absolute path) |
mirror |
the active line from mirrors, as-is - use it for the official repo |
mirror/<subpath> |
the active mirror with a subpath appended (mirror/extra, mirror/testing, mirror/patches) - a subtree that follows whichever mirror you picked |
A URL points at the repo root containing PACKAGES.TXT; for official mirrors,
MANIFEST.bz2 lives in a per-arch subdir slacker finds automatically.
| Flag | What it does |
|---|---|
official |
Marks the tracked repo: it powers show-changelog and is the default for install-new. Placement is still by priority only - the official repo can sit anywhere. |
immutable |
Every package attributed to this repo is kept out of clean-system. Use it for extra/testing/patches you keep installed, instead of blacklisting each one. |
subtree |
This URL is a Slackware distribution subtree (extra, patches, testing, pasture). Their PACKAGES.TXT lists package locations relative to the distribution root, so packages and GPG-KEY are fetched from the parent (root) URL while metadata comes from the URL itself. Without it, those packages 404 with a doubled path segment. The four subtrees must always carry this flag. |
verify=... |
Per-repo verification override (see Security). |
mirror/extra+subtreeare a pair.mirror/extraresolves the URL;subtreefixes how packages and the key are fetched from it.
A PATTERN on the command line may be:
| Form | Matches |
|---|---|
firefox |
exact package name |
python |
a name substring - all python-*
|
kde |
a Slackware series (a, ap, d, k, kde, l, n, t, x, xap, xfce, y, …) - that series only, never substrings |
repo:name |
a pin - force one repository regardless of priority (e.g. alienbob:vlc) |
@repo |
a set selector - every package in that repo (install @gnome, remove @gnome) |
@_tag |
every package with that build tag (remove @_SBo) |
The
@is required, so a bare word is never mistaken for a repo. An unknown@repo/@_taggives a "did you mean" suggestion and lists the available repos and tags.
When a pattern matches more than one package, install/upgrade/reinstall/
remove show a numbered list - Enter for all, numbers/ranges like 1 3 5 or
2-4, n to cancel.
There is no
*wildcard for command-line selection. An unquoted*is expanded by your shell into the current directory's filenames before slacker runs (slacker never sees the*and never reads your directory); if that produces a flood of non-package arguments, slacker recognises it and refuses the command, changing nothing. Quote a literal pattern, or use@repofor a whole repository. (The Blacklist is the one place patterns are globs/regexes.)
slacker add-repo 85 ktown https://slackware.nl/people/alien/ktown/current/x86_64
slacker add-repo 90 extras mirror/extra subtree immutable
slacker del-repo ktown
slacker pri-repo 95 extras # retune an existing repo's priority
slacker add-tag 100 SBo _SBo
slacker del-tag _SBo
slacker list-repos # priority, verify, flags, installed countsadd-repo validates the line and, on confirmation, fetches and vets the repo
(see Security).
pri-repo PRIORITY NAME changes the priority of a repo you already have. It
checks that NAME is an active repo (suggesting the closest match on a typo) and
refuses a PRIORITY another repo already holds, naming the clash so you can pick
another value - priorities must stay distinct. Only that line's priority is
rewritten; the URL and flags are left exactly as they were.
slacker - slackpkg + slackpkg+ in one - Apache-2.0 - by Ioannis Anagnostakis (rizitis) - beta / WIP, for Slackware -current (64-bit & 32-bit)
Getting started
Using slacker
- Commands
- Common Workflows
- Distribution Upgrade
- Repositories and Priority
- Package History
- Dependencies
- Docker
- Templates
- Blacklist
Trust & safety
Reference
For contributors