Помогите нарисовать условие для выполнения скрипта. Нужно:
1. Выполнить aptitude update. Если все ок, то aptitude safe-upgrade, если нет - dpkg --configure -a.
2. Поставить packagename, если этот packagename еще не установлен.
[РЕШЕНО] bash скрипт для apt. Установлен ли пакет (apt shell bash)
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 54
- ОС: Ubuntu 10.10/Debian 5.0.6
-
- Сообщения: 115
- ОС: ubuntu
Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет
Предположительно, при неудачном завершении команды "aptitude update" возвращаемое значение будет не нулем.
эта конструкция выводит на экран возвращенное значение предыдущей команды. Если там нуль - команда выполнилась успешно, если нет - с ошибкой. Так что условие можно составить примерно так
По поводу второго у меня приходит только одна мысль - грепать вывод aptitude install <package> на предмет слов "не найдено ничего там-то там-то" в переменную, если в переменной что-то есть - значит пакет не установился.
Повторюсь, что насчет первого случая не уверен абсолютно. Может, кто другой подскажет как лучше сделать
Код: Выделить всё
echo $?
эта конструкция выводит на экран возвращенное значение предыдущей команды. Если там нуль - команда выполнилась успешно, если нет - с ошибкой. Так что условие можно составить примерно так
Код: Выделить всё
aptitude update
if [ ! "$?" = "0" ]; then
dpkg --configure -a
fi
По поводу второго у меня приходит только одна мысль - грепать вывод aptitude install <package> на предмет слов "не найдено ничего там-то там-то" в переменную, если в переменной что-то есть - значит пакет не установился.
Повторюсь, что насчет первого случая не уверен абсолютно. Может, кто другой подскажет как лучше сделать
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет
Всё правильно:
bl00dl1nes писал(а): ↑15.07.2009 10:04при неудачном завершении команды "aptitude update" возвращаемое значение будет не нулем.
Код: Выделить всё
dpkg -s $package >/dev/null 2>&1 || aptitude install $package
Мои розовые очки
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет
какой в этом смысл?
даже если aptitude update не получит никакой новой информации (например инета нет), то прогон aptitude safe-upgrade ни к чему страшному не приведет. и каждый раз запускать из-за того, что aptitude не смог получить информацию реконфигурацию всего.. какой смысл?
автоматически реконфигурация все равно не пройдет, будут задаваться вопросы хотя бы по повду локали.
у меня алиас прописан для обновления в .bashrc :
Код: Выделить всё
alias update='aptitude update; aptitude dist-upgrade; aptitude autoclean
у меня после успешного update echo $? выдал 255.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 115
- ОС: ubuntu
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет
Значит, не очень успешного. На этой фиче стоит cron-apt и отлично работает.
Мои розовые очки
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет
у меня всегда так:
Код:
[11:55]root:~ #aptitude update; echo $?
Из кеша: http://deb.opera.com sid Release.gpg
Игн http://deb.opera.com sid/non-free Translation-ru
Из кеша: http://deb.opera.com sid Release
Из кеша: http://ftp.de.debian.org sid Release.gpg
Из кеша: http://ftp.de.debian.org sid/main Translation-ru
Игн http://ftp.de.debian.org sid/contrib Translation-ru
Из кеша: http://www.debian-multimedia.org sid Release.gpg
Из кеша: http://www.debian-multimedia.org sid/main Translation-ru
Игн http://www.debian-multimedia.org sid/contrib Translation-ru
Игн http://www.debian-multimedia.org sid/non-free Translation-ru
Игн http://deb.opera.com sid/non-free Packages/DiffIndex
Игн http://ftp.de.debian.org sid/non-free Translation-ru
Из кеша: http://ftp.de.debian.org experimental Release.gpg
Игн http://ftp.de.debian.org experimental/main Translation-ru
Игн http://ftp.de.debian.org experimental/contrib Translation-ru
Игн http://ftp.de.debian.org experimental/non-free Translation-ru
Из кеша: http://ftp.de.debian.org sid Release
Игн http://deb.opera.com sid/non-free Packages
Из кеша: http://www.debian-multimedia.org sid Release
Из кеша: http://deb.opera.com sid/non-free Packages
Из кеша: http://ftp.de.debian.org experimental Release
Из кеша: http://www.debian-multimedia.org sid/main Packages/DiffIndex
Из кеша: http://ftp.de.debian.org sid/main Packages/DiffIndex
Из кеша: http://ftp.de.debian.org sid/contrib Packages/DiffIndex
Из кеша: http://ftp.de.debian.org sid/non-free Packages/DiffIndex
Из кеша: http://ftp.de.debian.org experimental/main Packages/DiffIndex
Из кеша: http://ftp.de.debian.org experimental/contrib Packages/DiffIndex
Из кеша: http://ftp.de.debian.org experimental/non-free Packages/DiffIndex
Чтение списков пакетов... Готово
255
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 331
- ОС: :OC
Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет
bl00dl1nes писал(а): ↑15.07.2009 10:04aptitude update
if [ ! "$?" = "0" ]; then
dpkg --configure -a
fi
ужас! о_О
aptitude update || dpkg --configure -a
-
- Сообщения: 54
- ОС: Ubuntu 10.10/Debian 5.0.6
Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет
Спасибо всем!
У меня развернута Ubuntu в конторе. Несколько десятков машин. В init.d сидит скрипт, который при загрузке машины вытягивает другой скрипт с ftp и выполняет все, что в нем написано. (Кстати, полностью автоматизировал процесс установки системы. PXEInstall + preseed + postinstall script + LDAP клиент и т.д.) Это для облегчения администрирования кучи машин. А в том скрипте, в том числе есть aptitude update && aptitude safe-upgrade. Так вот иногда, по причине того, что пользователь не дождавшись пока выполнится загрузочный скрипт - порядка 5 минут после старта, выключает машину или выключается питание или что -то еще, таким обазом некорректно завершается процесс aptitude. После этого нужен dpkg --configure -a, иначе скрипт при следующих загрузках не будет выполнятся.
какой в этом смысл?
даже если aptitude update не получит никакой новой информации (например инета нет), то прогон aptitude safe-upgrade ни к чему страшному не приведет. и каждый раз запускать из-за того, что aptitude не смог получить информацию реконфигурацию всего.. какой смысл?
У меня развернута Ubuntu в конторе. Несколько десятков машин. В init.d сидит скрипт, который при загрузке машины вытягивает другой скрипт с ftp и выполняет все, что в нем написано. (Кстати, полностью автоматизировал процесс установки системы. PXEInstall + preseed + postinstall script + LDAP клиент и т.д.) Это для облегчения администрирования кучи машин. А в том скрипте, в том числе есть aptitude update && aptitude safe-upgrade. Так вот иногда, по причине того, что пользователь не дождавшись пока выполнится загрузочный скрипт - порядка 5 минут после старта, выключает машину или выключается питание или что -то еще, таким обазом некорректно завершается процесс aptitude. После этого нужен dpkg --configure -a, иначе скрипт при следующих загрузках не будет выполнятся.