EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
Lista nera (blacklist)
La lista nera congela i pacchetti che non vuoi vengano toccati, e nasconde quelli
che non vuoi ti vengano proposti. Le regole vivono in /etc/slacker/blacklist (una
per riga, # per i commenti), oppure sono aggiunte e rimosse per te dai comandi
frozen e unfrozen.
La lista nera è diversa dalla corrispondenza di PATTERN sulla riga di comando. I PATTERN sono sottostringa + serie + esatto; le regole di lista nera sono glob o espressioni regolari non ancorate (più l'ambito
series/e@repo) applicate all'identificatore completoname-version-arch-build, comeslackpkg.
Sintassi delle regole
[@repo] PATTERN
- Il
PATTERNè una serie Slackware quando termina con/(es.kde/). Altrimenti è un glob o una regex non ancorata applicata all'identificatore completo — slacker decide in base a ciò che hai scritto:- Nessuna sintassi regex → glob.
*corrisponde a qualsiasi sequenza di caratteri,?a uno, e ogni altro carattere (incluso un.letterale, come inwebkit2gtk6.0opython3.11) è preso così com'è. Cosìvlc-*,webkit2gtk6.0*,*-l10n-*funzionano come ti aspetti. - Sintassi regex → regex. Un pattern che contiene un carattere
[ ] ( ) { } | ^ $ \, o l'idioma.*/.+(«qualsiasi carattere»), è preso come regex così com'è. Cosìxf86-.*-202.*cattura un build 202x,^vlc-[0-9]si ancora al pacchettovlc, e un semplicevlccorrisponde a qualsiasi identificatore che contengavlc. Ancora con^...$per una corrispondenza esatta.
- Nessuna sintassi regex → glob.
- Il prefisso opzionale
@reporestringe la regola a un repository: per un pacchetto disponibile, il suo repository candidato; per uno installato, la sua sorgente.
Congelato vs nascosto
| La corrispondenza è… | Effetto |
|---|---|
| installata | congelata — mai installata, aggiornata, reinstallata o rimossa, e mai elencata da clean-system |
| non installata | nascosta da install-new, dagli aggiornamenti e da check-updates, ma ancora mostrata da search/info con la dicitura [blacklisted] |
La lista nera è rispettata da ogni comando che modifica il sistema (incluso
reinstall).
Il comando frozen
frozen valida le regole e le aggiunge alla lista nera per te.
slacker frozen "@alienbob vlc-[0-9]" # congela solo il vlc di alienbob (regex)
slacker frozen "vlc-*" # un glob: tutto ciò che inizia con "vlc-"
slacker frozen "webkit2gtk6.0*" # un glob; il punto è letterale
slacker frozen kde/ # congela l'intera serie kde
slacker frozen "xf86-.*-202.*" # una regola regex
slacker frozen "@conraid ^ffmpeg-" # quasi esatto, ristretto a conraid
- Ogni argomento è una regola; metti tra apici ogni regola che contenga spazi
(una regola
@repo, per esempio). - slacker segnala un probabile errore — un
@repoche non nomina alcun repository attivo, o una regex che contiene uno spazio (nessun identificatore di pacchetto ha spazi, quindi di solito è una@dimenticata o un errore di apici) — e chiede se dichiararla comunque. - Stampa cosa congelerà ogni regola e chiede conferma.
--yessalta le richieste. Le regole già presenti vengono saltate.
Il comando unfrozen
unfrozen è la controparte di frozen: rimuove regole dalla lista nera.
slacker unfrozen # elenca le regole attuali (non serve root per leggere)
slacker unfrozen emacs # rimuovi la regola "emacs"
slacker unfrozen "@alienbob vlc-[0-9]" # rimuovi una regola ristretta (tra apici)
slacker unfrozen "xf86-.*-202.*" # i caratteri speciali sono confrontati letteralmente
La corrispondenza è esatta e letterale — mai un pattern. Ogni argomento deve
uguagliare una regola esistente carattere per carattere; i metacaratteri regex di
una regola (.*, *, -, [, ], /) sono confrontati così come sono, e
non interpretati. Così unfrozen "fcitx5*" rimuove solo la regola fcitx5* e
non tocca mai fcitx5-qt, e unfrozen fcitx5 (una stringa più corta) non
corrisponde a nulla invece di rimuovere fcitx5* per sbaglio. È deliberato: una
lista nera è piena di caratteri speciali, e la corrispondenza esatta è l'unico modo
sicuro di rimuovere la riga giusta.
- Eseguilo senza argomento per stampare le regole attuali, così da copiare il testo esatto da rimuovere.
- Le righe di commento, le righe vuote e ogni regola che non hai nominato sono conservate così come sono; una regola non trovata viene segnalata, e nulla viene scritto a meno che almeno una regola non abbia corrisposto.
- Metti tra apici ogni regola con spazi o caratteri speciali della shell (una
regola
@repo, un*finale), esattamente come perfrozen.
Rimuovere una regola dal file a mano funziona anche —
unfrozenlo fa solo in modo sicuro, con la garanzia di corrispondenza esatta e l'elenco delle regole attuali.
Un esempio pratico: congelare il vlc di un solo repository
Diciamo che tieni vlc da alienbob e non vuoi mai che venga sostituito o
rimosso:
slacker frozen "@alienbob vlc-[0-9]"
Perché vlc-[0-9] e non solo vlc? La regola è applicata senza ancoraggio
sull'identificatore completo. vlc da solo corrisponderebbe anche a
vlc-plugin-foo o a qualsiasi cosa contenga quelle lettere; vlc-[0-9] si ancora
al confine di versione per corrispondere al pacchetto vlc stesso. Per una
corrispondenza stretta potresti scrivere ^vlc-[0-9]. (Il glob vlc-* è pure
accettato — si compila in vlc-.* e congela l'intera famiglia vlc-, plugin
inclusi; usa la regex ^vlc-[0-9] quando vuoi solo il pacchetto vlc.)
Pin: prendere un pacchetto solo da un repository
Lo stesso file blacklist memorizza anche pin — l'opposto positivo di un
congelamento. Un congelamento dice non prendere mai questo pacchetto (o non da
questo repository); un pin dice prendi questo pacchetto solo da questo
repository, ignorando la priorità.
Gestisci i pin con due comandi:
slacker pin alienbob:vlc # vlc ora viene solo da alienbob, anche se un repo di
# priorità più alta offre un altro build
slacker unpin vlc # ritorno alla risoluzione normale per priorità
slacker unpin # (senza argomento) elenca i pin attuali
Un pin è scritto nel file blacklist con un marcatore 100%, quindi puoi anche
aggiungerlo o leggerlo a mano:
@alienbob 100% vlc
Come si comporta:
- Ogni comando lo rispetta —
install,upgradeeupgrade-allprelevano il pacchetto solo dal repository pinnato, senza riguardo alla priorità. Un piano che include un pacchetto pinnato lo elenca sotto «pinned (taken only from their repo, ignoring priority)», come vengono evidenziati i pacchetti congelati. - I pin usano un nome di pacchetto esatto, mai un pattern (
vlc, nonvlc*). Un punto letterale va bene —python3.11ewebkit2gtk6.0sono nomi di pin validi. Per congelare un pattern, usa invecefrozen(accetta glob e regex). - Un pacchetto ha al più un pin. Pinnarlo a un altro repository sostituisce il vecchio.
- Se il repository pinnato al momento non offre il pacchetto, questo resta semplice-
mente com'è (non viene mai prelevato da altrove) finché quel repository non lo
fornisce.
slacker statussegnala un pin il cui repository non è attivo, edel-repoti avverte se ci sono pacchetti pinnati al repository che stai rimuovendo. - Un congelamento vince sempre su un pin sullo stesso pacchetto: se
vlcè sia congelato sia pinnato, prevale il congelamento e il pin non fa nulla finché non faiunfrozen.
Pin vs il congelamento ristretto dell'esempio sopra: @alienbob vlc congela il
vlc di alienbob (e lascia che altri repository lo aggiornino per priorità);
@alienbob 100% vlc pinna vlc ad alienbob (e non lascia che nessun altro
repository lo fornisca). Sono opposti.
Lista nera vs quarantena di repository
Risolvono problemi diversi:
Lista nera (frozen) |
Quarantena (distrust-repo) |
|
|---|---|---|
| Ambito | pacchetti specifici (per regex/serie) | un repository intero |
| Effetto | congela / nasconde quei pacchetti | il repository non fornisce alcun pacchetto |
| Usala per | «non toccare mai questo pacchetto» | «non fidarti di questa sorgente in questo momento» |
Vedi Security per il modello di quarantena.
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)