EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
Repositorios y prioridad
Esta es la idea que define a slacker, y lo que lo distingue de una simple herramienta de mirror: cada repositorio vive en un único modelo ordenado por prioridad, y la prioridad nunca se viola en silencio.
La regla de prioridad
Cuando el mismo nombre de paquete lo ofrecen varios repositorios, gana el del repositorio de mayor prioridad. Más importante aún:
Un paquete instalado nunca se migra en silencio a otro repositorio, y nunca se degrada. Un candidato solo se propone desde un repositorio de prioridad mayor o igual. La única excepción es un
repo:nameexplícito.
Así, dar a un repositorio una prioridad alta y distinta bloquea sus paquetes: nada de un repositorio inferior puede reemplazarlos, ni siquiera con un número de versión más nuevo.
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#161b22','primaryBorderColor':'#1f6feb','primaryTextColor':'#e6edf3','lineColor':'#6e7781','fontFamily':'monospace'}}}%%
flowchart TB
I["paquete instalado<br/>(su build tag = su fuente)"] --> D{"prioridad del repo candidato<br/>vs la fuente instalada"}
D -->|mayor o igual| U["puede actualizar / reemplazar"]
D -->|menor| K["se conserva - nunca degradado<br/>nunca migrado"]
PIN["repo:name"] -. "fuerza un repo,<br/>anulando la prioridad" .-> U
classDef grey fill:#0d1117,stroke:#6e7781,color:#8b949e;
classDef blue fill:#0d1117,stroke:#1f6feb,color:#e6edf3;
classDef green fill:#0d1117,stroke:#2ea043,color:#e6edf3;
class I,PIN grey
class D blue
class U green
class K grey
¿Cómo sabe slacker la «fuente» de un paquete instalado sin una base de datos? Por
su build tag — el campo build menos los dígitos iniciales (1_SBo → _SBo,
7cf → cf, 1 → oficial). Una línea tag-priority del usuario, o el repositorio
binario de mayor prioridad que entrega esa etiqueta (cf → conraid,
alien → alienbob, detectado automáticamente), decide la prioridad a la que
pertenece.
El archivo repos
# priority name url|mirror|mirror/<subpath> [flags]
100 slackware mirror official
200 patches mirror/patches subtree immutable
90 extras mirror/extra subtree immutable
85 testing mirror/testing subtree immutable
80 conraid https://slackers.it/repository/slackware64-current immutable
60 alienbob https://slackware.nl/people/alien/sbrepos/current/x86_64
# líneas tag-priority (pueden compartir una prioridad):
100 SBo _SBo
100 local _rtz
El campo URL
| Forma | Significado |
|---|---|
| una URL literal | https://, http://, o file:// (este último para un clon local / NFS / medio montado — tres barras para una ruta absoluta) |
mirror |
la línea activa de mirrors, tal cual — úsala para el repositorio oficial |
mirror/<subruta> |
el mirror activo con una subruta añadida (mirror/extra, mirror/testing, mirror/patches) — un subárbol que sigue al mirror que elegiste |
Una URL apunta a la raíz del repositorio que contiene PACKAGES.TXT; para los
mirrors oficiales, MANIFEST.bz2 vive en un subdirectorio por arquitectura que
slacker localiza automáticamente.
Los flags
| Flag | Qué hace |
|---|---|
official |
Marca el repositorio rastreado: alimenta show-changelog y es el predeterminado de install-new. La ubicación sigue siendo solo por prioridad — el repositorio oficial puede estar en cualquier sitio. |
immutable |
Todo paquete atribuido a este repositorio queda fuera de clean-system. Úsalo para extra/testing/patches que mantengas instalados, en lugar de poner en la lista negra cada uno. |
subtree |
Esta URL es un subárbol de distribución de Slackware (extra, patches, testing, pasture). Su PACKAGES.TXT lista las ubicaciones relativas a la raíz de la distribución, así que los paquetes y GPG-KEY se obtienen de la URL padre (raíz) mientras que los metadatos vienen de la URL en sí. Sin él, esos paquetes dan 404 con un segmento de ruta duplicado. Los cuatro subárboles deben llevar siempre este flag. |
verify=... |
Anulación de verificación por repositorio (véase Security). |
mirror/extra+subtreevan en pareja.mirror/extraresuelve la URL;subtreecorrige cómo se obtienen los paquetes y la clave de ella.
Fijado (pinning) y selectores
Un PATTERN en la línea de comandos puede ser:
| Forma | Coincide con |
|---|---|
firefox |
un nombre de paquete exacto |
python |
una subcadena de nombre — todos los python-* |
kde |
una serie de Slackware (a, ap, d, k, kde, l, n, t, x, xap, xfce, y, …) — solo esa serie, nunca subcadenas |
repo:name |
un pin — fuerza un repositorio sin importar la prioridad (p. ej. alienbob:vlc) |
@repo |
un selector de conjunto — todos los paquetes de ese repositorio (install @gnome, remove @gnome) |
@_tag |
todos los paquetes con esa etiqueta de build (remove @_SBo) |
El
@es obligatorio, de modo que una palabra suelta nunca se confunde con un repositorio. Un@repo/@_tagdesconocido da una sugerencia «did you mean» y lista los repositorios y etiquetas disponibles.
Cuando un patrón coincide con más de un paquete, install/upgrade/reinstall/
remove muestran una lista numerada — Intro para todos, números/rangos como
1 3 5 o 2-4, n para cancelar.
No existe comodín
*para la selección en la línea de comandos. Un*sin comillas lo expande tu shell a los nombres de archivo del directorio actual antes de que slacker se ejecute (slacker nunca ve el*ni lee tu directorio); si eso produce una avalancha de argumentos que no son paquetes, slacker lo reconoce y rechaza el comando, sin cambiar nada. Pon entre comillas un patrón literal, o usa@repopara un repositorio entero. (La Blacklist es el único sitio donde los patrones sí son globs/regex.)
Gestionar repositorios desde la CLI
slacker add-repo 85 ktown https://slackware.nl/people/alien/ktown/current/x86_64
slacker add-repo 90 extras mirror/extra subtree immutable
slacker del-repo ktown
slacker pri-repo 95 extras # reajustar la prioridad de un repo existente
slacker add-tag 100 SBo _SBo
slacker del-tag _SBo
slacker list-repos # prioridad, verify, flags, número de instalados
add-repo valida la línea y, tras confirmar, obtiene y examina (vets) el
repositorio (véase Security).
pri-repo PRIORITY NAME cambia la prioridad de un repositorio que ya tienes.
Comprueba que NAME sea un repositorio activo (sugiriendo la coincidencia más
cercana ante una errata) y rechaza una PRIORITY que otro repositorio ya ocupe,
nombrando el conflicto para que elijas otro valor — las prioridades deben seguir
siendo distintas. Solo se reescribe la prioridad de esa línea; la URL y los flags
quedan exactamente como estaban.
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)