The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Определить установлен ли пакет, !*! Udzhen, 15-Окт-07, 14:27  [смотреть все]
Здравствуйте!
Собственно вопрос:
Как из Shell скрипта определить установлен ли пакет в системе?
Система Kubuntu 7.04 (deb)
Заранее спасибо.
  • Определить установлен ли пакет, !*! newser, 14:48 , 15-Окт-07 (1)
    • Определить установлен ли пакет, !*! vic, 15:05 , 15-Окт-07 (2)
      • Определить установлен ли пакет, !*! anonymous, 18:16 , 15-Окт-07 (3)
        • Определить установлен ли пакет, !*! Voblin, 12:59 , 16-Окт-07 (4)
          • Определить установлен ли пакет, !*! angra, 19:01 , 16-Окт-07 (5)
            • Определить установлен ли пакет, !*! Udzhen, 02:36 , 20-Окт-07 (6)
              >>В красной шапочке rpm -q имя пакета
              >
              >Молодец, хороший мальчик. Но к сожалению должен тебя огорчить ubuntu это не
              >красная шапочка и вообще не rpm-based дистр, к счастью. А найти
              >в мане по dpkg опцию l или L дело пары минут
              >и, скорее всего, задавший вопрос с этим давно справился.

              Да, вы правы. Проблемму я уже давно решил.
              Требовалось написать процедуру которая проверяет установлен ли пакет пакет (под Debian-based системы).
              Собственно вот что получилось:


              TRUE=0
              FALSE=1

              # Процедуре передается список пакетов в качестве первого аргумента,
              # и если хотя бы один пакет не установлен, то процедура вернет FALSE.
              function PkgIsInstalled
              {
                  pkg_list=$(dpkg-query --showformat '${Package} ${Status}\n' -W $1 | \
                      grep 'ok installed$' | sed -n -e 's/ .* ok installed$//p')
                  for pkg_name in $1
                  do
                      echo "$pkg_list" | grep -q "^$pkg_name\$"
                      if [ $? -ne $TRUE ]; then
                          return $FALSE;
                      fi
                  done

                  return $TRUE
              }

              # Использование...

              pkg_name="здесь_имя_пакета"

              PkgIsInstalled $pkg_name
              if [ $? -ne $TRUE ]; then
                  echo "Package \"$pkg_name\" is not installed!"
                  read -p "Install now? [yes]/[no] " cmd
                  if [ "$cmd" = "yes" ] || [ "$cmd" = "y" ]; then
                      sudo aptitude update
                      sudo aptitude install $pkg_name
                      return $?
                  fi
              fi

              Всем спасибо за помощь!




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру