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:
Другая методика вызова команды 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»
Анализ вышеприведённого примера:
Данный пример был создан с использованием следующей команды 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 , пишет что команда не найдена
Прошу извинить если вопрос сильно донный, просто только поставил еще до конца не разобрался