Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Заметки пользователя Linux. Четыре варианта обновления Линукс-системы

(C) В.А.Костромин, kos @ rus-linux dot net

28 октября 2003 г., последние изменения внесены 11 декабря 2003 г.

Новые версии дистрибутивов Linux появляются примерно раз в полгода. И вы оказываетесь перед проблемой: обновить систему или работать в старой, настроенной и отлаженной системе. Вообще-то, если необходимые вам приложения работают без нареканий и позволяют выполнять все стоящие перед вами задачи, необходимости обновлять систему вроде бы нет. Ибо одно я могу вам сказать точно: в процессе обновления системы проблемы у вас будут гарантированно. Недаром появился широко известный анекдот про программиста и его сына:
- Папа, папа! Почему солнце встает на востоке, а садится на западе?
- Сынок, система работает? Работает! Вот ты ее и не трогай!

Основной (а может быть и единственной) причиной перехода на новую систему является отказ какого-либо из необходимых Вам программных средств работать в старой системе. Чаще всего это происходит тогда, когда выходит новая версия вашего любимого приложения, имеющая новые и необходимые вам возможности, но которая отказывается устанавливаться в вашу систему в силу несовместимости с ранее установленными пакетами или библиотеками. Может быть (я просто с такой ситуацией пока не сталкивался), необходимость обновить систему возникает и в случае, когда вы вынуждены установить новую версию ядра (из-за наличия в старой версии проблем с безопасностью или когда вы установили в систему новое устройство, для поддержки которого необходима новая версия ядра). Но ядро тоже является программой, поэтому я и делаю вывод, что единственная причина обновления системы - проблемы с установкой одного из необходимых вам программных средств. А поскольку перспектива бесконечного разбирательства с разрешением зависимостей вряд ли прельщает любого пользователя, мы и приходим к мысли, что необходимо установить новую версию системы из новой версии дистрибутива.

Вот тогда перед вами уже встает (как говорится "в полный рост") вопрос о том, каким способом провести это обновление. Вариантов тут несколько.

Вариант первый и самый простой - отформатировать диск и установить все заново. Не думаю, что этот вариант покажется приемлемым для тех, кто ставит систему не ради экспериментов с самой операционной системой, а ради того, чтобы использовать компьютер для решения каких-то практических задач (хотя бы в роли домашней пишущей машинки + архив набранных текстов). Ведь в этом случае теряется все, что вы на этой самой пишущей машинке наработали и накопили. Поэтому данный вариант мы далее не рассматриваем.

Вариант второй. Обновление системы с помощью программы инсталляции. Большинство дистрибутивов, и Red Hat в частности, на этапе инсталляции предлагают в качестве одного из вариантов установки обновление существующей системы. При выборе этого варианта сохраняются различные конфигурационные файлы, настройки программ и так далее. Вроде бы привлекательная возможность. Однако у такого решения имеется и обратная сторона. Если вы обновляете систему, вы тащите за собой весь тот хлам, который в старой системе накопился. Есть в этом хламе и жемчужины ценных наработок, но их так немного! А хлам все же надо иногда убирать.

В том, что периодическая "чистка" системы просто необходима, меня лично убедил следующий факт. На моем домашнем компьютере стоит ОС ASP Linux. Два года назад (или около того, сейчас уже точно не помню, да это и неважно) я установил на него ASP Linux 7.2 Express Edition с ядром версии 2.4.9-13. После выхода ASP Linux версии 7.3 я провел обновление системы. В результате появилось ядро версии 2.4.18-5asp и осталась возможность загрузки предыдущего ядра. Но самый поразительный результат обновления состоял в том, что многие rpm-пакеты в системе оказались тоже продублированы. Вот несколько примеров, полученных в результате выполнения команды
rpm -qa | sort > ~/rpm.txt

aspldr-0.9-5
aspldr-2.0-4
asplinux-release-7.2-1.asp
asplinux-release-7.3-1.asp
bash-2.05-12.asp
bash-2.05a-13.asp
curl-7.8-1
curl-7.9.7-1.asp
fileutils-4.1-10.asp
fileutils-4.1-5.asp
gawk-3.1.0-4.1.asp
gawk-3.1.0-4.asp
gcc-2.95.4-0.20010823.3
gcc-2.96-112asp
kdeadmin-3.0.0-2
kdeadmin-3.0.2-1asp
kdebase-3.0.0-2
kdebase-3.0.2-2asp
mozilla-0.9.5-2.asp
mozilla-1.0-1.asp
И таких пар оказалось огромное количество.
Я здесь должен оговориться. Я не знаю, может быть такая ситуация характерна только для дистрибутива ASP Linux и при использовании других дистрибутивов (других программ установки) все будет в порядке. А может быть это я что-то сделал неправильно в процессе обновления. Но факт тот, что лично я в такую ситуацию попал.

В силу того, что на основном компьютере у меня стоит диск приличного объема, это меня до сих пор не сильно волновало. Действительно, результат выполнения команды df

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda5              2055600    255356   1695824  14% /
/dev/hda7              3107092   2482564    466692  85% /usr
/dev/hda8            14998392   8363932   5872580  59% /home
/dev/hda1              2044244     581224   1463020  29% /mnt/win_c
/dev/hda6            16273960  14382624   1891336  89% /mnt/win_d
none                    224860             0        224860   0%  /dev/shm
показывает, что места на диске вполне хватает. Но, как вы понимаете, каждый из оставшихся в системе дублирующих пакетов представляет собой не что иное, как совершенно ненужный "мусор", просто призывающий хорошего хозяина (хозяйку) заняться "генеральной уборкой". Но вы только представьте себе, каких трудозатрат потребует удаление всех ненужных пакетов вручную, посредством вызова команды rpm -e имя_пакета. Ведь число установленных пакетов у меня оказалось равным 912 и добрую половину их требуется удалить! А если обновление системы проводилось неоднократно?

И это только один пример. А ведь возможно есть еще какие-то остатки от неудачных попыток установки каких-то дополнительных пакетов, а также и прекрасно установившиеся пакеты, с которыми вы некоторое время поэкспериментировали и пришли к выводу, что они вам не нужны. Да мало-ли какой хлам образуется вокруг нас и в обычной жизни и в компьютерном хозяйстве. Так что, второй вариант решения проблемы обновления тоже имеет свои недостатки. Тем не менее я решил в экспериментальных целях попытаться провести обновление системы до версии 9 с помощью штатной программы инсталляции.

Но вначале несколько слов о том, в какой ситуации я решился на обновление системы. Поскольку система у меня исправно работала, я долго не решался взяться за ее модификацию. Больше всего меня страшила возможность нарушить работу системы виртуальных машин VMware. Я ее постоянно гоняю для подготовки к печати своих статей и рукописи второго издания книги [1]. Но вот случилось так, что потребовалось мне запустить OpenOffice.org Writer по какой-то надобности. Была у меня установлена какая-то версия этого пакета (одна из первых), но она работать отказалась. Точнее запуститься то программа вроде как запустилась, но при попытке открытия любого файла появлялось сообщение об ошибке, после чего окно программы исчезало с экрана. Попробовал я переустановить программу с дистрибутивного диска последней версии Mandrake (для точности - это была версия 9.2), но появилась куча сообщений о неудовлетворенных зависимостях. А у меня к тому времени имелся еще и дистрибутив ASP Linux 9. И решился я не просто установить с него OpenOffice, а провести обновление системы.

В продолжение предисловия скажу еще, что в основном я использую домашний компьютер, о котором идет речь, для создания контента своего сайта и в работе над статьями и книгой. Контент сайта я создаю с помощью файлового менеджера MC и его встроенного редактора (а, значит, пользуюсь эмулятором терминала), а статьи пишу в среде VMware, о которой я уже упоминал. Кроме того, я регулярно пользовался почтовой программой KMail, иногда запускал GIMP, часто делал снимки экрана для иллюстрации своих статей с помощью Ksnapshot. Из названий программ вы уже, наверное, поняли, что я работаю в графической среде KDE. Кроме стандартного ПО из дистрибутива ASP Linux 7.2 я часто пользовался следующими дополнительно установленными программами: браузером Mozilla, программой просмотра изображений XnView (очень удобная программка для быстрого просмотра графических файлов, например, для того, чтобы выбрать цифровые фото для сдачи в фотоателье). Думаю, что приведенное описание дает читателю достаточно полное представление о том, с какой точки я начал обновление системы.

Итак, я установил первый дистрибутивный диск ASP Linux 9 Express Edition и перезапустил компьютер. На этапе выбора типа установки (это третий шаг после запуска программы инсталляции) выбрал "Обновление существующей системы Linux".

Рис. 1. Выбор варианта инсталляции.

К сожалению, на следующем этапе я немного погрешил против чистоты эксперимента и, поскольку программа инсталляции позволяет изменить размер раздела, решился уменьшить объем корневого раздела, за счет чего увеличить объем раздела /usr (посмотрите выше, первый у меня был заполнен на 14%, а второй - на 85%). На следующем рисунке вы видите, как это делается.

Рис. 2. Изменение размеров разделов.

Процедура изменения размера разделов длится довольно долго. Но в результате я увидел сообщение о том, что метка /usr задана неправильно или уже используется. Как я понял чуть позже, эта метка была использована для двух разделов, я это просто просмотрел. А пока приходится начать все заново.

Перезапускаю компьютер и теперь уж переразбивать диск не пытаюсь. Пошла установка пакетов, причем даже не спрашивая, что надо устанавливать, а что не надо. Процедура не скорая, успел поужинать, посмотреть телевизор, а все еще прогресс-бар показывает только 50%.

Но все когда-нибудь кончается и наконец появилось сообщение "Установка пакетов завершена". Дополнительно появилось сообщение о том, что имела место ошибка при установке пакета Abiword, но в этом ничего удивительного нет, поскольку я его в свое время снес, причем, вероятно, не совсем корректно. Далее мне было предложено выбрать загрузчик (предлагается на выбор ASPLoader, LILO и GRUB, я выбрал GRUB), вставить в дисковод отформатированную дискету и, наконец, появилось сообщение об успешном завершении установки.

После перезагрузки GRUB предложил на выбор уже 4 варианта - 3 у меня было раньше и появился еще вариант с ядром 2.4.20. По умолчанию оно и запускается. Дожидаюсь окончания загрузки, ввожу ранее заданный пароль пользователя kos (его заводить тоже не пришлось) и запускаю графику командой startx. А дальше возникла куча проблем.

Во-первых, внешний вид экрана существенно изменился, причем иконки на панели и рабочем столе перестали служить для вызова приложений (и даже потеряли свою индивидуальность, обратите внимание на вид панели на рисунке 3). Поэтому я даже не смог вызвать ksnapshot для того, чтобы снять картинку, которую вы видите на рис. 3. К счастью, через главное меню удалось вызвать GIMP, которым этот снимок и был сделан.

Рис. 3. Результат обновления системы по второму варианту.

Во-вторых, оказалось, что система работает в режиме русского языка и в латиницу никак не хочет переключаться. Я переключился во вторую виртуальную консоль, вошел в систему root-ом и посмотрел, что записано в файле /etc/X11/XF86Config. Там было указано "grp:alt_shift_toggle,grp_led:scroll", однако комбинация Alt+Shift не работала, как и все остальные. Попытка использовать Центр управления KDE для смены раскладки тоже ничего не дала.

Но хуже всего, что не запускается почтовая программа KMail, которая как раз в этот вечер мне была очень нужна.

Попробовал я еще скопировать файл XF86Config-4, сохраненный в архиве, но и это не помогло. Короче, после часа безуспешных попыток бросил я эти эксперименты и решил попробовать третий вариант обновления системы (смотри ниже).

Но, прежде чем перейти к его описанию, проведу небольшой анализ результатов, полученных при попытке реализации второго варианта. На мой взгляд, причина неудачи заключалась как раз в том, что сохраняются все старые конфигурационные и настроечные файлы. Но новые версии программ могут использовать другую структуру таких файлов. Поскольку я пытался перейти с версии 7 сразу на версию 9 дистрибутива ASP Linux (а при изменении первой цифры, как известно, происходят существенные изменения в большинстве программ), мне такое объяснение представляется вполне вероятным. Впрочем, это только предположение и я не буду настаивать на том, что оно является единственно правильным. Тем более, что можно погрешить и на мою неуспешную попытку переразбиения диска. Но если еще учесть результаты перехода с версии 7.1 на 7.2, о чем было рассказано выше, я сделал для себя вывод о том, что обновление системы с помощью стандартной программы инсталляции не является лучшим (и даже вообще приемлемым) вариантом обновления системы. И решил опробовать следующий вариант.

Продолжение статьи

Список литературы и ссылки.

  1. В.А.Костромин, "Linux для пользователя", изд. БХВ-Петербург, 2002 год, серия "Самоучитель", 650 стр.