mi sono iscritto alla mailing list debian-testing-changes[¹]
Solo che quando mi arrivano le mail dei pacchetti che sono entrati
in testing c'è l'elenco dei pacchetti sorgente e non binari e
inoltre non è semplice capire cosa fa quel pacchetto.
Notare che riporta anche nuove versioni di pacchetti già presenti
in testing e non solo new entry. Però questo può dare un'idea di
quali sono i pacchetti mantenuti e quindi con continui aggiornamenti.
Ad esempio vedere una mail spedita da questa lista[²],
Mi sono quindi fatto uno script che mi stampa l'elenco dei pacchetti
binari con la descrizione partendo dall'elenco contenuto nella mail
che mi è arrivata e che salvo in un file.
Pensando che anche altri potrebbero gradire qualcosa di simile
condivido quanto fatto.
lo script è il seguente:
---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<-
#!/bin/bash
if [[ "$1" == "" ]]; then
echo "$0 inputfile"
echo -e "\n dove inputfile è il nome del file di input"
echo -e " e contiene il nome del pacchetto + spazio + altro"
echo -e "\nIl programma considera solo il nome del pacchetto e"
echo -e "stampa su stdout tale nome seguito dalla descrizione."
echo -e "\nNotare che i pacchetti di origine sono di sorgente e"
echo -e "non di binari. Nomi/descrizioni sono dei pacchetti binari"
echo -e "I pacchetti vengono prima ordinati e poi rimossi i doppioni\n"
exit 0
fi
if [[ ! -f "$1" ]] || [[ ! -r "$1" ]]; then
echo -e "Il file indicato \"$1\" non è un file normale o non è leggibile\n"
exit 1
fi
FileTmp="$(mktemp -p /tmp)"
for i in $(cat "$1" | sed "s/ .*//" | sort | uniq); do
# non fuziona il flag --no-all-versions di apt-cache, quindi elimino i possibili doppioni a "mano"
apt showsrc $i 2> /dev/null | grep ^Binary | sed "s/[^ ]* //;s/,//g" | sort | uniq >> "$FileTmp"
done # i
for k in $(cat $FileTmp | sed "s/ /\n/g" | sort | uniq); do
tput setaf 4
echo $k
tput setaf 7
for j in "$(LANG=C apt show $k 2> /dev/null | sed "s/*/\\\*/g;s/?/\\\?/g")"; do
echo $j | sed "s/^.*\(Description.*\)$/\1\n/"
done
done
rm "$FileTmp"
---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<-
Quindi creo un file a.txt contenente solo le righe con i pacchetti
sorgenti ed eseguo lo script MioScript.sh sopraindicato passando
come parametro questo file
$ ./MioScript.sh a.txt
o volendo si può visualizzare con un pager, esempio most
$ ./MioScript.sh a.txt | most
Nota: lo script lo fatto in fretta e quindi è di sicuro migliorabile
Nota: per funzionare lo script necessita di alcuni pacchetti, es: sed
se non funziona allora vedere dall'errore il $COMANDO che non
trova e cercarlo con
$ apt-file search bin/$COMANDO
e installare il pacchetto indicato che contiene $COMANDO
Se non avete installato apt-file, allora:
# apt install apt-file
Notare che lo script trasforma i caratteri ? e * in \? e \* questo per
evitare l'espansione.
Ciao
Davide
[¹]
https://lists.debian.org/debian-testing-changes/
[²]
https://lists.debian.org/debian-testing-changes/2022/05/msg00013.html