BASH Programming - Введение

       

Наложение заплаток


Накладывающиеся обновления ядра распространяются в виде заплаток. Например, если у вас версия 1.1.45, и вас оповестили, что выпущен `patch46.gz' для него, это означает, что вы можете обновить ядро до версии 1.1.46 приложив эту заплатку. Вы можете захотеть сначала сделать резервную копию дерева исходных текстов ядра (сначала `make clean' и затем `cd /usr/src; tar zcvf old-tree.tar.gz linux' создаст для сжатый архивный файл с резервной копией).

Так, продолжая пример, приведенный выше, предположим, что у вас файл `patch46.gz' расположен в директории /usr/src. Выполним cd в /usr/src и выполним `zcat patch46.gz | patch -p0' (или `patch -p0 < patch46' если эта заплатка не является сжатой). Вы увидите некоторые вещи мелькающие на экране, которые сообщают вам, что программа пытается приложить куски заплатки на нужные файлы и информацию о том, удачна данная операция или нет. Обычно этот процесс идет слишком быстро, чтобы вы могли прочитать и вы можете не быть уверенными, удачна эта операция или нет, в этом случае вы можете использовать опцию -s для программы patch, которая заставляет patch выдавать только сообщение об ошибках (вы не получите сообщения ``эй, мой компьютер действительно что-то делает!'', но если вы это предпочитаете..). Для того, чтобы взглянуть на то какие разделы не прошли гладко, перейдите в директорию /usr/src/linux и посмотрите файлы с расширением .rej. Некоторые версии программы patch (старые версии, которые могли быть скомпилированы на более худших файловых системах) оставляют отклоненные файлы с расширением #. вы можете использовать команду `find' для того чтобы найти эти файлы:

find . -name '*.rej' -print

эта команда печатает список всех файлов, которые находятся в текущей директории и ее поддиректориях и имеют расширение .rej на стандартный вывод.

если все прошло правильно, то выполните команды `make clean', `config', и `dep' как описано в разделах 3 и 4.

Существует еще несколько опций для команды patch. Как было отмечено выше, patch -s запретит вывод всех сообщений за исключением сообщений об ошибках. Если вы храните ваше ядро где-то в другом месте, отличном от /usr/src/linux, то выполнение patch -p1 (в этой директории) правильно выставит заплатку. Другие опции команды patch хорошо описаны в ее справочной странице.



Содержание раздела