Jak mogę utworzyć skrypt bash, który sprawdza, czy program jest już zainstalowany, a jeśli nie jest, instaluje go?
Dzięki za pomoc.
Oto kod, który mam do tej pory:
#/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
następnie zainstalować coś podobnegoapt-get install "$(< package.list)"
.Odpowiedzi:
możesz to zrobić:
dpkg -s <packagename> &> /dev/null
następnie sprawdź status wyjścia. tylko jeśli status wyjścia powyższego polecenia był równy,
0
wówczas pakiet został zainstalowany .więc:
źródło
sudo apt install $name
? Polecenie musi przejść do następnego wiersza ... W przeciwnym razie, dobra robota ...dpkg
dotyczy tylko zainstalowanych pakietów Debiana. W szczególnym przypadku OP możnayoutube-dl
na przykład zainstalować również za pomocą menedżera pakietów Pythonapip
if dpkg -s “$name” &> /dev/null ; then
? Ten sam efekt, czystsze / wyraźniejsze imo.if
robi ...Oto funkcja, którą napisałem w celu, którego używam w swoich skryptach. Sprawdza, czy wymagany pakiet jest zainstalowany, a jeśli nie, wyświetla monit o jego zainstalowanie. Wymaga nazwy pakietu jako parametru. Jeśli nie znasz nazwy pakietu, do którego należy wymagany program, możesz go wyszukać. Informacje na ten temat dostępne tutaj.
źródło
Ta linia poleceń sprawdzi za pomocą
which
programu i zwróci,0
jeśli jest zainstalowany, a1
jeśli nie:Oczywiście użyjesz go w ten sposób w swoim skrypcie:
Prostym zastosowaniem byłoby:
Zwróć uwagę na kilka rzeczy:
źródło
which
jest bardzo nieprzenośny. Często używamcommand -v
zamiast tego, ale zależy to w dużej mierze od rodzaju nazwy, której szukasz (alias, funkcja, plik wykonywalny itp.)Unix & Linux
strona! Gdybym odpowiadał na to naUnix & Linux
stronie, to byłaby inna sprawa!Dlaczego chcesz to sprawdzić? Chyba że masz ku temu dobry powód, nie rób tego, po prostu
apt-get install package
. Jeśli jest już zainstalowany, zostanie zaktualizowany, jeśli dostępna jest nowsza wersja, jeśli jest zainstalowany i jest aktualny, nic się nie stanie. W przypadku niektórych konfiguracji, które należy zastosować, istnieją inne opcje, takie jak zbudowanie pakietu konfiguracyjnego, który zależy od pakietu lub użycie oprogramowania do zarządzania konfiguracją, takiego jak ansible.źródło
Jednym łatwym sposobem sprawdzenia zainstalowanych pakietów za pomocą
apt-mark
:apt-mark showinstall
wyświetli listę wszystkich pakietów oznaczonych jako zainstalowane (już zainstalowane lub umieszczone w kolejce do instalacji). Następnie jest to prosta kwestia grepowania pakietów, na których Ci zależy.Przykład:
apt-mark showinstall | grep -q "^$PACKAGE_NAME$" && echo "installed" || echo "not"
źródło