EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
Repositórios e prioridade
Esta é a ideia que define o slacker, e o que o distingue de uma simples ferramenta de espelhos: cada repositório vive num único modelo ordenado por prioridade, e a prioridade nunca é violada em silêncio.
A regra de prioridade
Quando o mesmo nome de pacote é oferecido por vários repositórios, vence o do repositório de prioridade mais alta. Mais importante ainda:
Um pacote instalado nunca é migrado em silêncio para outro repositório, e nunca é rebaixado. Um candidato só é proposto a partir de um repositório de prioridade maior ou igual. A única exceção é um
repo:nameexplícito.
Assim, dar a um repositório uma prioridade alta e distinta tranca os seus pacotes: nada de um repositório inferior os pode substituir, nem mesmo com um número de versão mais recente.
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#161b22','primaryBorderColor':'#1f6feb','primaryTextColor':'#e6edf3','lineColor':'#6e7781','fontFamily':'monospace'}}}%%
flowchart TB
I["pacote instalado<br/>(o seu build tag = a sua fonte)"] --> D{"prioridade do repo candidato<br/>vs a fonte instalada"}
D -->|maior ou igual| U["pode atualizar / substituir"]
D -->|menor| K["mantido - nunca rebaixado<br/>nunca migrado"]
PIN["repo:name"] -. "força um repo,<br/>ignorando a prioridade" .-> 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
Como sabe o slacker a «fonte» de um pacote instalado sem uma base de dados? Pelo seu
build tag — o campo build menos os dígitos iniciais (1_SBo → _SBo, 7cf →
cf, 1 → oficial). Uma linha tag-priority do utilizador, ou o repositório binário
de prioridade mais alta que entrega essa etiqueta (cf → conraid, alien →
alienbob, detetado automaticamente), decide a prioridade a que pertence.
O ficheiro 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
# linhas tag-priority (podem partilhar uma prioridade):
100 SBo _SBo
100 local _rtz
O campo URL
| Forma | Significado |
|---|---|
| um URL literal | https://, http://, ou file:// (este último para um clone local / NFS / suporte montado — três barras para um caminho absoluto) |
mirror |
a linha ativa de mirrors, tal como está — usa-a para o repositório oficial |
mirror/<subcaminho> |
o espelho ativo com um subcaminho acrescentado (mirror/extra, mirror/testing, mirror/patches) — uma subárvore que segue o espelho que escolheste |
Um URL aponta para a raiz do repositório que contém PACKAGES.TXT; para os
espelhos oficiais, o MANIFEST.bz2 fica num subdiretório por arquitetura que o
slacker encontra automaticamente.
As flags
| Flag | O que faz |
|---|---|
official |
Marca o repositório seguido: alimenta o show-changelog e é o predefinido para install-new. A colocação continua a ser só por prioridade — o repositório oficial pode ficar em qualquer lado. |
immutable |
Todo o pacote atribuído a este repositório é mantido fora do clean-system. Usa-a para extra/testing/patches que mantenhas instalados, em vez de pôr cada um na lista negra. |
subtree |
Este URL é uma subárvore da distribuição Slackware (extra, patches, testing, pasture). O PACKAGES.TXT delas lista localizações relativas à raiz da distribuição, por isso os pacotes e a GPG-KEY são obtidos do URL pai (raiz) enquanto os metadados vêm do próprio URL. Sem ela, esses pacotes dão 404 com um segmento de caminho duplicado. As quatro subárvores têm de levar sempre esta flag. |
verify=... |
Substituição de verificação por repositório (ver Security). |
mirror/extra+subtreeandam aos pares. Omirror/extraresolve o URL; osubtreecorrige como os pacotes e a chave são obtidos a partir dele.
Fixação (pinning) e seletores
Um PATTERN na linha de comandos pode ser:
| Forma | Corresponde a |
|---|---|
firefox |
um nome de pacote exato |
python |
uma subcadeia de nome — todos os python-* |
kde |
uma série Slackware (a, ap, d, k, kde, l, n, t, x, xap, xfce, y, …) — só essa série, nunca subcadeias |
repo:name |
um pin — força um repositório independentemente da prioridade (ex. alienbob:vlc) |
@repo |
um seletor de conjunto — todos os pacotes desse repositório (install @gnome, remove @gnome) |
@_tag |
todos os pacotes com essa etiqueta de build (remove @_SBo) |
O
@é obrigatório, para que uma palavra solta nunca seja confundida com um repositório. Um@repo/@_tagdesconhecido dá uma sugestão «did you mean» e lista os repositórios e etiquetas disponíveis.
Quando um padrão corresponde a mais de um pacote, install/upgrade/reinstall/
remove mostram uma lista numerada — Enter para todos, números/intervalos como
1 3 5 ou 2-4, n para cancelar.
Não existe carácter universal
*para a seleção na linha de comandos. Um*sem aspas é expandido pela tua shell para os nomes de ficheiro do diretório atual antes de o slacker correr (o slacker nunca vê o*nem lê o teu diretório); se isso produzir uma enxurrada de argumentos que não são pacotes, o slacker reconhece-o e recusa o comando, sem alterar nada. Põe um padrão literal entre aspas, ou usa@repopara um repositório inteiro. (A Blacklist é o único lugar onde os padrões são globs/regex.)
Gerir repositórios a partir da 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 a prioridade de um repo existente
slacker add-tag 100 SBo _SBo
slacker del-tag _SBo
slacker list-repos # prioridade, verify, flags, número de instalados
O add-repo valida a linha e, após confirmação, obtém e examina (vets) o
repositório (ver Security).
O pri-repo PRIORITY NAME altera a prioridade de um repositório que já tens.
Verifica que NAME é um repositório ativo (sugerindo a correspondência mais próxima
num erro de escrita) e recusa uma PRIORITY que outro repositório já detenha,
nomeando o conflito para que escolhas outro valor — as prioridades têm de continuar
distintas. Só a prioridade dessa linha é reescrita; o URL e as flags ficam
exatamente como estavam.
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)