Понижение Версии Debian: От Тестирования До Стабильной Версии

Как вы знаете, стабильная версия Debian всегда стабильна, как кирпич.

Тестирование становится таковым только во второй половине пребывания в тестировании.

Что делать, если у вашего любимого Debian Lenny в source.list было написано всё о тестировании, а когда Lenny стал стабильным 14 февраля, ваша система обновилась до Squeeze, тем самым принёс кучу мелких и неприятных ошибок? Даунгрейд официально не поддерживается — но это не значит, что это невозможно.

Инструкцию по переходу на более раннюю версию с помощью Squeeze я не нашел (все инструкции довольно старые), поэтому решил написать эту.

Итак, для начала нам нужно зайти в /etc/apt/sources.list и заменить test и сжать на стабильный, приведя всё примерно к такому:



deb mirror.yandex.ru/debian stable main contrib non-free deb security.debian.org stable/updates main contrib non-free

Итак, сначала нам нужно понять apt-pinning. Создайте файл /etc/apt/preferences с похожим содержимым:


Package: * Pin: release a=stable Pin-Priority: 1001 Package: * Pin: release a=testing Pin-Priority: 60 Package: * Pin: release a=unstable Pin-Priority: 50

Таким образом, приоритет будет отдан пакетам из стабильного репозитория.

Теперь обновляем информацию о пакете:



$ sudo apt-get update

И мы делаем первую попытку понизить версию:


$ sudo apt-get dist-upgrade

Если все пройдет хорошо, то нам покажут, что необходимо понизить версию около тысячи пакетов, удалить несколько десятков (причем среди них могут быть не только какие-то неважные вещи, но и довольно используемый софт, в моем случае — gedit и deluge).

.

Ничего, добавим позже).

Соглашаемся, ряд пакетов понижается, сталкиваемся с первой ошибкой:



dpkg: error processing /var/cache/apt/archives/gstreamer0.10-plugins-good_0.10.8-4.1~lenny1_i386.deb (--unpack): trying to overwrite `/usr/lib/gstreamer-0.10/libgstcdio.so', which is also in package gstreamer0.10-plugins-ugly dpkg-deb: subprocess paste killed by signal (Broken pipe)

Мы относимся к этому, в общем-то, наугад. В некоторых случаях это помогает:


$ sudo dpkg -i --force-overwrite /var/cache/apt/archives/gstreamer0.10-plugins-good_0.10.8-4.1~lenny1_i386.deb

Некоторые из них можно вылечить с помощью Synaptic: либо «Редактировать» > «Поврежденные пакеты», либо использовать фильтр «Поврежденные пакеты» и пытаться удалить/переустановить по одному.

Часто установка с --force-overwrite завершается неудачно из-за неудовлетворенных зависимостей:



$ sudo dpkg -i --force-overwrite /var/cache/apt/archives/gconf2-common_2.22.0-1_all.deb



dpkg - warning: downgrading gconf2-common from 2.26.0-1 to 2.22.0-1. (Reading database .

248673 files and directories currently installed.) Preparing to replace gconf2-common 2.26.0-1 (using .

/gconf2-common_2.22.0-1_all.deb) .

Unpacking replacement gconf2-common .

dpkg: dependency problems prevent configuration of gconf2-common: gconf2-common depends on ucf; however: Package ucf is not configured yet. dpkg: error processing gconf2-common (--install): dependency problems - leaving unconfigured Errors were encountered while processing: gconf2-common

Что ж, давайте установим зависимости:


$ sudo dpkg -i --force-overwrite /var/cache/apt/archives/ucf_3.0016_all.deb



(Reading database .

248668 files and directories currently installed.) Preparing to replace ucf 3.0016 (using .

/archives/ucf_3.0016_all.deb) .

Unpacking replacement ucf .

Setting up ucf (3.0016) .

Processing triggers for man-db .



.

и снова устанавливаем сам пакет:



$ sudo dpkg -i --force-overwrite /var/cache/apt/archives/gconf2-common_2.22.0-1_all.deb



(Reading database .

248668 files and directories currently installed.) Preparing to replace gconf2-common 2.22.0-1 (using .

/gconf2-common_2.22.0-1_all.deb) .

Unpacking replacement gconf2-common .

Setting up gconf2-common (2.22.0-1) .

Replacing config file /etc/gconf/2/path with new version

Есть пакеты, зависимости для которых мы не можем удовлетворить — они появились только в Squeeze. Это значит, что они нам просто не нужны:


sudo dpkg --remove libnm-util1

Если от них что-то зависит — отлично, сначала удалите зависимый пакет, потом вернитесь к этому.

Пробравшись через первую (большую) порцию ошибок, возобновляем нашу работу.



$ sudo apt-get dist-upgrade

и повторите процедуру.

В результате мы имеем вполне нормальный Debian Lenny. Хотя, конечно, возможны проблемы.

В моем случае проблемы возникли с библиотекой /usr/lib/libgssapi_krb5.so.2. Без него невозможно было войти (кроме как в безопасном режиме), а некоторые программы не работали.

Пришлось взять эту библиотеку из Squeeze и поставить в Lenny — все работало отлично.

Теги: #установка Linux #Debian #понижение версии #понижение версии #Squeeze #lenny

Вместе с данным постом часто просматривают: