Сценарий, чтобы проверить, установлена ли некоторая программа уже

То, как я могу создать сценарий удара, который проверяет, установлена ли программа уже, и если это не, устанавливает его?

Спасибо за помощь.

Вот код, который я имею до сих пор:

#/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
11
задан 22 December 2018 в 15:01

5 ответов

можно сделать это:

dpkg -s <packagename> &> /dev/null

затем проверьте выход status.only, если статус выхода вышеупомянутой команды был равен 0 затем пакет установлен.

так:

   #!/bin/bash

    echo "enter your package name"
    read name

    dpkg -s $name &> /dev/null  

    if [ $? -ne 0 ]

        then
            echo "not installed"  
            sudo apt-get update
            sudo apt-get install $name

        else
            echo    "installed"
    fi
11
ответ дан 23 November 2019 в 03:55

Вот функция, я записал для цели, что использую в своих сценариях. Это проверяет, чтобы видеть, установлен ли необходимый пакет и в противном случае предлагает пользователю устанавливать его. Это требует имени пакета в качестве параметра. Если Вы не знаете название пакета, необходимая программа принадлежит Вам, может искать его. Информация об этом доступном здесь.

function getreq {
dpkg-query --show  "$1"
if [ "$?" = "0" ];
then
    echo "$1" found
else
    echo "$1" not found. Please approve installation.
    sudo apt-get install "$1"
    if [ "$?" = "0" ];
    then echo "$1" installed successfully.
    fi
fi
}
4
ответ дан 23 November 2019 в 03:55

Эта строка команды проверит использование which программа и возвратится 0 если установлено и 1 если нет:

which apache | grep -o apache > /dev/null &&  echo 0 || echo 1

Конечно, Вы будете использовать его этим способом в Вашем сценарии:

which "$1" | grep -o "$1" > /dev/null &&  echo "Installed!" || echo "Not Installed!"

Простое использование было бы:

#!/usr/bin/env bash
set -e

function checker() { 
        which "$1" | grep -o "$1" > /dev/null &&  return 0 || return 1 
}

if checker "$1" == 0 ; then echo "Installed"; else echo "Not Installed!"; fi

Примечание несколько вещей:

  1. Необходимо будет заниматься dependenciy проблемами при установке
  2. Для предотвращения взаимодействия со сценарием во время установки, посмотрите здесь для примеров.
  3. Можно поймать возвращаемые значения от той функции использование это, чтобы решить, установить ли или нет.
3
ответ дан 23 November 2019 в 03:55

Почему Вы хотите проверить его во-первых? Если у Вас нет серьезного основания для него, не делайте этого, просто apt-get install package . Если это уже установило его, будет обновлен, если будет более новая доступная версия, если это будет установлено, и это актуально, то ничего не произойдет. В случае, если у Вас есть некоторая конфигурация, которая должна быть применена, существуют другие опции, как создание пакета конфигурации, который зависит от пакета или использующий программное обеспечение управления конфигурацией как ansible.

3
ответ дан 23 November 2019 в 03:55

Один простой способ проверить на установленное использование пакетов apt-mark:

apt-mark showinstall перечислит отмеченную установку всех пакетов (уже установленный, или поставил в очередь для установки). После этого это - простой вопрос захвата пакета (пакетов), о котором Вы заботитесь.

Пример: apt-mark showinstall | grep -q "^$PACKAGE_NAME$" && echo "installed" || echo "not"

2
ответ дан 23 November 2019 в 03:55

Другие вопросы по тегам:

Похожие вопросы: