我知道这是针对 Linux 程序的补丁,但如果我尝试使用它,就会出现以下错误:
补丁第 4 行缺少统一差异标头
第 5 行的补丁格式错误:退出
相反,我只想去掉中间人并手动编辑,但我不知道任何符号的含义。
a/com.ibm.celldt.simulator.profile.default_3.1.0.200809010950/simulator_init.tcl
+ b/com.ibm.celldt.simulator.profile.default_3.1.0.200809010950/simulator_init.tcl
@@ -701,9 +701,9 @@ proc CellDT_ShutdownComplete { args } {
quit
}
-mysim trigger set console "The system is going down for system halt NOW!" CellDT_ShutdownNotified
-mysim trigger set console "INIT: Switching to runlevel: 0" CellDT_ShutdownStarted
-mysim trigger set console "INIT: no more processes left in this runlevel" CellDT_ShutdownComplete
+mysim trigger set console "init: rcS main" CellDT_ShutdownNotified
+mysim trigger set console "Sending all processes the TERM signal" CellDT_ShutdownStarted
+mysim trigger set console "md: stopping all md devices." CellDT_ShutdownComplete
proc writeConsole { t } {
mysim console create console_id in string $t
@@ -740,8 +740,8 @@ proc CellDT_BootNearlyReady { args } {
}
mysim trigger set console "Starting Linux" CellDT_BootedBios
-mysim trigger set console "Welcome to Fedora Core" CellDT_BootedLinux
-mysim trigger set console "INIT: Entering runlevel: 2" CellDT_BootNearlyReady
+mysim trigger set console "Welcome to Fedora" CellDT_BootedLinux
+mysim trigger set console "Starting login process" CellDT_BootNearlyReady
# # CONFIGURATION:
答案1
您的输出表明补丁程序没有正确解释以“quit”开头的行。添加的每一行都需要以“+”开头
您从哪里获得此文件?这些工具将假定并操作“unix 样式”换行符。这意味着您要比较和修补的所有文件都必须仅具有 LF 换行符,而不是 Windows/DOS 标准 CRLF 换行符。尝试:
dos2unix -d filename
答案2
统一差异格式:基本上,“-”表示删除的行,“+”表示添加的行。因此,您可以根据需要手动应用补丁。但最好的办法是解决根本问题。您提供的文件段是完整文件吗?如果是 - 则表明 diff 标头信息已损坏/丢失,您需要返回创建此补丁的源/工具/流程。
答案3
一个相当常见的问题是将版本 x.yy.zzz 的补丁应用到版本 x.yy.zza。也就是说,补丁文件高度特定于源代码的特定版本。我强烈建议您发布您正在修补的实际程序和补丁的确切来源。
答案4
在我看来,您的补丁有两个主要字符“ +
”和“ -
”,但缺少上下文标记“ ”(空格)。
可能发生的情况是,您从某个网站复制并粘贴了内容,而您用来填写文本并将其保存到文件中的编辑器丢失了前导空格。这有点问题,但可以修复。
我个人更喜欢这种save (link) as
方法,因为它可以 99.95% 的时间避免手动后期处理工作。