Bagaimana saya bisa membuat skrip bash yang memeriksa apakah suatu program sudah diinstal, dan jika tidak, instal?
Terima kasih atas bantuan Anda.
Inilah kode yang saya miliki sejauh ini:
#/bin/bash
PS3="choose an option"
select opcion in "Installing_Youtube" "exit"
do
case $opcion in
"Installing_Youtube")
youtube-dl > /usr/bin
if [ $? -eq 127 ] ; then
echo "installing youtube"
apt-get update
apt-get install youtube-dl
mkdir Videos
else
echo "Youtube already installed"
fi
;;
"exit")
exit
/usr/bin
?apt-mark showmanual
kemudian menginstal dengan sesuatu sepertiapt-get install "$(< package.list)"
.Jawaban:
kamu bisa melakukan ini:
dpkg -s <packagename> &> /dev/null
kemudian periksa status keluar. hanya jika status keluar dari perintah di atas sama dengan
0
paket yang diinstal .begitu:
sumber
sudo apt install $name
? Perintah harus dilanjutkan ke baris berikutnya ... Kalau tidak, kerja bagus ...dpkg
hanya relevan untuk paket debian yang diinstal. Dalam kasus khusus OP,youtube-dl
misalnya dapat juga diinstal melalui manajer paket pythonpip
if dpkg -s “$name” &> /dev/null ; then
? Efek yang sama, pembersih / imo yang lebih jelas.if
dilakukannya ...Inilah fungsi yang saya tulis untuk tujuan yang saya gunakan dalam skrip saya. Itu memeriksa untuk melihat apakah paket yang diperlukan diinstal dan jika tidak, meminta pengguna untuk menginstalnya. Ini membutuhkan nama paket sebagai parameter. Jika Anda tidak tahu nama paket yang dimiliki oleh suatu program, Anda dapat mencarinya. Informasi tentang itu tersedia di sini.
sumber
Baris perintah ini akan memeriksa menggunakan
which
program dan akan kembali0
jika diinstal dan1
jika tidak:Tentu saja Anda akan menggunakannya dengan cara ini dalam skrip Anda:
Penggunaan sederhana adalah:
Perhatikan beberapa hal:
sumber
which
super non-portabel. Saya sering menggunakancommand -v
sebagai gantinya, tetapi sangat bergantung pada jenis nama yang Anda cari (alias, fungsi, dapat dieksekusi, & c.)Unix & Linux
situs! Jika saya menjawabnya diUnix & Linux
situs itu akan menjadi masalah yang berbeda!Mengapa Anda ingin memeriksanya? Kecuali Anda memiliki alasan yang kuat untuk itu, jangan lakukan itu,
apt-get install package
selesai saja . Jika sudah terinstal maka akan diperbarui jika ada versi yang lebih baru, jika sudah diinstal dan up to date, tidak akan terjadi apa-apa. Jika Anda memiliki beberapa konfigurasi yang perlu diterapkan, ada opsi lain, seperti membangun paket konfigurasi yang tergantung pada paket atau menggunakan perangkat lunak manajemen konfigurasi seperti mungkin.sumber
Satu cara mudah untuk memeriksa paket yang diinstal menggunakan
apt-mark
:apt-mark showinstall
akan mencantumkan semua paket yang ditandai instal (sudah diinstal, atau antri untuk instalasi). Setelah itu, hanya masalah memahami paket yang Anda pedulikan.Contoh:
apt-mark showinstall | grep -q "^$PACKAGE_NAME$" && echo "installed" || echo "not"
sumber