Ich bin auch auf diesen nützlichen Thread gestoßen (vielen Dank an frühere Mitwirkende: ausgezeichnetes Zeug!). Ich wollte jedoch etwas Anspruchsvolleres: Könnte ich auf der Grundlage einer Wunschliste mit abhängigen Paketen eine nützliche Funktion haben, um sie in den verschiedenen Raspbian-Distributionen zu finden?
Ich habe ein paar Skripte erstellt, die andere vielleicht nützlich finden (Sie können diese in Ihrem pi- Benutzerordner (oder wo auch immer) speichern ). Denken Sie daran, chmod + x script-name.sh zu verwenden, nachdem Sie sie erstellt haben, da Sie sonst Probleme haben, sie auszuführen .
Der erste ist 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
Sie führen dies aus und es ruft die Paketliste für eine bestimmte Distribution ab (standardmäßig Jessie ):
./get-available.sh [<distribution-name>]
Es wird auch eine leere Textdatei für die Wunschliste in einem neu erstellten Distributionsordner erstellt (prüfen Sie zuerst, ob sich noch Ordner mit diesen Namen in Ihrem Ausgangsordner befinden oder ob Sie etwas überschreiben können): Sie können diese Liste als zeilengetrennte Paketliste bearbeiten Diejenigen, die Sie zu finden hoffen, sind in der Distribution enthalten, die Sie suchen.
Das zweite Skript ist 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
Sobald Sie Ihre Wunschliste eingerichtet haben, führen Sie diese aus und sie durchsucht die Paketliste nach diesen Paketen (standardmäßig Jessie ):
./check-available.sh [<distribution-name>]
Bei der Ausgabe auf die Konsole wird die Suchausgabe auch in einer Verfügbarkeitsdatei im Unterordner für die Verteilungssuche gespeichert.
Hier ist (mein) Beispiel Wunschliste :
vim
wget
software-properties-common
python3.5
libsodium13
python3-pip
oracle-java8-installer
oracle-java8-set-default
libgmp3-dev
libssl-dev
flex
bison
Folgendes habe ich für die Verfügbarkeit von Wheezy- Paketen gefunden:
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)
Folgendes habe ich für die Verfügbarkeit von Jessie- Paketen gefunden:
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)
Und hier ist, was ich für die Verfügbarkeit von Stretch- Paketen gefunden habe:
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)
Wenn Ihre Liste länger ist, ist es ein Kinderspiel, grep zu verwenden, um die Zeilen : YES oder : NO zu filtern und die Verfügbarkeitsdateien abzufragen .
Ich hoffe, einige andere finden das nützlich!