Отправляет email-рассылки с помощью сервиса Sendsay

KirovLUG: пользователи Linux в Вятке

Чтиво: установка сервера часть 009

По поводу стандартного ядра ASPLinux, его исходников и их апгрейда до
текущей версии. ИМХО, тем способом, который мы рассматривали в прошлом
выпуске, ничего не получится. Ибо ихнее ядро отличается от
оригинального ядра той же версии, взятого с kernel.org. Команда
ASPLinux (как и многие производители дистрибутивов) накладывают
множество различных заплаток, которые влияют (надеюсь, в лучшую
сторону) на безопасность, работу с апаратным обеспечением и т.д.
Поэтому если вы хотите получить обновленное ядро от создателя
дистрибутива, то ищите обновления на его сайте или ftp-серверах.
Например, на текущий момент на сайте ASPLinux, доступно обновленное
ядро для диистрибутива ASPLinux 9, правда оно все-равно версии 2.4.20,
зато в нем исправлены некоторые ошибки и релиз его 2.4.20-20.9.

Вчера скачал обновления для bash и xinetd - теперь хочу обновить эти
пакеты: копирую их на сервер с помощью psftp.exe. Они теперь будут в
каталоге /home/koal/files
$ su
$ ls -l /home/koal/files
-rw-rw-r-- 1 koal koal 3077368 Сен 19 10:01 bash-2.05b-20.1.src.rpm
-rw-rw-r-- 1 koal koal 322258 Сен 19 10:02 xinetd-2.3.11-1.9.0.src.rpm

Перейдем в каталог для пересборки rpm-пакетов. Каталог
/usr/src/asplinux и все его вложенные кталоги создаются пакетом
rpm-build, который должен быть обязательно установлен если вы
собираетесь пересобирать rpm-пакеты из исходинков.
$ cd /usr/src/asplinux
$ cp /home/koal/files/xinetd-2.3.11-1.9.0.src.rpm ./
$ cp /home/koal/files/bash-2.05b-20.1.src.rpm ./
Что ж, начинаем пересобирать пакет:
$ rpmbuild -rebuild bash-2.05b-20.1.src.rpm
Система некоторе время выводит на экран информацию о процессе
пересборки. Ага, все, оснановилась: "Неверный код возврата из
/var/tmp/rpm-tmp.5708 (%build)". Нифига не получилось. В чем проблема?
Поднимаемся чуть выше и видим:
+ make
yacc -d ./parse.y
make: yacc: Команда не найдена
make: *** [y.tab.c] Ошибка 127
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.5708 (%build)
Что ж, замечательно. Ошибка! Опять классическая ситуация - похоже, не
установлен пакет, который содержал бы команду "yacc". Попробуем найти
этот пакет.
Вставляем в cdrom первый диск с дистрибутивом и монтируем его:
$ mount /mnt/cdrom
$ cd /mnt/cdrom
$ ls -1 (здесь уже не l (long), а цифра 1 - в один столбец)
$ cd ASPLinux/RPMS/
Обработаем все файлы, которые предоставляют все rpm-пакеты в текущем
каталоге и выведем на экран только те файлы, которые в своем полном
пути имеют сочетание "yacc" (вот одно, из-за чего мне Линукс нравиться)
$ ls -1 *.rpm | xargs rpm -qpl | grep yacc
Ничего подобного на "/bin/yacc" не похоже, зато мы видим строчку
"/var/cache/yum/mastersite/headers/byacc-0-1.9-25.i386.hdr" - будем
иметь в виду название "byacc-0-1.9-25", скорее всего именно этот пакет
соджержит нужный файл ("/cache/yum" это кэш пакетного менеджера yum, он
содержит имена всех пакетов, к которым yum может иметm доступ - я yum
пользуюсь только в том случае, когда есть возможность репозиторий
rpm-пакетов с CD-дисков переписать на один носитель, потому что yum
пока не приспособлен работать с томами одного репозитория).
Отмонтируем диск и проведем подобную операцию со вторым диском:
$ cd ../../../
$ eject
$ mount /mnt/cdrom
$ cd cdrom/ASPLinux/RPMS
$ ls -1 *.rpm | xargs rpm -qpl | grep yacc
Опять пусто - третий диск:
$ cd ../../../
$ eject
$ mount /mnt/cdrom
$ cd cdrom/ASPLinux/RPMS
$ ls -1 *.rpm | xargs rpm -qpl | grep yacc
Ну вот нашли - выясняем есть ли здесь пакет "byacc":
$ ls -1 | grep byacc
Есть. Точно он содержит дааную программу?
$ rpm -qpl byacc-1.9-25.i386.rpm | grep yacc
Ну да, конечно. Повезло. Бывает хуже. OK. Устанавливаем его:
$ rpm -ihv byacc-1.9-25.i386.rpm
Все, встал.

Возращаемся к пересборке:
$ cd /usr/src/asplinux
$ rpmbuild --rebuild bash-2.05b-20.1.src.rpm
Опять ошибка!
+ gzip -9nf ./usr/share/info/bash.info
gzip: ./usr/share/info/bash.info: No such file or directory
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.41839 (%install)
Здесь уже не смешно. Нет файла "bash.info". Похоже разарботчики забыли
положить его в дистрибутив или что-то другое (может кто мне это
объяснит)? Что ж попытаемся решить и эту проблему. Для этого будем
править spec-файл - это файл последовательности действий для
rpm-сборщика. Так как пакет у нас уже распокавался, то spec-файл от
него лежит /usr/src/asplinux/SPECS - заходим туда:
$ cd SPECS
Вызываем для редактирования "bash.spec"
$ mcedit bash.spec
<F7>(Поиск строки)"bash.info"<ENTER> -> должны попасть на строку вида
"gzip -9nf .%(_infodir)/bash.info" -><F8>(Удалить строку) ->
<F7><ENTER> -> должны попасть на строку вида "%(_infodir)/bash.info*"

Что ж пробуем теперь пересобрать, но сейчас, так как мы хотим
воспользоваться измененным SPECом, мы должны использовать другие опции:
$ rpmbuild -bb --clean --rmsource --rmspec bash.spec
Все. Теперь скомпилировалось. Если поднимемся чуть выше, то увидим
Записан: /usr/src/asplinux/RPMS/i386/bash-2.05b-20.1.i386.rpm
Записан: /usr/src/asplinux/RPMS/i386/bash-doc-2.05b-20.1.i386.rpm
Запомним это.

Теперь попробуем пересобрать xinetd:
$ cd ../
$ rpmbuild --rebuild xinetd-2.3.11-1.9.0.src.rpm
Ошибка - не найдена программа "libtoolize". Ищем по известному
алгоритму. Программа находится в пакете libtool-1.4.3-5, к счастью, на
оставленном нами в CD-драйве диске. Устанавливаем. Снова пересобираем.
Ура. Готово.
Записан: /usr/src/asplinux/RPMS/i386/xinetd-2.3.11-1.9.0.i386.rpm
Удаляем ненужные нам больше src.rpm пакеты:
$ rm -f *.src.rpm
Заходим в каталог ./RPMS/i386/
$ cd RPMS/i386/
Смотрим, какие версии установлены на текущий момент:
$ rpm -q bash xinetd
Обновляем установленные пакеты, всеми теми пакетами, какие сейчас
находятся в текущем каталоге:
$ rpm -Uhv *.rpm
Проверяем, какие версии стали теперь:
$ rpm -q bash xinetd
Все. Задача выполнена.

Перенесем полученные бинарники в паку /home/koal/files/, но
предварительно изменим права и владельца:
$ chown koal:koal *.rpm
$ chmod 664 *.rpm
$ mv *.rpm /home/koal/files/

Каково впечатление?

C уважением, Kolotov Alexandr (aka mr. Эбола)
отвечать: myscri***@e*****.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.kirovlug-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.kirovlug&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Kolotov Alexandr (#2797)