Tôi cũng đã xem qua chủ đề hữu ích này (cảm ơn nhiều người đóng góp trước: công cụ tuyệt vời!). Tuy nhiên tôi muốn một cái gì đó tinh vi hơn: đưa ra một danh sách mong muốn của các gói phụ thuộc, tôi có thể có tiện ích để săn lùng chúng trong các bản phân phối raspbian khác nhau không?
Tôi đã tạo ra một vài tập lệnh mà người khác có thể thấy hữu ích (bạn có thể lưu chúng vào thư mục nhà của người dùng pi (hoặc bất cứ nơi nào)). Hãy nhớ chmod + x script-name.sh sau khi bạn đã tạo chúng hoặc bạn sẽ gặp khó khăn khi chạy chúng.
Cái đầu tiên là get-av 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
Bạn chạy cái này và nó tìm nạp danh sách gói cho một bản phân phối nhất định (mặc định là jessie ):
./get-available.sh [<distribution-name>]
Nó cũng tạo một tệp văn bản danh sách mong muốn trống trong thư mục phân phối mới được tạo (trước tiên hãy kiểm tra xem bạn chưa có thư mục của các tên này trong thư mục nhà của mình hay bạn có thể ghi đè lên một cái gì đó) những thứ mà bạn hy vọng tìm thấy được bao gồm trong bản phân phối mà bạn đang tìm kiếm.
Kịch bản thứ hai là check-av 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
Khi bạn đã thiết lập danh sách mong muốn của mình, bạn sẽ chạy danh sách này và nó sẽ quét danh sách gói cho các gói đó (mặc định là jessie ):
./check-available.sh [<distribution-name>]
Cũng như xuất ra bàn điều khiển là lưu kết quả tìm kiếm vào một tệp khả dụng trong thư mục con tìm kiếm phân phối.
Dưới đây là danh sách mong muốn (của tôi) :
vim
wget
software-properties-common
python3.5
libsodium13
python3-pip
oracle-java8-installer
oracle-java8-set-default
libgmp3-dev
libssl-dev
flex
bison
Đây là những gì tôi tìm thấy cho sự sẵn có của gói khò khè :
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)
Đây là những gì tôi tìm thấy cho sự sẵn có của gói 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)
Và đây là những gì tôi tìm thấy cho căng sẵn gói:
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)
Nếu danh sách của bạn dài hơn, bạn nên sử dụng grep để lọc các dòng : CÓ hoặc : KHÔNG để truy vấn các tệp khả dụng .
Tôi hy vọng một số người khác thấy điều này hữu ích!