Table of Contents
EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
Lista negra (blacklist)
La lista negra congela los paquetes que no quieres que se toquen, y oculta los que
no quieres que se ofrezcan. Las reglas viven en /etc/slacker/blacklist (una por
línea, # para comentarios), o las añaden y quitan por ti los comandos frozen y
unfrozen.
La lista negra es diferente de la coincidencia de PATTERN en la línea de comandos. Los PATTERN son subcadena + serie + exacto; las reglas de lista negra son globs o expresiones regulares no ancladas (más el ámbito
series/y@repo) aplicadas al identificador completoname-version-arch-build, comoslackpkg.
Sintaxis de las reglas
[@repo] PATTERN
- El
PATTERNes una serie de Slackware cuando termina en/(p. ej.kde/). En caso contrario es un glob o una regex no anclada aplicada al identificador completo — slacker decide según lo que escribiste:- Sin sintaxis regex → glob.
*coincide con cualquier secuencia de caracteres,?con uno, y cualquier otro carácter (incluido un.literal, como enwebkit2gtk6.0opython3.11) se toma tal cual. Asívlc-*,webkit2gtk6.0*,*-l10n-*funcionan como esperarías. - Sintaxis regex → regex. Un patrón que contiene un carácter
[ ] ( ) { } | ^ $ \, o el idioma.*/.+(«cualquier carácter»), se toma como regex tal cual. Asíxf86-.*-202.*captura un build 202x,^vlc-[0-9]se ancla al paquetevlc, y un simplevlccoincide con cualquier identificador que contengavlc. Ancla con^...$para una coincidencia exacta.
- Sin sintaxis regex → glob.
- El prefijo opcional
@repoacota la regla a un repositorio — por coincidencia con el nombre del repo o el tag de build: para un paquete disponible, su repositorio candidato; para uno instalado, su fuente. Así@testing xf86-.*se acota al repotesting, mientras que@_SBo foose acota a los paquetes que llevan el tag de build_SBo.
Congelado vs oculto
| La coincidencia está… | Efecto |
|---|---|
| instalada | ese candidato está congelado — se trata como si su repo no ofreciera el paquete; el paquete en sí nunca lo lista clean-system |
| no instalada | oculta de install-new, las actualizaciones y check-updates, pero aún la muestran search/info marcada como [blacklisted] |
La lista negra la respeta todo comando que modifica el sistema (incluido
reinstall).
El congelado es un repliegue, no un pin
Un congelado no se limita a fijar la versión instalada. Un candidato congelado se trata como si su repositorio no ofreciera el paquete en absoluto, y la resolución prosigue entonces normalmente por prioridad sobre los candidatos restantes (no congelados). Un paquete instalado se mantiene sin cambios solo cuando todos los candidatos que consideraría están congelados.
- Un
frozen xf86-.*sin@repocongela ese nombre en cada repo → se mantiene en todas partes. - Un
@testing xf86-.*acotado congela solo el candidato de testing → la resolución recae en el siguiente repo por prioridad (p. ej.slackware), y las actualizaciones de ese repo siguen fluyendo.
El repliegue nunca baja de la prioridad de la fuente desde la que el paquete está
instalado actualmente, así que un congelado nunca puede convertirse en una
degradación; si el único candidato no congelado quedara por debajo, el paquete se
mantiene en su lugar. Un pin restringe primero el conjunto de candidatos, y el
congelado se aplica dentro de él, así que un paquete a la vez fijado y congelado se
mantiene.
El comando frozen
frozen valida reglas y las añade a la lista negra por ti.
slacker frozen "@alienbob vlc-[0-9]" # congelar solo el vlc de alienbob (regex)
slacker frozen "vlc-*" # un glob: todo lo que empiece por "vlc-"
slacker frozen "webkit2gtk6.0*" # un glob; el punto es literal
slacker frozen kde/ # congelar toda la serie kde
slacker frozen "xf86-.*-202.*" # una regla regex
slacker frozen "@conraid ^ffmpeg-" # casi exacto, acotado a conraid
- Cada argumento es una regla; pon entre comillas cualquier regla que contenga
espacios (una regla
@repo, por ejemplo). - slacker señala un probable error — un
@repoque no nombra ningún repositorio activo, o una regex que contiene un espacio (ningún identificador de paquete tiene espacios, así que suele ser un@olvidado o un desliz de comillas) — y pregunta si declararla de todos modos. - Imprime lo que congelará cada regla y pide confirmación.
--yesse salta las preguntas. Las reglas ya presentes se omiten.
El comando unfrozen
unfrozen es la contraparte de frozen: quita reglas de la lista negra.
slacker unfrozen # listar las reglas actuales (no hace falta root para leer)
slacker unfrozen emacs # quitar la regla "emacs"
slacker unfrozen "@alienbob vlc-[0-9]" # quitar una regla acotada (entre comillas)
slacker unfrozen "xf86-.*-202.*" # los caracteres especiales se comparan literalmente
La coincidencia es exacta y literal — nunca un patrón. Cada argumento debe
igualar una regla existente carácter por carácter; los metacaracteres regex de una
regla (.*, *, -, [, ], /) se comparan tal cual, no se interpretan.
Así unfrozen "fcitx5*" quita solo la regla fcitx5* y nunca toca fcitx5-qt, y
unfrozen fcitx5 (una cadena más corta) no coincide con nada en lugar de quitar
fcitx5* por accidente. Es deliberado: una lista negra está llena de caracteres
especiales, y la coincidencia exacta es la única forma segura de quitar la línea
correcta.
- Ejecútalo sin argumento para imprimir las reglas actuales, y así copiar el texto exacto a quitar.
- Las líneas de comentario, las líneas vacías y cualquier regla que no nombraste se conservan tal cual; una regla no encontrada se informa, y no se escribe nada salvo que al menos una regla haya coincidido.
- Pon entre comillas cualquier regla con espacios o caracteres especiales del shell
(una regla
@repo, un*final), exactamente igual que parafrozen.
Quitar una regla del archivo a mano también funciona —
unfrozensimplemente lo hace de forma segura, con la garantía de coincidencia exacta y el listado de reglas actuales.
Un ejemplo trabajado: congelar el vlc de un solo repositorio
Digamos que mantienes vlc de alienbob y nunca quieres que se reemplace ni se
elimine:
slacker frozen "@alienbob vlc-[0-9]"
¿Por qué vlc-[0-9] y no solo vlc? La regla se aplica sin anclar sobre el
identificador completo. vlc por sí solo coincidiría también con vlc-plugin-foo
o con cualquier cosa que contenga esas letras; vlc-[0-9] se ancla al límite de
versión para coincidir con el paquete vlc en sí. Para una coincidencia estricta
podrías escribir ^vlc-[0-9]. (El glob vlc-* también se acepta — se compila a
vlc-.* y congela toda la familia vlc-, plugins incluidos; usa la regex
^vlc-[0-9] cuando quieras solo el paquete vlc.)
Pins: tomar un paquete solo de un repositorio
El mismo archivo blacklist almacena también pins — el opuesto positivo de un
congelado. Un congelado dice nunca tomes este paquete (o no de este
repositorio); un pin dice toma este paquete solo de este repositorio,
ignorando la prioridad.
Gestiona los pins con dos comandos:
slacker pin alienbob:vlc # vlc ahora viene solo de alienbob, aunque un repo de
# mayor prioridad ofrezca otro build
slacker unpin vlc # de vuelta a la resolución normal por prioridad
slacker unpin # (sin argumento) listar los pins actuales
Un pin se escribe en el archivo blacklist con un marcador 100%, así que también
puedes añadirlo o leerlo a mano:
@alienbob 100% vlc
Cómo se comporta:
- Todo comando lo respeta —
install,upgradeyupgrade-allobtienen el paquete solo del repositorio fijado, sin importar la prioridad. Un plan que incluye un paquete fijado lo lista bajo «pinned (taken only from their repo, ignoring priority)», igual que se destacan los paquetes congelados. - Los pins usan un nombre de paquete exacto, nunca un patrón (
vlc, novlc*). Un punto literal está bien —python3.11ywebkit2gtk6.0son nombres de pin válidos. Para congelar un patrón, usafrozen(acepta globs y regex). - Un paquete tiene como mucho un pin. Fijarlo a otro repositorio reemplaza el anterior.
- Si el repositorio fijado no ofrece actualmente el paquete, este simplemente
permanece como está (nunca se trae de ningún otro sitio) hasta que ese
repositorio lo provea.
slacker statusseñala un pin cuyo repositorio no está activo, ydel-repote avisa si hay paquetes fijados al repositorio que eliminas. - En
clean-system, un pin por sí solo no protege un paquete. Pero un paquete ajeno que está fijado y se instaló realmente desde el repo al que está fijado se ofrece en un paso aparte — [R]emove all / [K]eep all / [P]rompt each, con Keep por defecto (un pin es una elección explícita). Un nombre fijado cuya copia instalada provino de otra fuente es ignorado por ese paso y sigue la lógica normal de clean-system. - Un congelado siempre gana a un pin sobre el mismo paquete: si
vlcestá a la vez congelado y fijado, prevalece el congelado y el pin no hace nada hasta que hagasunfrozen.
Pin vs el congelado acotado del ejemplo anterior: @alienbob vlc congela el vlc
de alienbob (y deja que otros repositorios lo actualicen por prioridad);
@alienbob 100% vlc fija vlc a alienbob (y no deja que ningún otro repositorio
lo provea). Son opuestos.
Lista negra vs cuarentena de repositorio
Resuelven problemas distintos:
Lista negra (frozen) |
Cuarentena (distrust-repo) |
|
|---|---|---|
| Alcance | paquetes concretos (por regex/serie) | un repositorio entero |
| Efecto | congelar / ocultar esos paquetes | el repositorio no provee ningún paquete |
| Úsala para | «nunca toques este paquete» | «no confíes en esta fuente ahora mismo» |
Véase Security para el modelo de cuarentena.
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)