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

UnixForum






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

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

Red Hat Linux 9 Cyrillic Edition с точки зрения пользователя.

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

Часть 1. Инсталляция

1.5. Обновление существующей системы.

28 октября 2003 г., последние изменения внесены 30 октября 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-logos-1.1.3-3.asp
asplinux-logos-1.1.3-4asp
asplinux-release-7.2-1.asp
asplinux-release-7.3-1.asp
bash-2.05-12.asp
bash-2.05a-13.asp
bzip2-1.0.1-4
bzip2-1.0.2-2
console-tools-19990829-36.0.asp
console-tools-19990829-40.2asp
curl-7.8-1
curl-7.9.7-1.asp
e2fsprogs-1.23-2
e2fsprogs-1.27-3
fileutils-4.1-10.asp
fileutils-4.1-5.asp
fonts-CP1251-1.0-1.asp
fonts-CP1251-75dpi-1.0-1.asp
fonts-KOI8-R-1.0-1.asp
fonts-KOI8-R-75dpi-1.0-1.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 и добрую половину их требуется удалить! А если обновление системы проводилось неоднократно?

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

Вариант третий. Сохранение раздела с каталогами пользователей.

В Линукс, как известно, существует стандартная структура каталогов, причем все стандартное системное программное обеспечение размещается в каталогах /bin и /sbin, все дополнительно устанавливаемое ПО оказывается в каталоге /usr, а все персональные настройки и личные файлы пользователей размещаются в каталоге /home. Причем, если вы не

Сначала с помощью команды df выясняем, в каком разделе диска у нас находится старый раздел /home и хорошенько запоминаем, что в старой (пока еще существующей системе) каталог /home находился в разделе /dev/hda4 (это чтобы не уничтожить ненароком все его содержимое). Если места достаточно, то лучше скопировать все его содержимое в какой-то временный раздел. Если вы хотите сохранить протоколы работы системы, то туда же надо скопировать содержимое каталога /var/log.

Что еще надо сохранить - так это все конфигурационные и настроечные файлы, которые находятся в каталоге /etc. Чтобы не забыть что-нибудь и не тратить время на ненужные разборки, проще всего сохранить копию всего каталога /etc в том разделе, который вы не собираетесь форматировать (

Затем проводим установку системы, причем на этапе задания разбиения диска раздел /home не форматируем. Тогда все его содержимое сохранится.

Затем ставим по отдельности нужные пакеты (русификация и прочее необходимое).

Если какой-то пакет или приложение требует конфигурации, сверяемся со старым конфигурационным файлом, который мы сохранили, и делаем все настройки по аналогии.

Вот, вроде бы и все.

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

Для завершения предисловия отмечу, что кроме стандартного ПО из дистрибутива ASP Linux 7.2 я часто пользовался следующими дополнительно установленными программами: браузером Mozilla (я как-то установил его вмсто стандартного Netscape), программой просмотра изображений XnView (очень удобная программка для быстрого просмотра графических файлов, например, для того, чтобы выбрать цифровые фото для сдачи в фотоателье), ну, и VMware, о которой я уже упоминал. Перед тем, как начать обновление, я убедился, что у меня имеются rpm-пакеты для их установки. Разбиение диска на разделы было показано выше. Я еще скопировал в раздел /home каталоги /etc (чтобы потом восстановит установки из старых конфигурационных файлов) и /root (на всякий случай), после чего установил первый дистрибутивный диск ASP Linux 9 Express Edition и перезапустил компьютер.

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

Рис.

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

Рис.

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

Приходится начать все заново. Перезапускаю компьютер, теперь уж переразбить диск не пытаюсь. Удивляет то, что программа установки не предагает отформатировать разделы заново (поскольку я перед этим несколько раз ставил Red Hat Lnux 9, а там такая опция предлагается по умолчанию, ожидал и здесь предложения отформатировать раздел. Но таковое не появилось. Пошла установка пакетов, причем даже не спрашивая, что надо устанавливать, а что не надо.

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

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

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

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

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

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

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

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

Снова пришлось долго ждать, пока установятся пакеты. И оказалось, что я зря так пренебрежительно отнесся к этапу выбора пакетов. В результатае не было задано для установки и одного загрузчика и инсталляция завершилась тем, что на этапе выбора загрузчика выбирать оказалось нечего. Снова пришлось ставить первый дистрибутивный диск и перезагружать компьютер.

На этот раз я все же переразбил диск. Правда, как выяснилось после запуска вновь установленной системы, переразбиение это прошло не совсем удачно. То есть уменьшение объема разделов осуществилось, но занять освободившееся пространство не удалось. Придется подправлять с помощью Partition Magic. Короче, я еще раз убедился, что средств переразбиения дисков под Линукс пока нет.

Тем не менее установка завершилась относительно успешно. И первый запуск прошел тоже более-менее успешно. Начнем восстанавливать те настройки и программы, которые работали в старой системе.

Первым делом пришлось мне восстанавливать таблицу монтирования дисков. Просто скопировал старый файл fstab из архива в каталог /etc, восстановил старые подкаталоги в каталоге /mnt и дал команду mount -all. После этого каталоговая структура приняла привычный вид.

Попробовал еще перезагрузиться в Windows 98, загрузка прошла успешно.

Снова загружаю Linux. Первым делом надо научить компьютер говорить по русски. Заглядываю в свои старые шпаргалки (склероз, что поделаешь) и действую по прописанным там рецептам: устанавливаю локаль путем копирования сохраненного файла /etc/sysconfig/i18n, сравниваю другие файлы из /etc/sysconfig с их сохраненными аналогами и вношу необходимые поправки в новые версии конфигурационных файлов. Устанавливаю третий уровень запуска по умолчанию.

В общем, буду краток и перечислю только то, что дела, а подробности смотрите в соответствующих разделах:

  • убрал ненужные сервисы (sendmail очень тормозил загрузку системы);
  • настроил шрифт в эмуляторе консоли;
  • настроил локальный Web-сервер trend;
  • настроил kppp (пользовался описанием из своей книги [1]);
  • попробовал получить почту, но появилось сообщение об ошибке доступа к почтовому серверу;
  • попыьался выйти в интерент с помощью браузера, но успеха не добился;
  • скопировал в /etc старые версии файлов hostname, hosts, resolv.conf и перезагрузился. Но эффекта не достиг. По-прежнему не работает разрешение имен.
  • Настроил сеть на новом и старом компьютерах. Пользовался своей книгой. (На old-lin пользовался командой ifconfig, на trend ничего делать не потребовалось). Компьютеры стали взаимно пинговаться. И локальный web-сервер trend стал доступен с компьютера old-lin. Так что локальная сеть работает!
  • А вот php-модуль на сервере не работает - подключаемые через директиву include файлы не отображаются, появляется сообщение об ошибке.
  • Честно сказать, я не знаю, какой вариант здесь правильный.

    В общем из двух альтернатив (обновлять или устанавливать заново) я склоняюсь ко второму варианту, хотя он и более трудоемкий. И если вы решитесь на такое, рискну предложить вам следующий алгоритм работы.

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

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