Как я могу создать bash-скрипт, который проверяет, установлена ли программа, а если нет, устанавливает ее?
Спасибо за вашу помощь.
Вот код, который у меня есть:
#/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
последующей установкой с чем-то вродеapt-get install "$(< package.list)"
.Ответы:
ты можешь это сделать:
dpkg -s <packagename> &> /dev/null
затем проверьте статус выхода. только если статус выхода вышеупомянутой команды был равен
0
тогда установленному пакету .так:
источник
sudo apt install $name
? Команде нужно перейти на следующую строку ... В противном случае, хорошая работа ...dpkg
относится только к установленным пакетам Debian. В частном случае OP,youtube-dl
например, также может быть установлен через менеджер пакетов pythonpip
if dpkg -s “$name” &> /dev/null ; then
? Тот же эффект, чище / яснее имо.if
делает ...Вот функция, которую я написал для цели, которую я использую в своих сценариях. Он проверяет, установлен ли требуемый пакет, и, если нет, предлагает пользователю установить его. Требуется имя пакета в качестве параметра. Если вы не знаете название пакета, к которому относится необходимая программа, вы можете найти его. Информация об этом доступна здесь.
источник
Эта командная строка проверит использование
which
программы и вернет,0
если установлено, а1
если нет:Конечно, вы будете использовать это таким образом в вашем скрипте:
Простое использование будет:
Обратите внимание на несколько вещей:
источник
which
супер непереносимый Я часто используюcommand -v
вместо этого, но это сильно зависит от типа имени, которое вы ищете (псевдоним, функция, исполняемый файл и т.Unix & Linux
сайт! Если бы я отвечал на это наUnix & Linux
сайте, это было бы другое дело!Почему вы хотите проверить это в первую очередь? Если у вас нет веских причин для этого, не делайте этого, просто
apt-get install package
закончите. Если он уже установлен, он будет обновлен, если будет доступна более новая версия, если она установлена и обновлена, ничего не произойдет. В случае, если у вас есть какая-то конфигурация, которую необходимо применить, есть другие варианты, например, создание пакета конфигурации, который зависит от пакета, или использование программного обеспечения для управления конфигурацией, например ansible.источник
Один простой способ проверить наличие установленных пакетов, используя
apt-mark
:apt-mark showinstall
отобразит список всех пакетов, помеченных как установленные (уже установленные или поставленные в очередь для установки). После этого достаточно просто найти нужные вам пакеты.Пример:
apt-mark showinstall | grep -q "^$PACKAGE_NAME$" && echo "installed" || echo "not"
источник