[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Script per visualizzare descrizioni pacchetti binari giunti in testing



Ciao,

solo una domanda: la sezione "New packages" di aptitude ha qualcosa che non va o più semplicemente non usi aptitude? Io per vedere cosa ci sia di nuovo, mi son sempre trovato benissimo.

federico


On 29/05/22 11:54, Davide Prina wrote:
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



Reply to: