nixp.ru v3.0

26 мая 2017,
пятница,
04:51:57 MSK

DevOps с компанией «Флант»
Аватар пользователя Дмитрий Шурупов
Дмитрий Шурупов написал 6 марта 2009 года в 11:57 (2252 просмотра) Ведет себя как фрик; открыл 669 тем в форуме, оставил 5643 комментария на сайте.

Вопрос к знатокам apt-get, dpkg и прочего (Debian / Ubuntu).

Я тут на днях добавил в убунте нестабильный реп Jaunty. Провел полное обновление системы (ядро, системные либы, gnome — все на свете). В результате у меня отвалился gdm и/или gnome (иксы работали нормально). Возникло подозрение, что обновились не все либы / пакеты, из-за чего наблюдается конфликт запущенных компонентов… Ну, в общем, поигравшись с ним, я решил откатиться обратно. Но не тут-то было!

Удалив репозиторий Jaunty, я сделал apt-get update, после чего надеялся, что apt-get upgrade поведет себя адекватно и предложит downgrade’ить все установленные приложения до реально доступных версий из ныне существующих в sources.list репозитариев. А фиг — он ничего мне не предложил. Попробовал всякие dpkg, aptitude, команду reinstall — ничего из этого не делает указанного (задача была, напомню, все пакеты, обновленные до jaunty, откатить до стабильных версий из intrepid, т.е. тех репозиториев, которые сейчас доступны в sources.list).

В итоге, мне пришлось делать мегаизвращение в виде:

for i in `dpkg -l | grep ^ii | awk '{print $2}'|xargs`; do
  ver="";
  ver=`apt-cache showpkg $i|grep ' (/var/lib/dpkg/status)' |grep -v intrepid`;
  if [ "$ver" != "" ]; then
    echo "$i is bad: $ver";
  fi;
done | grep 'is bad' | awk '{print $1}' > ~/bad_packages.txt

Потом хотел удалять пакеты из списка bad_packages.txt и устанавливать заново — циклом с apt-get remove && install (чтобы ставились уже те версии, которые доступны в стабильных репах). Оказалось, это довольно унылая затея из-за того, что каждый раз тянутся все зависимости и при удалении, и при установке — в итоге, процесс затягивается на бесконечное время и по много раз делает одно и то же.

Тогда я начал делать «проще»: брал с packages.ubuntu.com стабильные версии ключевых пакетов, указанных в bad_packages.txt, ставил их через dpkg -i (он делает downgrade без вопросов — только с warning’ом ;-)). В общем, тот еще дебилизм — честное слово.

А теперь, внимание, вопрос: я тупой и чего-то не знаю / не нашел или apt-get/dpkg/… не умеют такого? Если умеют, то как? Мне уже неактуально, но на будущее хочется знать для кругозора и на всякий случай.

metal

А всякие clean ты делал?

Дмитрий Шурупов

Делал. И даже ручками проверял содержимое /var/cache/apt/archives, если правильно помню…

myst

Насколько мне известно, downgrade можно сделать только так:

$ apt-get install -f =