полностью автоматический скрипт обновления

dimas dimas000 на ya.ru
Пт Фев 18 07:07:34 UTC 2011


> вопрос3: можно ли как-то растусовать пакеты по признаку
> интерактивности/неинтерактивности конфигурирования? типа обнови все, а LDAP
> не трогай  ;)

что-то типа
sudo aptitude update
sudo aptitude autoclean
cd /var/cache/apt/archives
sudo aptitude download ~U # скачиваем все пакеты, помеченные к обновлению
mkdir /tmp/control
for pkg in *.deb ; do
 dpkg-deb -e "$pkg" /tmp/control
 if <че-то там> ; then
  sudo aptitude hold $pkg
  echo "$pkg" >> /path/list;
 fi
 rm -r /tmp/control/*
done
sudo aptitude full-upgrade -y

под <че-то там> подразумевается анализ prerm и postrm на предмет вызова
различных диалогов. например, того, что появляется, когда идущий в пакете конфиг
отличается от имеющегося. щас не на чем проверить, но думаю, что это какая-то
стандартная функция, остается только grep'ом ее найти в скрипте. и ежели такие
вещи там есть - ставим пакет на холд и пишем имя оного в файл-список. после чего
успешно (или не очень, из-за неудовлетворенных зависимостей) обновляемся.
при таком варианте возможен вот какой случай: пакет prog обновляется до версии
1.0.7. в комплекте с ним идет пакет prog-data, который тоже обновляется. в
prog-data содержится важный конфиг, посему выполняется триггер с вызовом
диалога, а мы, следовательно, ставим prog-data на холд. пакет prog ничего такого
не содержит, но в его зависимостях жестко прописан prog-data 1.0.7, который
обновлен быть не может, т.к. стоит на холде. отсюда паника. как с таким быть -
это уж я хз, тут надо что-то вообще монструозное сооружать.
ЗЫ. советую юзать aptitude и не юзать dist-upgrade



Подробная информация о списке рассылки ubuntu-ru