7 Blacklist.fr
Anagnostakis Ioannis edited this page 2026-06-30 21:10:06 +03:00

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 complet name-version-arch-build, comme slackpkg.


Syntaxe des règles

[@repo] PATTERN
  • Le PATTERN est 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 dans webkit2gtk6.0 ou python3.11) est pris tel quel. Ainsi vlc-*, 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. Ainsi xf86-.*-202.* attrape un build 202x, ^vlc-[0-9] s'ancre sur le paquet vlc, et un simple vlc correspond à tout identifiant contenant vlc. Ancrez avec ^...$ pour une correspondance exacte.
  • Le préfixe optionnel @repo cadre 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 @repo qui 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. --yes saute 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 pour frozen.

Retirer une règle du fichier à la main fonctionne aussi — unfrozen le 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, upgrade et upgrade-all s'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, pas vlc*). Un point littéral est permis — python3.11 et webkit2gtk6.0 sont des noms de pin valides. Pour figer un pattern, utilisez plutôt frozen (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 status signale un pin dont le dépôt n'est pas actif, et del-repo vous 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 vlc est à la fois figé et épinglé, le gel s'applique et le pin ne fait rien jusqu'à ce que vous fassiez unfrozen.

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.