EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
Sperrliste (blacklist)
Die Sperrliste friert Pakete ein, die du nicht angerührt haben willst, und
verbirgt jene, die dir nicht angeboten werden sollen. Die Regeln leben in
/etc/slacker/blacklist (eine pro Zeile, # für Kommentare) oder werden für dich
von den Befehlen frozen und unfrozen hinzugefügt und entfernt.
Die Sperrliste ist verschieden vom PATTERN-Abgleich auf der Kommandozeile. PATTERNs sind Teilzeichenkette + Serie + exakt; Sperrlistenregeln sind Globs oder nicht verankerte reguläre Ausdrücke (plus
series/- und@repo-Eingrenzung), abgeglichen gegen die vollständige Kennungname-version-arch-build, wie beislackpkg.
Regelsyntax
[@repo] PATTERN
PATTERNist eine Slackware-Serie, wenn es auf/endet (z. B.kde/). Andernfalls ist es ein Glob oder ein nicht verankerter Regex, abgeglichen gegen die vollständige Kennung — slacker entscheidet anhand dessen, was du geschrieben hast:- Keine Regex-Syntax → Glob.
*passt auf eine beliebige Folge von Zeichen,?auf ein einzelnes, und jedes andere Zeichen (einschließlich eines wörtlichen., wie inwebkit2gtk6.0oderpython3.11) wird unverändert genommen. So funktionierenvlc-*,webkit2gtk6.0*,*-l10n-*wie erwartet. - Regex-Syntax → Regex. Ein Muster mit einem der Zeichen
[ ] ( ) { } | ^ $ \oder dem.*/.+-Idiom („beliebige Zeichen“) wird unverändert als Regex genommen. So fängtxf86-.*-202.*einen 202x-Build,^vlc-[0-9]verankert am Paketvlc, und ein bloßesvlcpasst auf jede Kennung, dievlcenthält. Verankere mit^...$für einen exakten Abgleich.
- Keine Regex-Syntax → Glob.
- Das optionale
@repo-Präfix grenzt die Regel auf ein Repository ein: für ein verfügbares Paket dessen Kandidaten-Repository; für ein installiertes dessen Quelle.
Eingefroren vs. verborgen
| Der Treffer ist… | Wirkung |
|---|---|
| installiert | eingefroren — wird nie installiert, aktualisiert, neu installiert oder entfernt und nie von clean-system gelistet |
| nicht installiert | verborgen vor install-new, Upgrades und check-updates, wird aber von search/info weiterhin mit [blacklisted] markiert angezeigt |
Die Sperrliste wird von jedem das System verändernden Befehl beachtet
(einschließlich reinstall).
Der Befehl frozen
frozen validiert Regeln und hängt sie für dich an die Sperrliste an.
slacker frozen "@alienbob vlc-[0-9]" # nur alienbobs vlc einfrieren (Regex)
slacker frozen "vlc-*" # ein Glob: alles, was mit "vlc-" beginnt
slacker frozen "webkit2gtk6.0*" # ein Glob; der Punkt ist wörtlich
slacker frozen kde/ # die ganze kde-Serie einfrieren
slacker frozen "xf86-.*-202.*" # eine Regex-Regel
slacker frozen "@conraid ^ffmpeg-" # nahezu exakt, eingegrenzt auf conraid
- Jedes Argument ist eine Regel; setze jede Regel mit Leerzeichen in
Anführungszeichen (etwa eine
@repo-Regel). - slacker meldet einen wahrscheinlichen Fehler — ein
@repo, das kein aktives Repository benennt, oder ein Regex mit Leerzeichen (keine Paketkennung hat Leerzeichen, also ist das meist ein vergessenes@oder ein Anführungszeichen- Patzer) — und fragt, ob es trotzdem deklariert werden soll. - Es gibt aus, was jede Regel einfrieren wird, und bittet um Bestätigung.
--yesüberspringt die Rückfragen. Bereits vorhandene Regeln werden übersprungen.
Der Befehl unfrozen
unfrozen ist das Gegenstück zu frozen: er entfernt Regeln aus der Sperrliste.
slacker unfrozen # die aktuellen Regeln auflisten (zum Lesen kein root nötig)
slacker unfrozen emacs # die Regel "emacs" entfernen
slacker unfrozen "@alienbob vlc-[0-9]" # eine eingegrenzte Regel entfernen (in Anführungszeichen)
slacker unfrozen "xf86-.*-202.*" # Sonderzeichen werden wörtlich abgeglichen
Der Abgleich ist exakt und wörtlich — nie ein Muster. Jedes Argument muss einer
bestehenden Regel Zeichen für Zeichen gleichen; die Regex-Metazeichen in einer Regel
(.*, *, -, [, ], /) werden unverändert verglichen, nicht
interpretiert. So entfernt unfrozen "fcitx5*" nur die Regel fcitx5* und rührt
fcitx5-qt nie an, und unfrozen fcitx5 (eine kürzere Zeichenkette) passt auf
nichts, statt fcitx5* versehentlich zu entfernen. Das ist Absicht: eine Sperrliste
ist voller Sonderzeichen, und der exakte Abgleich ist der einzige sichere Weg, die
richtige Zeile zu entfernen.
- Führe ihn ohne Argument aus, um die aktuellen Regeln auszugeben und so den exakten zu entfernenden Text zu kopieren.
- Kommentarzeilen, Leerzeilen und jede nicht von dir benannte Regel werden unverändert bewahrt; eine nicht gefundene Regel wird gemeldet, und nichts wird geschrieben, sofern nicht mindestens eine Regel tatsächlich getroffen hat.
- Setze jede Regel mit Leerzeichen oder Shell-Sonderzeichen in Anführungszeichen
(eine
@repo-Regel, ein abschließendes*), genau wie beifrozen.
Eine Regel von Hand aus der Datei zu entfernen funktioniert auch —
unfrozentut es nur sicher, mit der Exakt-Abgleich-Garantie und der Auflistung der aktuellen Regeln.
Ein durchgespieltes Beispiel: nur das vlc eines Repositorys einfrieren
Angenommen, du behältst vlc von alienbob und willst nie, dass es ersetzt oder
entfernt wird:
slacker frozen "@alienbob vlc-[0-9]"
Warum vlc-[0-9] und nicht nur vlc? Die Regel wird ohne Verankerung über die
vollständige Kennung abgeglichen. vlc allein würde auch vlc-plugin-foo oder
alles treffen, was diese Buchstaben enthält; vlc-[0-9] verankert an der
Versionsgrenze, um das Paket vlc selbst zu treffen. Für einen strengen Abgleich
könntest du ^vlc-[0-9] schreiben. (Der Glob vlc-* wird ebenfalls akzeptiert — er
kompiliert zu vlc-.* und friert die ganze vlc--Familie ein, Plugins
eingeschlossen; verwende den Regex ^vlc-[0-9], wenn du nur das Paket vlc
willst.)
Pins: ein Paket nur aus einem Repository nehmen
Dieselbe blacklist-Datei speichert auch Pins — das positive Gegenstück zu
einem Einfrieren. Ein Einfrieren sagt nimm dieses Paket nie (oder nicht aus
diesem Repository); ein Pin sagt nimm dieses Paket nur aus diesem
Repository, unter Missachtung der Priorität.
Verwalte Pins mit zwei Befehlen:
slacker pin alienbob:vlc # vlc kommt nun nur von alienbob, selbst wenn ein Repo
# höherer Priorität einen anderen Build anbietet
slacker unpin vlc # zurück zur normalen prioritätsbasierten Auflösung
slacker unpin # (ohne Argument) die aktuellen Pins auflisten
Ein Pin wird mit einer 100%-Markierung in die blacklist-Datei geschrieben,
sodass du ihn auch von Hand hinzufügen oder lesen kannst:
@alienbob 100% vlc
Wie er sich verhält:
- Jeder Befehl beachtet ihn —
install,upgradeundupgrade-allbeziehen das Paket nur aus dem gepinnten Repository, ungeachtet der Priorität. Ein Plan, der ein gepinntes Paket enthält, listet es unter „pinned (taken only from their repo, ignoring priority)“, so wie eingefrorene Pakete hervorgehoben werden. - Pins verwenden einen exakten Paketnamen, nie ein Muster (
vlc, nichtvlc*). Ein wörtlicher Punkt ist in Ordnung —python3.11undwebkit2gtk6.0sind gültige Pin-Namen. Um ein Muster einzufrieren, verwende stattdessenfrozen(es akzeptiert Globs und Regex). - Ein Paket hat höchstens einen Pin. Es an ein anderes Repository zu pinnen ersetzt den alten.
- Bietet das gepinnte Repository das Paket derzeit nicht an, bleibt es einfach, wie
es ist (es wird nie von anderswo geholt), bis dieses Repository es bereitstellt.
slacker statusmeldet einen Pin, dessen Repository nicht aktiv ist, unddel-repowarnt dich, wenn Pakete an das von dir entfernte Repository gepinnt sind. - Ein Einfrieren gewinnt beim selben Paket stets gegen einen Pin: ist
vlczugleich eingefroren und gepinnt, greift das Einfrieren, und der Pin tut nichts, bis duunfrozendarauf anwendest.
Pin vs. das eingegrenzte Einfrieren aus dem obigen Beispiel: @alienbob vlc
friert alienbobs vlc ein (und lässt andere Repositorys es nach Priorität
aktualisieren); @alienbob 100% vlc pinnt vlc an alienbob (und lässt kein anderes
Repository es bereitstellen). Sie sind Gegensätze.
Sperrliste vs. Repository-Quarantäne
Sie lösen verschiedene Probleme:
Sperrliste (frozen) |
Quarantäne (distrust-repo) |
|
|---|---|---|
| Umfang | bestimmte Pakete (per Regex/Serie) | ein ganzes Repository |
| Wirkung | jene Pakete einfrieren / verbergen | das Repository stellt kein Paket bereit |
| Wofür | „dieses Paket nie anrühren“ | „dieser Quelle gerade nicht vertrauen“ |
Siehe Security für das Quarantäne-Modell.
slacker
Getting started
Using slacker
- Commands
- Common Workflows
- Distribution Upgrade
- Repositories and Priority
- Package History
- Dependencies
- Docker
- Templates
- Blacklist
Trust & safety
Reference
For contributors
slacker - slackpkg + slackpkg+ in one - Apache-2.0 - by Ioannis Anagnostakis (rizitis) - beta / WIP, for Slackware -current (64-bit & 32-bit)