[РЕШЕНО] bash скрипт для apt. Установлен ли пакет (apt shell bash)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

--what?
Сообщения: 54
ОС: Ubuntu 10.10/Debian 5.0.6

[РЕШЕНО] bash скрипт для apt. Установлен ли пакет

Сообщение --what? »

Помогите нарисовать условие для выполнения скрипта. Нужно:
1. Выполнить aptitude update. Если все ок, то aptitude safe-upgrade, если нет - dpkg --configure -a.
2. Поставить packagename, если этот packagename еще не установлен.
Спасибо сказали:
bl00dl1nes
Сообщения: 115
ОС: ubuntu

Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет

Сообщение bl00dl1nes »

Предположительно, при неудачном завершении команды "aptitude update" возвращаемое значение будет не нулем.

эта конструкция выводит на экран возвращенное значение предыдущей команды. Если там нуль - команда выполнилась успешно, если нет - с ошибкой. Так что условие можно составить примерно так

Код: Выделить всё

aptitude update
if [ ! "$?" = "0" ]; then
dpkg --configure -a
fi


По поводу второго у меня приходит только одна мысль - грепать вывод aptitude install <package> на предмет слов "не найдено ничего там-то там-то" в переменную, если в переменной что-то есть - значит пакет не установился.

Повторюсь, что насчет первого случая не уверен абсолютно. Может, кто другой подскажет как лучше сделать
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет

Сообщение watashiwa_daredeska »

bl00dl1nes писал(а):
15.07.2009 10:04
Повторюсь, что насчет первого случая не уверен абсолютно.
Всё правильно:
bl00dl1nes писал(а):
15.07.2009 10:04
при неудачном завершении команды "aptitude update" возвращаемое значение будет не нулем.

--what? писал(а):
15.07.2009 09:23
2. Поставить packagename, если этот packagename еще не установлен.

Код: Выделить всё

dpkg -s $package >/dev/null 2>&1 || aptitude install $package
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет

Сообщение SLEDopit »

--what? писал(а):
15.07.2009 09:23
1. Выполнить aptitude update. Если все ок, то aptitude safe-upgrade, если нет - dpkg --configure -a.
какой в этом смысл?
даже если aptitude update не получит никакой новой информации (например инета нет), то прогон aptitude safe-upgrade ни к чему страшному не приведет. и каждый раз запускать из-за того, что aptitude не смог получить информацию реконфигурацию всего.. какой смысл?
автоматически реконфигурация все равно не пройдет, будут задаваться вопросы хотя бы по повду локали.
у меня алиас прописан для обновления в .bashrc :

Код: Выделить всё

alias update='aptitude update; aptitude dist-upgrade; aptitude autoclean
какое то время даже пользовался aptitude -y dist-upgrade чтоб вопросов лишних не задавал. но потом слетело что-то из-за этого разок. я и вернул задавание вопросов)
bl00dl1nes писал(а):
15.07.2009 10:04
Повторюсь, что насчет первого случая не уверен абсолютно.
у меня после успешного 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.
Спасибо сказали:
bl00dl1nes
Сообщения: 115
ОС: ubuntu

Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет

Сообщение bl00dl1nes »

SLEDopit писал(а):
15.07.2009 11:01
у меня после успешного update echo $? выдал 255.

насколько мне известно, нуль - единственное возвращаемое значение успешного завершения. Аномалия. Или баг.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет

Сообщение watashiwa_daredeska »

SLEDopit писал(а):
15.07.2009 11:01
у меня после успешного update echo $? выдал 255.
Значит, не очень успешного. На этой фиче стоит cron-apt и отлично работает.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет

Сообщение SLEDopit »

у меня всегда так:

Код:

[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.
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет

Сообщение butch »

bl00dl1nes писал(а):
15.07.2009 10:04
aptitude update
if [ ! "$?" = "0" ]; then
dpkg --configure -a
fi

ужас! о_О
aptitude update || dpkg --configure -a
Спасибо сказали:
--what?
Сообщения: 54
ОС: Ubuntu 10.10/Debian 5.0.6

Re: [РЕШЕНО] bash скрипт для apt. Установлен ли пакет

Сообщение --what? »

Спасибо всем!
какой в этом смысл?
даже если 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, иначе скрипт при следующих загрузках не будет выполнятся.
Спасибо сказали: