Linux нет команды patch

Linux нет команды patch

Если у вас не работает один из способов авторизации, сконвертируйте свой аккаунт по ссылке

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

[ Tags | *nix, цитаты на память ]

Чтобы потом, как потребуется, не искать долго в дебрях Сети.

Как создать и применить патч в Linux
Создание патч-файла:
diff -Naur olddir newdir > new-patch
— или —
diff -Naur oldfile newfile >new-patch

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

— old/modules/pcitable Mon Sep 27 11:03:56 1999
new/modules/pcitable Tue Dec 19 20:05:41 2000

Вышеуказанное будет хорошо работать с командой diff как патч.

— old/try1/other/modules/pcitable Mon Sep 27 11:03:56 1999
new/modules/pcitable Tue Dec 19 20:05:41 2000

Возможны проблемы при формировании патча с помощью команды diff и вышеуказанных строк. Отметьте, что первая имеет 4 уровня вложенных каталогов и вторая всего лишь два. Я бы советовал изменить — и строки, чтобы в обоих случаях структура каталогов имела одинаковый уровень вложения.
Использование команды Patch:

[Error: Irreparable invalid markup (») in entry. Owner must fix manually. Raw contents below.]

Чтобы потом, как потребуется, не искать долго в дебрях Сети.

Как создать и применить патч в Linux
Создание патч-файла:
diff -Naur olddir newdir > new-patch
— или —
diff -Naur oldfile newfile >new-patch

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

— old/modules/pcitable Mon Sep 27 11:03:56 1999
new/modules/pcitable Tue Dec 19 20:05:41 2000

Вышеуказанное будет хорошо работать с командой diff как патч.

— old/try1/other/modules/pcitable Mon Sep 27 11:03:56 1999
new/modules/pcitable Tue Dec 19 20:05:41 2000

Возможны проблемы при формировании патча с помощью команды diff и вышеуказанных строк. Отметьте, что первая имеет 4 уровня вложенных каталогов и вторая всего лишь два. Я бы советовал изменить — и строки, чтобы в обоих случаях структура каталогов имела одинаковый уровень вложения.
Использование команды Patch:

Какую из приведённых выше команд patch Вам использовать зависит от Вашей текущей рабочей директории.
Другая методика для вызова команды patch — использование стандартного ввода patch:

Читайте также:  Server block

Другая методика вызова команды patch — использование «here document»:

patch -p0 — old/modules/pcitable Mon Sep 27 11:03:56 1999
new/modules/pcitable Tue Dec 19 20:05:41 2000
@@ -1,4 1,6 @@
0x0e11 0xae10 «cpqarray» «Compaq|Smart-2/P RAID Controller»
0x1000 0x0010 «cpqarray» «Compaq|Integrated Array Controller»
0x1011 0x0046 «cpqarray» «Compaq|Smart-2/P RAID Controller»
0x0e11 0xae32 «tlan» «Compaq|Netelligent 10/100»
0x0e11 0xae34 «tlan» «Compaq|Netelligent 10»
0x0e11 0xae35 «tlan» «Compaq|Integrated NetFlex-3/P»
@@ -21,6 23,7 @@
0x1000 0x000f «ncr53c8xx» «Symbios|53c875»
0x1000 0x0012 «ncr53c8xx» «Symbios|53c895a»
0x1000 0x008f «ncr53c8xx» «Symbios|53c875J»
0x1000 0x000a «sym53c8xx» «Symbios|53c1510»
0x1000 0x0701 «yellowfin» «Symbios|83C885 gigabit ethernet»
0x1000 0x0702 «yellowfin» «Symbios|Yellowfin G-NIC gigabit ethernet»
0x1011 0x0001 «tulip» «DEC|DECchip 21050»
— old/usr/share/kudzu/pcitable Sun Sep 26 17:11:23 1999
new/usr/share/kudzu/pcitable Tue Dec 19 20:05:41 2000
@@ -15,6 15,8 @@
0x0e11 0x3034 «unknown» «Compaq|QVision 1280/p»
0x0e11 0x4000 «unknown» «Compaq|4000 [Triflex]»
0x0e11 0xa0f3 «ignore» «Compaq|Triflex PCI to ISA Bridge»
0x1000 0x0010 «cpqarray» «Compaq|Integrated Array Controller»
0x1011 0x0046 «cpqarray» «Compaq|Smart-2/P RAID Controller»
0x0e11 0xae10 «cpqarray» «Compaq|Smart-2/P RAID Controller»
0x0e11 0xae29 «unknown» «Compaq|MIS-L»
0x0e11 0xae2a «unknown» «Compaq|MPC»
@@ -46,6 48,7 @@
0x1000 0x000f «ncr53c8xx» «Symbios|53c875»
0x1000 0x0012 «ncr53c8xx» «Symbios|53c895a»
0x1000 0x008f «ncr53c8xx» «Symbios|53c875J»
0x1000 0x000a «sym53c8xx» «Symbios|53c1510»
0x1000 0x0701 «yellowfin» «Symbios|83C885 gigabit ethernet»
0x1000 0x0702 «yellowfin» «Symbios|Yellowfin G-NIC gigabit ethernet»
0x1000 0x0901 «unknown» «Symbios|61C102»
EOF

Для получения дополнительной информации по данной документации нажмите: heredoc.html
Уровни в команде Patch (-p0 или -p1?):
Опция -p будет отбрасывать уровни каталогов из патч-файла. Например: если у Вас есть патч-файл с таким заголовком:

— old/modules/pcitable Mon Sep 27 11:03:56 1999
new/modules/pcitable Tue Dec 19 20:05:41 2000

Использование ключа -p0 будет подразумевать, что от Вашей текущей рабочей директории, требуется найти подкаталог «new», затем «modules» расположенный ниже, затем файл «pcitable» в данном каталоге.

Использование ключа -p1 отбросит 1-ый уровень из пути и будет ожидаться поиск (из Вашей текущей рабочей директории) каталога «modules», затем файла «pcitable». Patch проигнорирует директорию «new» упомянутую в заголовке патч-файла.

Использование ключа -p2 отбросит два первых уровня из пути. Будет ожидаться поиск командой Patch каталога «pcitable» в текущей рабочей директории. Patch проигнорирует каталоги «new» и «modules» упомянутые в заголовке патч-файла.

Использование ключа -p3, в данном примере, будет не лучшей идеей. Patch, скорее всего, ничего не пропатчит.

Применение команды Patch:
Перейдите в требуемую директорию и выполните команду patch (смотрите Использование команды Patch выше). Обычно это:

Читайте также:  Аудио драйвер реалтек для линукс

если у patchfile нет «linux» как части структуры каталогов в строке, в таком случае выполните команду patch с ключом -p1 следующим образом:

Заголовок патча:
В этих примерах заголовок патча начинается с двух строк, которые начинаются с — и . Это указывает на имя файла, который будет обрабатываться.
Составные патчи в патч-файле:
В патч-файле может быть много секций, каждая из которых начинается с — / заголовка упомянутого выше. И один патч-файл фактически может модифицировать несколько файлов. При просмотре патч-файла обязательно найдите каждое включение — в патч-файле, чтобы знать какие файлы он патчит.
Пример способа просмотра патч-файла:

Отметьте, что «/» вызывает поисковую функцию в команде less, и при каждом нажатии «n» less будет производить поиск следующего соответствия искомой строки.
Куски:
Кусок — это секция, которая будет пропатчена. Кусок обычно начинается и заканчивается строками, которые не нуждаются ни в каких изменениях, они только упоминаются так, чтобы Patch мог найти, соответствующее место в файлах для патча. Кусок в этих примерах начинается с двойного символа at (@@) и оканчивается либо с началом нового куска, либо когда встречается новый заголовок патча. Вот пример куска:

@@ -1,4 1,6 @@
0x0e11 0xae10 «cpqarray» «Compaq|Smart-2/P RAID Controller»
0x1000 0x0010 «cpqarray» «Compaq|Integrated Array Controller»
0x1011 0x0046 «cpqarray» «Compaq|Smart-2/P RAID Controller»
0x0e11 0xae32 «tlan» «Compaq|Netelligent 10/100»
0x0e11 0xae34 «tlan» «Compaq|Netelligent 10»
0x0e11 0xae35 «tlan» «Compaq|Integrated NetFlex-3/P»

Отступы в Куске:
В этих примерах Вы заметили, что в каждом куске сделаны отступы так, что текст не занимает первый столбец. В этих примерах Patch использует первый столбец в каждом патче, чтобы перечислить строки, которые будут добавлены или удалены.
Первый столбец Куска ( , -, и пробел):
Пробел указывает, что конкретно эта строка будет добавлена.

— указывает, что конкретно эта строка будет удалена.

Строка без плюса или минуса указывает на то, что конкретно эта строка кода является точкой отсчёта.

diff -u old/modules/pcitable new/modules/pcitable
— old/modules/pcitable Mon Sep 27 11:03:56 1999
new/modules/pcitable Tue Dec 19 20:05:41 2000
@@ -1,4 1,6 @@
0x0e11 0xae10 «cpqarray» «Compaq|Smart-2/P RAID Controller»
0x1000 0x0010 «cpqarray» «Compaq|Integrated Array Controller»
0x1011 0x0046 «cpqarray» «Compaq|Smart-2/P RAID Controller»
0x0e11 0xae32 «tlan» «Compaq|Netelligent 10/100»
0x0e11 0xae34 «tlan» «Compaq|Netelligent 10»
0x0e11 0xae35 «tlan» «Compaq|Integrated NetFlex-3/P»
@@ -21,6 23,7 @@
0x1000 0x000f «ncr53c8xx» «Symbios|53c875»
0x1000 0x0012 «ncr53c8xx» «Symbios|53c895a»
0x1000 0x008f «ncr53c8xx» «Symbios|53c875J»
0x1000 0x000a «sym53c8xx» «Symbios|53c1510»
0x1000 0x0701 «yellowfin» «Symbios|83C885 gigabit ethernet»
0x1000 0x0702 «yellowfin» «Symbios|Yellowfin G-NIC gigabit ethernet»
0x1011 0x0001 «tulip» «DEC|DECchip 21050»
— old/usr/share/kudzu/pcitable Sun Sep 26 17:11:23 1999
new/usr/share/kudzu/pcitable Tue Dec 19 20:05:41 2000
@@ -15,6 15,8 @@
0x0e11 0x3034 «unknown» «Compaq|QVision 1280/p»
0x0e11 0x4000 «unknown» «Compaq|4000 [Triflex]»
0x0e11 0xa0f3 «ignore» «Compaq|Triflex PCI to ISA Bridge»
0x1000 0x0010 «cpqarray» «Compaq|Integrated Array Controller»
0x1011 0x0046 «cpqarray» «Compaq|Smart-2/P RAID Controller»
0x0e11 0xae10 «cpqarray» «Compaq|Smart-2/P RAID Controller»
0x0e11 0xae29 «unknown» «Compaq|MIS-L»
0x0e11 0xae2a «unknown» «Compaq|MPC»
@@ -46,6 48,7 @@
0x1000 0x000f «ncr53c8xx» «Symbios|53c875»
0x1000 0x0012 «ncr53c8xx» «Symbios|53c895a»
0x1000 0x008f «ncr53c8xx» «Symbios|53c875J»
0x1000 0x000a «sym53c8xx» «Symbios|53c1510»
0x1000 0x0701 «yellowfin» «Symbios|83C885 gigabit ethernet»
0x1000 0x0702 «yellowfin» «Symbios|Yellowfin G-NIC gigabit ethernet»
0x1000 0x0901 «unknown» «Symbios|61C102»

Читайте также:  Разделы монтирования linux при установке

Анализ вышеприведённого примера:
Данный пример был создан с использованием следующей команды diff:

diff -u old/modules/pcitable new/modules/pcitable

Однако теперь бы я использовал только опции -Naur вместо -u. Данный пример модифицирует два файла: new/modules/pcitable, и new/usr/share/kudzu/pcitable.

В первом заголовке патча есть два куска. Конкретно эти куски добавляют 2 строки и 1 строку соответственно.

Источник

Что нужно установить, чтобы работала команда patch в терминале?

Добавлено через 2 минуты
Я имею ввиду под Centos 7.

Что нужно установить, чтоб на Viste работала справка Delphi?
Ребят, может, кто кинет мне на электронку exe-шник Delphi? Мне надо, чтоб справка работала. Может.

Что нужно сделать, чтобы программа работала на других ПК
Написал консольное приложение в visual studio, хочу отправить другу, какие файлы отправлять что бы.

что нужно сделать чтобы программа с БД работала на другом компьютере?
есть программа с БД. когда открываешь на другом компе ругается и не работает. выходил из положения.

Что нужно для того, чтобы прога работала на другом компе
Что нужно для того, чтобы прога работала на другом компе? Net framework compact?

Лучший ответ

Сообщение было отмечено max_sk как решение

Решение

Что нужно сделать на сервере домашнем и на хосте в инете, чтобы dll работала, поддерживалась?
Привет всем. Я так понял, что в VDScript (ASP) можно использовать ActiveX DLL, созданные с.

Как сделать чтобы работала команда SetWindowSize?
Где нужно дописать, чтоб когда я открываю этот тест, так мне бы в окне показывало это ( через.

В терминале когда ввожу Is , пишет что команда не найдена
Прошу извинить если вопрос сильно донный, просто только поставил еще до конца не разобрался

Источник

Оцените статью
Adblock
detector