Приложение A. Как сделать .rpm пакеты ядра openMosix

Содержание

A.1. Как сделать .rpm пакеты ядра openMosix?

A.1. Как сделать .rpm пакеты ядра openMosix?

Руководство “шаг-за-шагом” от Mirko Caserta для менеджера релизов и для “сделай сам” авантюрного создателя пакетов .rpm.

  1. Установите RedHat 8 на вашей машине. Эта платформа до настоящего времени используется для получения .rpm, и известно, что она выполняет эту работу хорошо.

  2. Получите обновлённую копию модуля linux-openmosix из репозитория CVS openMosix, детали см. на http://sourceforge.net/cvs/?group_id=46729.

  3. Получите архив .tar для исходников ядра Linux, которые мы собираемся пропатчить, и разместите его в /usr/src/redhat/SOURCES: предполагая, что мы говорим о ядре 2.4.20, получите linux-2.4.20.tar.bz2 с одного из многих зеркал http://www.kernel.org/ по всему миру.

  4. Распакуйте архив .tar в /usr/src, то есть:

    # cd /usr/src # tar vxjf redhat/SOURCES/linux-2.4.20.tar.bz2

  5. Создайте символическую ссылку на директорию, куда вы вытянули из CVS модуль linux-openmosix, например:

    # ln -s /home/mcaserta/src/linux-openmosix/linux-openmosix \ /usr/src/linux-openmosix

  6. Скопируйте .spec файл и все .config файлы, которые могут быть найдены в этой директории, в /usr/src/redhat/SOURCES, то есть:

    # cp /usr/src/linux-openmosix/configs/openmosix-kernel.spec \ /usr/src/redhat/SOURCES # cp /usr/src/linux-openmosix/configs/*.config \ /usr/src/redhat/SOURCES

  7. Теперь настало время проверить номера версий, прежде чем мы сделаем патч-файл: удостоверьтесь, что первые строки файлов /usr/src/linux-openmosix/Makefile и /usr/src/redhat/SOURCES/openmosix-kernel.spec имеют правильные версию ядра и номер ревизии openMosix.

  8. Хорошо, время сделать патч (предполагаю, что мы выпускаем патч для ядра Linux 2.4.20 и 3-го релиза openMosix):

    # cd /usr/src # diff -Naur --exclude=CVS --exclude=configs \ linux-2.4.20 linux-openmosix > \ /usr/src/redhat/SOURCES/openMosix-2.4.20-3 # bzip2 /usr/src/redhat/SOURCES/openMosix-2.4.20-3

  9. На данный момент ваша директория /usr/src/redhat/SOURCES должна выглядеть похожей на:

    # ls /usr/src/redhat/SOURCES kernel-2.4.20-athlon.config kernel-2.4.20-athlon-smp.config kernel-2.4.20-i386.config kernel-2.4.20-i686.config kernel-2.4.20-i686-smp.config linux-2.4.20.tar.bz2 openMosix-2.4.20-3.bz2 openmosix-kernel.spec

  10. Теперь вам всего лишь нужно rpmbuild всё: что я обычно делаю, это

    # cd /usr/src/redhat/SOURCES # rpmbuild -ba --target i386 openmosix-kernel.spec # rpmbuild -bb --target i686 openmosix-kernel.spec # rpmbuild -bb --target athlon openmosix-kernel.spec

    но вы можете легко построить все .rpm, запуская

    # rpmbuild -ba --target all_x86 openmosix-kernel.spec

  11. После того, как rpmbuild выполнит свою работу, вы должны будете получить следующие файлы в директории /usr/src/redhat:

    RPMS/i386/openmosix-kernel-2.4.20-openmosix3.i386.rpm 1 RPMS/i686/openmosix-kernel-2.4.20-openmosix3.i686.rpm 2 RPMS/i686/openmosix-kernel-smp-2.4.20-openmosix3.i686.rpm 3 RPMS/athlon/openmosix-kernel-2.4.20-openmosix3.athlon.rpm 4 RPMS/athlon/openmosix-kernel-smp-2.4.20-openmosix3.athlon.rpm 5 RPMS/i386/openmosix-kernel-source-2.4.20-openmosix3.i386.rpm 6 SRPMS/openmosix-kernel-2.4.20-openmosix3.src.rpm 7 SOURCES/openMosix-2.4.20-3.gz 8

    1 двоичный пакет ядра для i386 UP машин
    2 двоичный пакет ядра для i686 UP машин
    3 двоичный пакет ядра для i686 SMP машин
    4 двоичный пакет ядра для athlon UP машин
    5 двоичный пакет ядра для athlon SMP машин
    6 исходный пакет ядра для любой x86 машины (в основном это необходимо, если вам нужны заголовочные файлы ядра openMosix)
    7 исходный пакет ядра
    8 патч-файл ядра, сжатый gzip

  12. Магическое заклинание для извлечения всех файлов из .srpm:

    # rpm2cpio openmosix-kernel-....src.rpm | cpio -di

Отдельное спасибо Martin Huy за помощь, когда я пытался собрать все вещи воедино.

Я надеюсь, что вы найдёте этот документ полезным. По крайней мере, он полезен для меня, так как я имею тенденцию забывать вещи в течение нескольких минут после того, как я их закончил :)