diff options
Diffstat (limited to 'content/it')
| -rw-r--r-- | content/it/slackware/mkhint/header.jpg | bin | 0 -> 406608 bytes | |||
| -rw-r--r-- | content/it/slackware/mkhint/index.md | 125 | ||||
| -rw-r--r-- | content/it/slackware/mkhint/thumbnail.jpg | bin | 0 -> 242235 bytes |
3 files changed, 125 insertions, 0 deletions
diff --git a/content/it/slackware/mkhint/header.jpg b/content/it/slackware/mkhint/header.jpg Binary files differnew file mode 100644 index 0000000..6c3322e --- /dev/null +++ b/content/it/slackware/mkhint/header.jpg diff --git a/content/it/slackware/mkhint/index.md b/content/it/slackware/mkhint/index.md new file mode 100644 index 0000000..9e2eb55 --- /dev/null +++ b/content/it/slackware/mkhint/index.md @@ -0,0 +1,125 @@ ++++ +title = "mkhint" +tagline = "Gestisce gli hint file di slackrepo: aggiorna versioni, ricalcola i checksum, segue i rilasci upstream." +status = "active" +repo_url = "https://git.danix.xyz/mkhintfile" +tags = ["bash", "slackware", "slackrepo", "packaging"] + +[menus.main] + name = "hintfiles helper" + parent = "slackware" + weight = 10 ++++ + +**mkhint** è un singolo script Bash che elimina la noia di mantenere gli +*hint file* di [slackrepo](https://idlemoor.github.io/slackrepo/). Un hint file +sovrascrive i dettagli di build di un pacchetto SBo: quale versione compilare, +da dove scaricare i sorgenti e i checksum con cui verificarli. Tenerli +allineati a mano, su decine di pacchetti, è esattamente il tipo di lavoro +ripetitivo che dovrebbe spettare a uno script. + +## Cosa fa + +- **Aggiorna un hint** `-f package -v 2.0.1`: porta la versione ovunque nel + file, riscarica i sorgenti da `DOWNLOAD` / `DOWNLOAD_x86_64` e ricalcola + `MD5SUM` / `MD5SUM_x86_64`. Il file precedente viene salvato in `.bak`. +- **Crea un hint** `-n package`: genera un nuovo hint dal `.info` + corrispondente nel repository, rimuovendo i campi che slackrepo non vuole e + impostando `ARCH` a `x86_64`. Senza `.info`, scrive uno scheletro vuoto. +- **Elenco** `-l`: stampa ogni hint con il suo `HintVer` (versione nell'hint) + accanto al `SBOVer` (versione nel `.info` del repository), evidenziando le + righe in cui i due valori coincidono byte per byte, così individui gli hint + ormai ridondanti rispetto all'upstream. +- **Revisione** `-R`: scorre solo gli hint evidenziati, mostrando ciascuno + affiancato al suo `.info` (`git diff --no-index`, con ripiego su `diff -y`) e + chiedendo se tenere, cancellare o saltare. +- **Controllo** `-C [package...]`: interroga + [nvchecker](https://github.com/lilydjwg/nvchecker) per l'ultima versione + upstream di uno, alcuni o tutti gli hint; segnala cosa è obsoleto; aggiorna i + pacchetti accettati con `nvtake`; e termina con un unico prompt + `slackrepo update` per tutto ciò che è cambiato. +- **Manutenzione** `-d package` / `-c`: cancella un hint e il suo backup, + oppure rimuove tutti i `.bak` dalla directory degli hint in un colpo solo. + +## Riferimento dei comandi + +```text +mkhint - Manage hint files for slackrepo scripts + +Usage: + ./mkhint --version VERSION --hintfile FILE Update existing hint file + ./mkhint --version VERSION --new FILE Create new hint file + ./mkhint --new FILE Create new hint file (no version) + ./mkhint --hintfile FILE Update hint, suggest latest version via nvchecker + ./mkhint --check [FILE...] Check all (or named) hints for upstream updates + ./mkhint --list List hint files + ./mkhint --review Review hints matching SBo version, keep/delete each + ./mkhint --clean Remove .bak files from HINT_DIR + ./mkhint --no-dl --hintfile FILE Update hint, skip downloads, add NODOWNLOAD=yes + ./mkhint --no-dl --new FILE Create hint with NODOWNLOAD=yes + ./mkhint --help Show this help + +Options: + --version, -v VERSION New version string (required for --hintfile) + --hintfile, -f FILE Path to existing hint file (required with --version) + --new, -n FILE Create new hint file (required with --version or standalone) + --list, -l List all hint files in the default directory + --review, -R Review hints whose version matches the SBo .info; diff + keep/delete + --clean, -c Remove all .bak files from HINT_DIR + --check, -C [FILE...] Check hints for upstream updates via nvchecker, update interactively + --delete, -d FILE Delete a hint file (and .bak if present) + --no-dl, -N Skip downloads; add NODOWNLOAD=yes to hint file (use with -f or -n) + --help, -h Show this help message +``` + +## Come funziona + +mkhint è puro Bash con tre piccole dipendenze, ciascuna con un compito solo: + +- `wget` scarica gli archivi per calcolarne l'MD5, +- `nvchecker` (e il suo compagno `nvtake`) segue le versioni upstream, +- `jq` analizza l'output JSON di nvchecker. + +Tutto il resto è shell. I percorsi del repository e della directory degli hint +sono due variabili in cima allo script. Il file di bash-completion li rispecchia, +così `-f`, `-n`, `-d` e `-C` completano i nomi dei pacchetti dalla directory +giusta, e `-v` suggerisce persino la versione corrente letta direttamente +dall'hint file indicato. + +Le voci `DOWNLOAD` multiriga (un pacchetto con più URL sorgente) sono gestite +con cura: il primo URL viene sempre riscaricato perché la versione è cambiata, +mentre ogni URL di continuazione viene proposto in modo interattivo, così i +sorgenti invariati conservano il checksum esistente invece di essere riscaricati +inutilmente. + +## Perché esiste + +Mantenere un overlay SBo personale significa un flusso costante di aggiornamenti +di versione. Ogni volta la stessa danza: modificare la stringa di versione, +scaricare il nuovo tarball, ricalcolare il checksum, sperare di non aver sbagliato +una cifra. mkhint riduce quella danza a un comando, e il trio `--check` / +`--list` / `--review` trasforma "quali dei miei hint sono ormai obsoleti o +inutili?" da audit manuale a un'occhiata. È il tipo di strumento piccolo e +affilato che Slackware incoraggia: niente demone, niente database, niente +framework, solo uno script che fa bene un lavoro noioso. + +## Avvio rapido + +```bash +sudo cp mkhint /usr/local/bin/mkhint +sudo cp mkhint.bash-completion /etc/bash-completion.d/mkhint + +# aggiorna un hint esistente a una versione nota +mkhint -f mypackage -v 2.0.1 + +# crea un nuovo hint dal .info del repository +mkhint -n mypackage + +# guarda cosa si è mosso a monte +mkhint --check +``` + +Modifica i percorsi `REPO_DIR` e `HINT_DIR` in cima allo script (e nel file di +completion) per adattarli alla tua configurazione prima del primo utilizzo. + +{{< actions use="repo" url="https://git.danix.xyz/mkhintfile/" desc="Sfoglia il sorgente" caption="Spero ti sia utile. Se mantieni un tuo overlay slackrepo, mkhint potrebbe risparmiarti la stessa noia che risparmia a me. Patch e idee sono benvenute." >}} diff --git a/content/it/slackware/mkhint/thumbnail.jpg b/content/it/slackware/mkhint/thumbnail.jpg Binary files differnew file mode 100644 index 0000000..dabefd5 --- /dev/null +++ b/content/it/slackware/mkhint/thumbnail.jpg |
