Патч ядра Linux

Después de experimentar este mismo problema, funcionó lo siguiente.

$ pip install MySQL-python

Por supuesto, esto es usando un virutalenv.

cd /home/user/dev
mkdir TracEnv
mkdir TracEnv/TracProject
cd./TracEnv/
virtualenv venv
source./venv/bin/activate
pip install trac
pip install MySQL-python
trac-admin /home/user/dev/TracEnv/TracProject initenv
-1
18.03.2019, 11:47
2 ответа

«Заплатка» — это файл, описывающий изменения в другом файле (файл может быть любым, включая исходный код ). Один из самых простых способов создания и использования патча — это diffи patch.

Допустим, у нас есть простая программа hello world в файле с именемhello1.c:

#include <stdio.h>

int main(void)
{
  printf("Hello world!\n");
  return 0;
}

Теперь изменим строку "Hello world!\n"на "Hi world!\n"и вызовем новую программуhello2.c:

#include <stdio.h>

int main(void)
{
  printf("Hi world!\n");
  return 0;
}

Теперь в терминале выполните следующую команду:

diff -u hello1.c hello2.c > hello-patch

Вывод содержимого файла исправления с помощью cat hello-patchпоказывает это:

--- hello1.c    2019-03-18 13:29:35.897546888 -0500
+++ hello2.c    2019-03-18 13:30:02.866456737 -0500
@@ -2,6 +2,6 @@

 int main(void)
 {
-  printf("Hello world!\n");
+  printf("Hi world!\n");
   return 0;
 }

В этом файле указаны различия между hello1.cи hello2.c.

Теперь предположим, что вы распространили исходный код hello1.cсреди своих друзей. Этот патч-файл hello-patchпозволяет вашим друзьям преобразовать hello1.cв hello2.cс помощью команды patch. Если hello1.cи патч находятся в одном каталоге, эта команда:

patch < hello-patch

Это «применит патч к hello1.c». Когда это будет сделано, hello1.cбудет обновлен и теперь идентичен hello2.c.

Таким образом, патчи — это просто списки изменений в файле (или наборе файлов ), и эти патчи позволяют кому-то выборочно обновлять файл, применяя патчи.

Команды diffи patchхорошо работают для небольших патчей. Для всего большого и сложного потребуется инструмент промышленной прочности. Linux использует git. Справочная система gitдовольно хороша. Например, git help -aперечисляет все gitразделы справки, а git help format-patchподробно описывает, как «Подготовить исправления для электронной -отправки по почте».

Разработка Linux осуществляется по электронной почте, и вы можете просмотреть архив электронных писем, отправленных разработчиками Linux, на lkml.org и kernelnewbies.org — отличное место для начала. для изучения разработки ядра Linux. Имейте в виду, поскольку похоже, что книга, которую вы цитируете, была опубликована в 2009 году, некоторые содержащиеся в ней технические детали устарели.

«Перекомпиляция» в данном случае просто означает повторную компиляцию после применения патча к исходному коду. Это похоже на запуск чего-то вроде gcc hello1.c -o helloдля компиляции исходного файла в исполняемый код. В этом руководстве описывается сборка Linux .Здесь описывается процесс сборки с некоторыми шагами, которые можно использовать в дистрибутиве Debian .

В этом выступлении разработчика Linux Грега Кроа в 2016 г. -Хартман дает обзор того, на что похожа разработка Linux

7
28.04.2021, 23:35

Если вы не знаете, что означает «перекомпилировать ядро» и «применить исправление», вам следует прочитать другие -связанные с Linux/Unix книги, в которых рассматриваются более общие темы, вместо того, чтобы тратить время на попытки получить знания из книга, посвященная разработке ядра Linux, например «Программирование модулей ядра Linux» Питера Джея Зальцмана.

Я предлагаю вам следующие книги (извините, если этот пост выглядит как AD )чтобы начать свое путешествие, чтобы получить знания о том, как работать с Unix -как ОС:

  • Руководство по системному администрированию UNIX и Linux, 4-е издание Эви Немет (Автор ), Гарт Снайдер (Автор ), Трент Р. Хейн (Автор ),Бен Уэйли (Автор)
  • Как работает Linux :Что должен знать каждый суперпользователь Брайан Уорд
  • Собор и базар :Размышления о Linux и открытом исходном коде случайного революционера Эрика С. Рэймонда
0
28.04.2021, 23:35

Теги

Похожие вопросы