ฉันได้พบกับเธรดที่มีประโยชน์นี้ด้วย (ขอบคุณผู้มีส่วนร่วมก่อนหน้านี้: สิ่งที่ยอดเยี่ยม!) อย่างไรก็ตามฉันต้องการบางสิ่งที่ซับซ้อนกว่านี้: รับรายการสิ่งที่ต้องการของแพ็กเกจที่ขึ้นต่อกันฉันสามารถใช้ยูทิลิตี้ในการไล่ล่าพวกมันในการแจกแจงแบบราสเบียนต่างๆได้ไหม?
ฉันได้สร้างสคริปต์สองสามอย่างที่ผู้อื่นอาจพบว่ามีประโยชน์ (คุณสามารถบันทึกสิ่งเหล่านี้ไปยังโฟลเดอร์บ้านผู้ใช้piของคุณ(หรือที่ใดก็ได้)) อย่าลืมchmod + x script-name.shหลังจากที่คุณสร้างพวกเขามิฉะนั้นคุณจะมีปัญหาในการใช้พวกเขา
คนแรกคือ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
คุณเรียกใช้สิ่งนี้และดึงรายการแพ็กเกจสำหรับการแจกแจงที่กำหนด (ค่าเริ่มต้นไปที่jessie ):
./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เพื่อสอบถามไฟล์ความพร้อมใช้งาน
ฉันหวังว่าบางคนจะพบว่ามีประโยชน์นี้!