Mi sono imbattuto anche in questo thread utile (molte grazie a collaboratori precedenti: cose eccellenti!). Tuttavia volevo qualcosa di più sofisticato: data una lista dei desideri di pacchetti dipendenti, potrei avere utilità per cacciarli nelle varie distribuzioni raspbian?
Ho creato un paio di script che altri potrebbero trovare utili (puoi salvarli nella cartella home dell'utente pi (o ovunque)). Ricorda di chmod + x script-name.sh dopo averli creati o avrai problemi a eseguirli.
Il primo è get-available.sh :
#!/bin/bash
dist=jessie
[ ${#1} -gt 0 ] && dist=$1
[ ! -e /home/pi/${dist} ] && mkdir /home/pi/${dist}
pushd /home/pi/${dist} &> /dev/null
[ ! -e ./Packages ] && echo Fetching Packages list for ${dist}...
[ ! -e ./Packages ] && wget http://archive.raspbian.org/raspbian/dists/${dist}/main/binary-armhf/Packages
grep -P '^Package:' Packages | cut -d' ' -f2 > available
[ ! -e ./wishlist ] && touch ./wishlist
popd &> /dev/null
Lo esegui e recupera l'elenco dei pacchetti per una determinata distribuzione (il valore predefinito è jessie ):
./get-available.sh [<distribution-name>]
Crea anche un file di testo vuoto nella lista dei desideri all'interno di una cartella di distribuzione appena creata (controlla prima che non ci siano già cartelle di questi nomi nella cartella principale o che tu possa sovrascrivere qualcosa): puoi modificarlo come un elenco di pacchetti separati da linee che sono quelli che speri di trovare sono inclusi nella distribuzione che stai cercando.
Il secondo script è check-available.sh :
#!/bin/bash
dist=jessie
[ ${#1} -gt 0 ] && dist=$1
[ ! -e /home/pi/${dist}/available ] && echo You need to run ./get-available.sh ${dist} first!
[ ! -e /home/pi/${dist}/available ] && exit
pushd /home/pi/${dist} &> /dev/null
[ -e ./availability ] && rm ./availability
mlen=7
function check-len () {
[ ${#1} -gt ${mlen} ] && mlen=${#1}
}
function check-available () {
matches=$(grep -o "^$1$" ./available | wc -l)
if [ ${matches} -eq 0 ]
then
printf "%-${mlen}s :NO (%s)\n" $1 ${dist} >> ./availability
else
printf "%-${mlen}s :YES (%s)\n" $1 ${dist} >> ./availability
fi
}
readarray packages < ./wishlist
for p in "${packages[@]}"
do
pw=$(echo ${p}|tr -d '\n')
check-len "${pw}"
done
for p in "${packages[@]}"
do
pw=$(echo ${p}|tr -d '\n')
check-available "${pw}"
done
[ -e ./availability ] && cat ./availability
popd &> /dev/null
Dopo aver impostato la tua lista dei desideri, esegui questo ed esegue la scansione dell'elenco dei pacchetti per quei pacchetti (il valore predefinito è jessie ):
./check-available.sh [<distribution-name>]
Oltre a inviare alla console viene salvato l'output di ricerca in un file di disponibilità nella sottocartella di ricerca della distribuzione.
Ecco la (mia) lista dei desideri di esempio :
vim
wget
software-properties-common
python3.5
libsodium13
python3-pip
oracle-java8-installer
oracle-java8-set-default
libgmp3-dev
libssl-dev
flex
bison
Ecco cosa ho trovato per la disponibilità del pacchetto wheezy :
vim :YES (wheezy)
wget :YES (wheezy)
software-properties-common :YES (wheezy)
python3.5 :NO (wheezy)
libsodium13 :NO (wheezy)
python3-pip :YES (wheezy)
oracle-java8-installer :NO (wheezy)
oracle-java8-set-default :NO (wheezy)
libgmp3-dev :YES (wheezy)
libssl-dev :YES (wheezy)
flex :YES (wheezy)
bison :YES (wheezy)
Ecco cosa ho trovato per la disponibilità del pacchetto jessie :
vim :YES (jessie)
wget :YES (jessie)
software-properties-common :YES (jessie)
python3.5 :NO (jessie)
libsodium13 :YES (jessie)
python3-pip :YES (jessie)
oracle-java8-installer :NO (jessie)
oracle-java8-set-default :NO (jessie)
libgmp3-dev :YES (jessie)
libssl-dev :YES (jessie)
flex :YES (jessie)
bison :YES (jessie)
Ed ecco cosa ho trovato per la disponibilità dei pacchetti stretch :
vim :YES (stretch)
wget :YES (stretch)
software-properties-common :YES (stretch)
python3.5 :YES (stretch)
libsodium13 :NO (stretch)
python3-pip :YES (stretch)
oracle-java8-installer :NO (stretch)
oracle-java8-set-default :NO (stretch)
libgmp3-dev :YES (stretch)
libssl-dev :YES (stretch)
flex :YES (stretch)
bison :YES (stretch)
Se la tua lista è più lunga è un gioco da ragazzi usare grep per filtrare le righe : YES o : NO per interrogare i file di disponibilità .
Spero che altri lo trovino utile!