EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
Liste noire (blacklist)
La liste noire fige les paquets que vous ne voulez pas voir touchés, et masque
ceux que vous ne voulez pas voir proposés. Les règles vivent dans
/etc/slacker/blacklist (une par ligne, # pour les commentaires), ou sont
ajoutées et retirées pour vous par les commandes frozen et unfrozen.
La liste noire est différente de la correspondance de PATTERN en ligne de commande. Les PATTERN sont sous-chaîne + série + exact ; les règles de liste noire sont des globs ou des expressions régulières non ancrées (plus le cadrage
series/et@repo) appliquées à l'identifiant completname-version-arch-build, commeslackpkg.
Syntaxe des règles
[@repo] PATTERN
- Le
PATTERNest une série Slackware lorsqu'il se termine par/(p. ex.kde/). Sinon, c'est un glob ou une regex non ancrée appliquée à l'identifiant complet — slacker décide d'après ce que vous avez écrit :- Aucune syntaxe regex → glob.
*correspond à toute suite de caractères,?à un seul, et tout autre caractère (y compris un.littéral, comme danswebkit2gtk6.0oupython3.11) est pris tel quel. Ainsivlc-*,webkit2gtk6.0*,*-l10n-*fonctionnent comme prévu. - Syntaxe regex → regex. Un pattern contenant un caractère
[ ] ( ) { } | ^ $ \, ou l'idiome.*/.+(« n'importe quels caractères »), est pris comme regex tel quel. Ainsixf86-.*-202.*attrape un build 202x,^vlc-[0-9]s'ancre sur le paquetvlc, et un simplevlccorrespond à tout identifiant contenantvlc. Ancrez avec^...$pour une correspondance exacte.
- Aucune syntaxe regex → glob.
- Le préfixe optionnel
@repocadre la règle sur un dépôt : pour un paquet disponible, son dépôt candidat ; pour un paquet installé, sa source.
Figé vs masqué
| La correspondance est… | Effet |
|---|---|
| installée | figée — jamais installée, mise à niveau, réinstallée ni supprimée, et jamais listée par clean-system |
| non installée | masquée de install-new, des mises à niveau et de check-updates, mais toujours montrée par search/info avec la mention [blacklisted] |
La liste noire est respectée par toute commande modifiant le système (y
compris reinstall).
La commande frozen
frozen valide les règles et les ajoute à la liste noire pour vous.
slacker frozen "@alienbob vlc-[0-9]" # figer seulement le vlc d'alienbob (regex)
slacker frozen "vlc-*" # un glob : tout ce qui commence par "vlc-"
slacker frozen "webkit2gtk6.0*" # un glob ; le point est littéral
slacker frozen kde/ # figer toute la série kde
slacker frozen "xf86-.*-202.*" # une règle regex
slacker frozen "@conraid ^ffmpeg-" # quasi exact, cadré sur conraid
- Chaque argument est une règle ; protégez par des guillemets toute règle
contenant des espaces (une règle
@repo, par exemple). - slacker signale une erreur probable — un
@repoqui ne nomme aucun dépôt actif, ou une regex contenant un espace (aucun identifiant de paquet n'a d'espaces, c'est donc d'ordinaire un@oublié ou une coquille de guillemets) — et demande s'il faut la déclarer quand même. - Il affiche ce que chaque règle va figer et demande confirmation.
--yessaute les invites. Les règles déjà présentes sont ignorées.
La commande unfrozen
unfrozen est le pendant de frozen : elle retire des règles de la liste noire.
slacker unfrozen # lister les règles actuelles (aucun root requis pour lire)
slacker unfrozen emacs # retirer la règle "emacs"
slacker unfrozen "@alienbob vlc-[0-9]" # retirer une règle cadrée (entre guillemets)
slacker unfrozen "xf86-.*-202.*" # les caractères spéciaux sont comparés littéralement
La correspondance est exacte et littérale — jamais un pattern. Chaque argument
doit égaler une règle existante caractère pour caractère ; les métacaractères regex
d'une règle (.*, *, -, [, ], /) sont comparés tels quels, et non
interprétés. Ainsi unfrozen "fcitx5*" ne retire que la règle fcitx5* et ne
touche jamais fcitx5-qt, et unfrozen fcitx5 (une chaîne plus courte) ne
correspond à rien plutôt que de retirer fcitx5* par accident. C'est délibéré :
une liste noire est pleine de caractères spéciaux, et la correspondance exacte est
le seul moyen sûr de retirer la bonne ligne.
- Lancez-la sans argument pour afficher les règles actuelles, afin de copier le texte exact à retirer.
- Les lignes de commentaire, les lignes vides et toute règle que vous n'avez pas nommée sont préservées telles quelles ; une règle introuvable est signalée, et rien n'est écrit sauf si au moins une règle a effectivement correspondu.
- Protégez par des guillemets toute règle contenant des espaces ou des caractères
spéciaux du shell (une règle
@repo, un*final), exactement comme pourfrozen.
Retirer une règle du fichier à la main fonctionne aussi —
unfrozenle fait simplement en toute sécurité, avec la garantie de correspondance exacte et la liste des règles actuelles.
Un exemple concret : figer le vlc d'un seul dépôt
Disons que vous gardez vlc d'alienbob et ne voulez jamais qu'il soit remplacé
ou supprimé :
slacker frozen "@alienbob vlc-[0-9]"
Pourquoi vlc-[0-9] et pas simplement vlc ? La règle est appliquée sans
ancrage sur l'identifiant complet. vlc seul correspondrait aussi à
vlc-plugin-foo ou à tout ce qui contient ces lettres ; vlc-[0-9] s'ancre à la
frontière de version pour correspondre au paquet vlc lui-même. Pour une
correspondance stricte, vous pourriez écrire ^vlc-[0-9]. (Le glob vlc-* est
aussi accepté — il se compile en vlc-.* et fige toute la famille vlc-, plugins
compris ; utilisez la regex ^vlc-[0-9] quand vous voulez uniquement le paquet
vlc.)
Pins : ne prendre un paquet que d'un seul dépôt
Le même fichier blacklist stocke aussi des pins — l'opposé positif d'un gel.
Un gel dit ne jamais prendre ce paquet (ou pas de ce dépôt) ; un pin dit
prendre ce paquet uniquement de ce dépôt, en ignorant la priorité.
Gérez les pins avec deux commandes :
slacker pin alienbob:vlc # vlc ne vient plus que d'alienbob, même si un dépôt
# de priorité supérieure propose un autre build
slacker unpin vlc # retour à la résolution normale par priorité
slacker unpin # (sans argument) lister les pins actuels
Un pin est écrit dans le fichier blacklist avec un marqueur 100%, vous pouvez
donc aussi l'ajouter ou le lire à la main :
@alienbob 100% vlc
Son comportement :
- Toute commande le respecte —
install,upgradeetupgrade-alls'approvisionnent uniquement depuis le dépôt épinglé, quelle que soit la priorité. Un plan incluant un paquet épinglé le liste sous « pinned (taken only from their repo, ignoring priority) », comme les paquets figés sont mis en évidence. - Les pins utilisent un nom de paquet exact, jamais un pattern (
vlc, pasvlc*). Un point littéral est permis —python3.11etwebkit2gtk6.0sont des noms de pin valides. Pour figer un pattern, utilisez plutôtfrozen(qui accepte globs et regex). - Un paquet a au plus un pin. L'épingler sur un autre dépôt remplace l'ancien.
- Si le dépôt épinglé ne propose pas actuellement le paquet, celui-ci reste tel
quel (il n'est jamais tiré d'ailleurs) jusqu'à ce que ce dépôt le fournisse.
slacker statussignale un pin dont le dépôt n'est pas actif, etdel-repovous avertit si des paquets sont épinglés sur le dépôt que vous retirez. - Un gel l'emporte toujours sur un pin pour le même paquet : si
vlcest à la fois figé et épinglé, le gel s'applique et le pin ne fait rien jusqu'à ce que vous fassiezunfrozen.
Pin vs le gel cadré de l'exemple ci-dessus : @alienbob vlc fige le vlc
d'alienbob (et laisse d'autres dépôts le mettre à jour selon la priorité) ;
@alienbob 100% vlc épingle vlc sur alienbob (et n'autorise aucun autre dépôt à
le fournir). Ce sont des opposés.
Liste noire vs quarantaine de dépôt
Elles résolvent des problèmes différents :
Liste noire (frozen) |
Quarantaine (distrust-repo) |
|
|---|---|---|
| Portée | des paquets spécifiques (par regex/série) | un dépôt entier |
| Effet | figer / masquer ces paquets | le dépôt ne fournit aucun paquet |
| À utiliser pour | « ne jamais toucher à ce paquet » | « ne pas faire confiance à cette source en ce moment » |
Voir Security pour le modèle de quarantaine.
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)