среда, 18 марта 2009 г.

Сила Маркетинга (или чуток о том, как выдавать желаемое за действительное...)

/*
Что толку быть собой не ведая стыда,
Когда 15 баб резвятся у пруда...
/БГ/

чистота - залог здоровья, порядок - прежде всего, а стабильно работающая система - эт собсно наше всё. какого-то лешего в очередной раз решил проапгрейдить систему с openSUSE-11.0 до openSUSE-11.1 без форматирования рутового раздела. другими словами - апгрейд "на живую", при помощи "волшебной" команды:

sudo zypper dup

собственно решил проверить насколько рекомендации ведущих собаководов соответствуют истине. одну такую попытку Ваш покорный слуга уже описывал ранее. всё конечно же было сукесфули комплитэд (successfully completed), но, дай Бог памяти, текущую систему (11.0) таки ставил с чистого листа, с форматированием рутового раздела. итак нюансы:

1) даже если Вы в добром уме и трезвом здравии буква в буковку следовали "рекомендациям" - в результате (после первой перезагрузки) получится вариант, далёкий от идеала. почему? потому, что логика команды "zypper dup" - говно заточена на минимизацию трафика при апгрейде системы, а не на получение 100% стабильного результата (по крайней мере для openSUSE-11.0). но! всё это легко контролируется и не менее легко и очаровательно приводится в норму. об этом правда многие почему-то умалчивают, либо не обоняя "родное амбрэ", либо не владея техникой постановки любого вопроса раком для последующего сукесфули решения.

2) imho - если Вы можете позволить себе скачать/купить дистрибутив и поставить систему "с нуля" - то именно так и надобно поступать. к тому же форматирование партиции есть суть операция весьма и весьма пользительная...

3) ещё раз перечитайте пункт первый и будьте морально готовы к разгребанию Авгиевых конюшен...

а в чём же тогда смысл апгрейда системы подобным образом? элементарно, Уотсон! если вы - ньюб или неопытный лузер, которому худо-бедно каким-то макаром но удалось настроить систему (или же вы думаете, что она работает так, как Вам надо...), то подобная процедура (Вы не поверите!) сохранит ВСЕ Ваши конфиги! да-да-да! от grub-а и до vsftpd (до настроек в Вашем "хомяке" - $HOME каталоге) - всё останется как было, без глобальных изменений. поэтому суть есть собсно выбор: или Вы способны за 5-15 минут откатить конфиги из бэкапа и подрихтовать их для новой системы, или Вы намерены чуток поебаться с "мягким" апгрейдом. Вам выбирать...

/* лирическое отступление */

собсно создать бэкап настроек можно при помощи шаблона ниже:

#!/bin/sh
mkdir -p ~/tmp/backup
cd ~/tmp/backup/
sudo tar -cvvjf "`date +%m%d%Y`_etc.tar.bz2" /etc
sudo tar -cvvjf "`date +%m%d%Y`_var_lib_rpm.tar.bz2" /var/lib/rpm
find ~ -maxdepth 1 -type f > ./"$USER"_home_rc && \
tar -cvvjf "`date +%m%d%Y`_home_rc.tar.bz2" -T ./"$USER"_home_rc

/* звиздец лирического отступления */


итак, вернёмся к нашим "баранам". Вы таки решились не травмировать свою нежную душу восстановлением конфигов, перебили адреса всех репозиториев на новую версию, зашли в консольку, дрожжащими ручонками накорябали (махнув 150 для смелости):

sudo zypper dup

и отправились баиньки, дабы за ночь системка выкачала пару-тройку гигабайт обновлений. урок нумеро уно: не надо обновлять "помойку". сперва откройте тот же YaST (если у Вас толстый канал и хороший провайдер) или воспользуйтесь "rpm -e $packages" и постарайтесь убрать лишнее. так будет проще. поскольку поднятый мной вопрос о компиляции драйверов вызвал оживлённую дискуссию и все мейнтейнеры модулей ядра сразу же добавили "Update" репозитории в свои проекты, то если Вы решились обновиться до текущего стабильного состояния 11.1 - останетесь без пакетов драйверов для ATI/NVIDIA (как минимум, ибо ядро уже обновилось, может ещё что-то "сломается"...). оно конечно же можно и ручками дрова прикрутить, потом, вспомнив, что надо доставить пакеты "kernel-source", "kernel-syms", "linux-kernel-headers", "gcc", "make" и напечатав "init 3" в строке логина. а первым делом забэкапьте и обнулите "/etc/zypp/locks" файл! какого буя об этом молчат "известные собаководы" - непонятно...

sudo cp /etc/zypp/locks /etc/zypp/locks.old
su
(введите Ваш рутовый пароль)
echo "" > /etc/zypp/locks
exit

после чего ещё раз проверьте новые репо и давите на педальку:

sudo zypper ref && sudo zypper dup

как только безобразие закончится - не спешите в ребут. если вам нужно поставить драйвер ATI/NVIDIA - убедитесь, что как минимум стоят упомянутые выше пакеты. также можно до перезагрузки открыть YaST -> Software Management и установить все апдейты, которые он предложит. перегружаемся. если надо ставить дрова - уходим в "init 3" и ставим. возвращаемся в "init 5" и оцениваем "масштаб катастрофы". на первый взбляд всё будет тип-топ. новое ядро, типа новые пакеты, новая система... сверху - шоколадка, а внутри - кокос. сразу было сладко, а теперь приступим к изучению того, что нам оставила команда "zypper dup".

* мантра первая: если вы были уверены в том, что имеете полное право собирать программы из исходников и устанавливать их при помощи "sudo make install" - с результатами разбирайтесь сами. это подтолкнёт вас к изучению формата rpm и написанию кошерных spec файлов в будущем...

* мантра вторая: "не ссы, прорвёмся". всё на самом деле не так уж и плохо, скорее даже наоборот.

* мантра третья: думай своей головой. если с чем-то не согласен и это у тебя работает - есть смысл так и оставить.

* мантра четвёртая:
"Жаль, подмога не пришла
Подкрепленья не прислали
Нас осталось только два
Нас с тобою наебали..."
/БГ/

чтобы в этом убедиться далеко ходить не надо. выполняем команды:

export OLD_VERSION="11.0"
rpm -qai | grep -w "Distribution:" | grep -w "$OLD_VERSION" | wc -l

результат нам покажет сколько пакетов осталось в системе от старой версии. но это не всё.

export OLD_VERSION="(none)"
rpm -qai | grep -w "Distribution:" | grep -w "$OLD_VERSION" | wc -l

это покажет сколько пакетов имеют сомнительное происхождение. может вы собирали их сами, может ставили хз откуда - всё надо перепроверить. осмелюсь предложить вариант.

cd /tmp
rpm -qai > ./packages1
less ./packages1

находим по шаблону "11.0" старый пакет, смотрим как оно называется и рисуем (с правами рута!):

export pac="zsnes llvm llvm-devel" && rpm -e --nodeps $pac ; zypper in $pac

вот таким вот нехитрым макаром надо пройтись по всем пакетам и добиться, чтобы

export OLD_VERSION="11.0"
rpm -qai | grep -w "Distribution:" | grep -w "$OLD_VERSION" | wc -l

в результате в системе не осталось следов от старой версии. с export OLD_VERSION="(none)" проще. в данном случае большинство пакетов есть не что иное как ключи шифрования. оставить их или убрать зависит от Вас и вашего поведения. обращайте внимание на все сообщения при

export pac="PACKAGES" && rpm -e --nodeps $pac ; zypper in $pac

это очень важно! например:

export pac="libx264-60" && rpm -e --nodeps $pac ; zypper in $pac

команда просто удалит x264 бинарь из вашей новой системы и напишет, что для версии 11.1 такого пакета (libx264-60) нет. и правильно, ибо есть пакет/ы libx264-67 и libx264-65! то есть вам надо после сообщения, что "пакет типа не найден нихуя" нарисовать в консоли

sudo zypper se libx264

и посмотреть на "варианты". дело это довольно муторное, должен признать. кроме того есть "нюансы" другого плана...

предположим, что Вы питаете нежную любовь к дивному "продукту" - Pulseaudio и, также как и я, не видите в нём никакого смысла. если в версии openSUSE-11.0 можно было извернуться и не ставить/(не запускать) это быдлоподелие, то в 11.1 без подобного "костыля" не запустится например "Stardict" и ряд других программ. кушать, так сказать, подано, Господа...

ну а в целом оно конечно же очень пиздато. перебил репы, нарисовал "zypper ref && zypper dup" и получил полный апгрейд! без проблем! во как!

*/

9 комментариев:

Анонимный комментирует...

Моя домашняя система пережила апдейты 10.1->10.2->10.3->11.0->11.1 Смену файловой системы корневой партиции ext3->reiser->reise4->ext4 и один перезд на новый жесткий диск. Работает стабильно, не ощущаю желания поставить "с нуля". Да во ремя всех этих изменений происходли некотроые "внештатные ситуации", это не так в принципе и страшно

Stalwart комментирует...

Я на работе уже F8->F9->F10 проапдейтил и скоро на F11 попру. Простым крестьянским yum update без импортных бубнов =)

sda комментирует...

Моя домашняя система пережила апдейты 10.1->10.2->10.3->11.0->11.1
никто и не говорит, что "срашно"! наоборот, если Вас всё устраивает - и отличненько! меня же немного коробит бардак. вы, кстати, сами можете посмотреть (да и тут отписаться), сколько "хвостов" осталось от предыдущих систем. есть ещё одна командочка (ниже - шаблончик):

find /bin -print -exec rpm -qf {} \;

можете ознакомиться на досуге. цель этой статьи - дать направление в РЕШЕНИИ возможных неурядиц...

sda комментирует...

Простым крестьянским yum update без импортных бубнов =)
дык, боится и уважает Мастера, ясен пень :)

Nail комментирует...

немного оффтопа =) Песенка не БГ, а ХЗ(х.й забей группа =))

Анонимный комментирует...

Да, как тяжело жить…

Mephy комментирует...

А вот это напугало:

sudo > /etc/zypp/locks

шо мы хотим получить в результате в

/etc/zypp/locks

?

sda комментирует...

шо мы хотим получить в результате в /etc/zypp/locks

да, знаю, вот эта конструкция:

sudo > /etc/zypp/locks

сама по себе некорректна и не работает. мне было лениво писать фразу, что 'файл /etc/zypp/locks надо обнулить/(сделать бэкап и очистить полностью)'. ща поправлю заметку...

Svental комментирует...

>Песенка не БГ, а ХЗ

её на писал БГ с А. Гуницким... ещё када ХЗ ходили в школу и публиковали свои стихи на заборах :)