मैं इस उपयोगी सूत्र के पार भी आया (पूर्व योगदानकर्ताओं के लिए बहुत धन्यवाद: उत्कृष्ट सामग्री!)। हालाँकि मैं कुछ और अधिक परिष्कृत चाहता था: आश्रित पैकेजों की एक इच्छा-सूची दी, क्या मुझे विभिन्न रास्पियन वितरणों में उन्हें शिकार करने की उपयोगिता हो सकती है?
मैंने कुछ स्क्रिप्ट्स बनाई हैं जो दूसरों को उपयोगी लग सकती हैं (आप इन्हें अपने पीआई यूजर होम फोल्डर (या जहां भी हो) सेव कर सकते हैं )। याद रखें कि आपने उन्हें बनाने के बाद chmod + x script-name.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
आप इसे चलाते हैं और यह किसी दिए गए वितरण के लिए पैकेज सूची प्राप्त करता है ( जेसी के लिए चूक ):
./get-available.sh [<distribution-name>]
यह एक नई बनाई गई वितरण फ़ोल्डर के भीतर एक खाली विशलिस्ट टेक्स्ट फ़ाइल भी बनाता है (पहले देखें कि आपके पास पहले से ही आपके घर के फ़ोल्डर में इन नामों के फ़ोल्डर नहीं हैं या आप कुछ अधिलेखित कर सकते हैं): आप इसे एक पंक्तिबद्ध संकुल सूची के रूप में संपादित कर सकते हैं जो हैं वे जिन्हें आप खोजने की आशा करते हैं, वे उस वितरण में शामिल हैं जिसे आप खोज रहे हैं।
दूसरी स्क्रिप्ट 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
एक बार जब आप अपनी इच्छा सूची सेट कर लेते हैं तो आप इसे चलाते हैं और यह उन पैकेजों के लिए पैकेज सूची को स्कैन करता है ( जेसी को चूक ):
./check-available.sh [<distribution-name>]
कंसोल में आउटपुट करने के साथ-साथ वितरण आउटपुट खोज फ़ोल्डर में उपलब्धता फ़ाइल में खोज आउटपुट को सहेजता है ।
यहाँ (मेरी) उदाहरण इच्छा सूची है :
vim
wget
software-properties-common
python3.5
libsodium13
python3-pip
oracle-java8-installer
oracle-java8-set-default
libgmp3-dev
libssl-dev
flex
bison
यहाँ मैं 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)
यहाँ मैं 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)
और यहाँ मुझे खिंचाव पैकेज की उपलब्धता के लिए मिला है :
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)
यदि आपकी सूची अधिक लंबी है तो उपलब्धता फ़ाइलों को क्वेरी करने के लिए grep : YES या : NO लाइनों को फ़िल्टर करने के लिए एक चिंच है ।
मुझे आशा है कि कुछ अन्य लोग इसे उपयोगी पाएंगे!