Bu yararlı konuya da rastladım (önceki katılımcılara çok teşekkürler: mükemmel şeyler!). Bununla birlikte daha sofistike bir şey istedim: bağımlı paketlerin dilek listesi verildiğinde, onları çeşitli raspiyan dağıtımlarında avlamak için yardımcı olabilir miyim?
Başkalarının yararlı bulabileceği bir kaç tane komut dosyası hazırladım (bunları pi kullanıcı ana klasörünüze (veya her yere kaydedebilirsiniz )). Onları yarattıktan sonra chmod + x script-name.sh dosyasını unutmayın, aksi takdirde çalıştırmakta sorun yaşayabilirsiniz.
İlki 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
Bunu çalıştırın ve verilen bir dağıtımın paket listesini alır (varsayılan olarak jessie ):
./get-available.sh [<distribution-name>]
Ayrıca, yeni oluşturulan dağıtım klasöründe boş bir dilek listesi metin dosyası oluşturur (önce bu klasörlerin klasörlerini ana klasörünüzde bulunup bulunmadığını veya bir şeyin üzerine yazıp yazamayacağınızı kontrol edin): Bulmayı umduğunuz olanlar, aradığınız dağıtıma dahil edilir.
İkinci script check-available.sh şeklindedir :
#!/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
İstek listenizi oluşturduktan sonra bunu çalıştırın ve bu paketlerin paket listesini tarar (varsayılan olarak jessie ):
./check-available.sh [<distribution-name>]
Konsola çıkmanın yanı sıra arama çıktısını dağıtım arama alt klasöründeki uygunluk dosyasına kaydeder .
İşte (benim) örnek dilek listesi :
vim
wget
software-properties-common
python3.5
libsodium13
python3-pip
oracle-java8-installer
oracle-java8-set-default
libgmp3-dev
libssl-dev
flex
bison
İşte wheezy paket kullanılabilirliği için ne buldum :
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)
İşte Jessie Paket kullanılabilirliği için ne buldum :
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)
İşte esnek paket kullanılabilirliği için bulduklarım :
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)
Listeniz daha uzunsa , kullanılabilirlik dosyalarını sorgulamak için : YES veya : NO satırlarını filtrelemek için grep kullanmak bir cinch olur .
Umarım bazıları da bunu yararlı bulur!