июня 18, 2007

Обновление FC6 - FC7

Ну вот, решил обновить свою Fedora Core 6 на 7. Посмотреть на подвижки на фронте разработки FC... Запасся всяческими полезными от здоровья вещами, т.е. пивом, вкусным ужином и DVD с FC7 и вечерком в пятницу засел за медитацию на своем IBM ThinkPad Z60t.

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

Но потом таки началось развлечение! Сначала, практически закончив все устанавливать инсталлятор anaconda вывалился с какой-то дикой ошибкой, видимо не справившись со всеми этими зависимостями и нимало сумняшись пошел на ребут... Вообще конечно странно и немного непонятно - зачем сосредоточенно готовить какую-то транзакцию по установке, если она не откатывается по ошибке?

Она естественно и не откатилась... Правда система загрузилась практически без проблем, ну не считая каких-то невразумительных выкриков nash. И естественно оказалось, что старые пакеты не деинсталлированны и у меня 5.5G винта забросано системой, что собственно ровно в 2 раза больше нормального.

Удаление пакетов FC6

В общем нужно удалить старые пакеты FC6... Не особо приятно, но надо. Первое, что пришло в голову - делаю выборку всех fc6 пакетов в файл stale.fc6 :

$ sudo rpm -qa | grep "fc6$" | tee stale.fc6

И получаю 800 с лишним пакетов. Гм. Будем резать. Что еще остается?

# cat stale.fc6 | xargs rpm -ev

Естественно вывалилась куча ошибок. Оказалось, ну не то чтобы совсем неожиданно ;), что много fc6 пакетов входят стандартно в fc7. Соответственно есть зависимости. Эти пакеты я не трогаю, просто либо удаляю их из файла stale.fc6, либо прописываю то, что от них зависит. Не мудрено, что инсталлятор сдох...

После того, как нужные пакеты все таки удалились, оказалось что удаляясь они частично попортили уже установленные новые пакеты. А вот это неприятно. Нужно восстановить установленные пакеты fc7.

Восстановление пакетов FC7

Это вот сложнее, чем удалить старые пакеты. Пришлось писать маленькую программку:

#!/usr/bin/perl
# (C) 2007 by Vladimir Kolundin
# Check broken rpms
# Parameters: path of the RPM storage (e.g. DVD)

use strict;

my ($cur_rpm, $cur_arch, $is_bad, $repo);

$repo = shift;
open(RPMH, "rpm -qa 2>&1 |") ||
  die "[938826] Can't execute rpm utility.";

while(<RPMH>) {
  chomp;
  $cur_rpm = $_;
  $is_bad = 0;
  open(CURH, "rpm -q --verify --nodigest $cur_rpm 2>&1 |") ||
    die "[248984] Can't execute rpm utility.";

  while (<CURH>) {
    if (/^missing/i) {
      next if m[/usr/share/doc/];
      $is_bad = 1;
      last;
    }
  }

  close CURH;

  if ($is_bad) {
    $cur_arch = `rpm -q --qf '%{ARCH}' $cur_rpm`;
    $cur_rpm = "$cur_rpm.$cur_arch.rpm";
    print "$cur_rpm\n" if (-e "$repo/$cur_rpm");
  }
}

Суть программки состоит в следующем:

  • Открываем вывод утилиты rpm как файл.
  • Проводим верификацию каждого пакета в выводе на предмет missing файлов, а так как я не особенно не торопился (C), то пакеты у которых не хватает только документации пропускаем (next if m[/usr/share/doc/];).
  • Для найденных битых пакетов ищем файлы на DVD (путь к репозиторию - параметр скрипта), ибо что толку найти битый пакет и не иметь возможности его переустановить?

В результате у меня сформировался список файлов пакетов которые я мог переустановить, что я и сделал:

# perl check-missing.pl /media/cdrom/Fedora | tee reinstall.fc7
# cd /media/cdrom/Fedora
# cat ~/reinstall.fc7 | xargs rpm -Uhv --force

В результате у меня все пакеты были переустановлены. Осталось только навести глянец.

Наводим глянец

Естественно я подразумеваю, что интернет Вы уже настроили ;) Я же обновляю систему, а не устанавливаю.

Устанавливаем репозиторий LIVNA:

$ sudo rpm -Uvh \ http://rpm.livna.org/fedora/7/i386/livna-release-7-2.noarch.rpm

Приводим в порядок шрифты

$ sudo rpm -Uvh \ http://avi.alkalay.net/software/freetype.bci/FC7/freetype-freeworld-2.3.4-1.i386.rpm

Перезапускаем иксы. Чтобы понять, как это работает читаем Linux Font HOWTO.

Устанавливаем шрифты Web Standard Fonts

Эти пакеты содержат популярные шрифты, такие как Arial, Times New Roman, Tahoma, Verdana, а так же новые шрифты Windows Vista and MS Office 2007. Подробнее смотрим здесь.

$ sudo rpm -Uvh \
http://avi.alkalay.net/software/webcore-fonts/webcore-fonts-3.0-1.noarch.rpm \
http://avi.alkalay.net/software/webcore-fonts/webcore-fonts-vista-3.0-1.noarch.rpm

После этого настраиваем рабочий стол как описано в Linux Font HOWTO, для KDE или Gnome.

Поддержка MP3

$ sudo yum -y install kdemultimedia-extras-nonfree id3v2

Устанавливаем Amarok

$ sudo yum -y install amarok-extras-nonfree

Устанавливаем DVD плеер

$ sudo yum -y install vlc

Вот собствено в общих чертах и все... В районе 5:30 утра я пошел спать. Вполне удовлетворенный :)

Комментариев нет: