The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
" Определить установлен ли пакет"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

" Определить установлен ли пакет"  
Сообщение от Udzhen email(ok) on 15-Окт-07, 14:27 
Здравствуйте!
Собственно вопрос:
Как из Shell скрипта определить установлен ли пакет в системе?
Система Kubuntu 7.04 (deb)
Заранее спасибо.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. " Определить установлен ли пакет"  
Сообщение от newser (ok) on 15-Окт-07, 14:48 
>Здравствуйте!
>Собственно вопрос:
>Как из Shell скрипта определить установлен ли пакет в системе?
>Система Kubuntu 7.04 (deb)
>Заранее спасибо.

man dpkg

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. " Определить установлен ли пакет"  
Сообщение от vic (??) on 15-Окт-07, 15:05 
>>Здравствуйте!
>>Собственно вопрос:
>>Как из Shell скрипта определить установлен ли пакет в системе?
>>Система Kubuntu 7.04 (deb)
>>Заранее спасибо.
>
>man dpkg

+1

если пакет по каким-то причинам был установлен не из репозитория, а из исходников и его нет в базе установленных пакетов, то можно использовать pkg-config:
$ pkg-config --modversion <package>
Если разработчики пакета не создали <package>.pc файл для pkg-config, то придется искать файл такого пакета в ручную (бинарники, либы, .h).

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. " Определить установлен ли пакет"  
Сообщение от anonymous (??) on 15-Окт-07, 18:16 
>Если разработчики пакета не создали <package>.pc файл для pkg-config, то придется искать файл такого пакета в ручную (бинарники, либы, .h).

Ага, а потом ещё и проверять на работоспособность -- как в autoconf.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. " Определить установлен ли пакет"  
Сообщение от Voblin on 16-Окт-07, 12:59 
В красной шапочке rpm -q имя пакета

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. " Определить установлен ли пакет"  
Сообщение от angra (ok) on 16-Окт-07, 19:01 
>В красной шапочке rpm -q имя пакета

Молодец, хороший мальчик. Но к сожалению должен тебя огорчить ubuntu это не красная шапочка и вообще не rpm-based дистр, к счастью. А найти в мане по dpkg опцию l или L дело пары минут и, скорее всего, задавший вопрос с этим давно справился.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. " Определить установлен ли пакет"  
Сообщение от Udzhen email(ok) on 20-Окт-07, 02:36 
>>В красной шапочке 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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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