• Script per visualizzare descrizioni pacchetti binari giunti in testing

    From Davide Prina@21:1/5 to All on Sun May 29 12:00:01 2022
    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Federico Di Gregorio@21:1/5 to Davide Prina on Sun May 29 19:20:01 2022
    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


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Davide Prina@21:1/5 to All on Tue May 31 21:00:01 2022
    Federico Di Gregorio ha scritto:

    solo una domanda: la sezione "New packages" di aptitude ha qualcosa che
    non va o più semplicemente non usi aptitude?

    non ho mai usato aptitude

    Io per vedere cosa ci sia
    di nuovo, mi son sempre trovato benissimo.

    ho provato ad avviarlo ora e mi dice che ce ne sono 68.636!
    Probabilmente non usandolo...

    se si usa aptitude, allora di sicuro questa funzionalità che ti
    offre è meglio del mio script

    Ciao
    Davide

    --
    La mia privacy non è affar tuo
    https://noyb.eu/it

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)