簡単なパッチを作成して適用して修正しようとしていますGradle関連のエラー。
ファイル(/usr/bin/gradle)を作業ディレクトリにコピーして変更しました。次にパッチを作成します。
diff -u /usr/bin/gradle gradle > gradle.patch
それからそれを適用してみます。
sudo patch < gradle.patch
Reversed (or previously applied) patch detected! Assume -R? [n]
とにかく続けると失敗します。ファイルを反転するパッチを作成しようとしましたが、この場合は「成功的に」適用されますが、何もしません。
結果のパッチは次のとおりです。
--- /usr/bin/gradle 2013-09-09 16:47:58.000000000 -0400
+++ gradle 2015-10-13 11:39:36.005269565 -0400
@@ -67,7 +67,8 @@
CLASSPATH=$APP_HOME/lib/gradle-launcher-1.4.jar
-export JAVA_HOME=/usr/lib/jvm/default-java
+# commenting out as per (https://stackoverflow.com/a/22309017)
+# export JAVA_HOME=/usr/lib/jvm/default-java
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
パッチの上部にあるファイルパスを/usr/bin/gradleに編集しようとしましたが、役に立ちませんでした。
また、-p0を渡してみました。この場合、以下が提供されます。
Ignoring potentially dangerous file name /usr/bin/gradle
can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- /usr/bin/gradle 2013-09-09 16:47:58.000000000 -0400
|+++ /usr/bin/gradle 2015-10-13 11:39:36.005269565 -0400
--------------------------
File to patch: /usr/bin/gradle
File /usr/bin/gradle is not a regular file -- refusing to patch
1 out of 1 hunk ignored -- saving rejects to file /usr/bin/gradle.rej
この場合、ファイルを指定しても失敗します。
簡単な作業のようですが、私が何を間違っているのでしょうか?
答え1
正しいファイルをパッチする必要があります。
呼び出す方法に応じて、リバースパッチを正しく想定して新しいファイルをパッチしようとします。
以前のバージョンのファイルを現在のディレクトリにコピーすると、パッチが適用されます。
テスト関連-p0
:/usr/bin/gradleを変更する権限がありますか? /usr/binにファイルを生成する権限がありますか?
また、パッチするファイル名を取得するには他の規則があることに注意してください。
使用されるルールは、gpatch
元のパッチおよびPOSIXパッチ標準とは異なります。
「一般ファイルではありません」というメッセージは専用ですgpatch
。ファイルをリストします/usr/bin/gradle
。ファイルが通常のファイルではない場合にのみメッセージが印刷されるため、何かが奇妙に見えます。
したがって、解決策は次のとおりです。
patch
通常のファイルのみがパッチされますが、パッチするファイルはシンボリックリンクです。
現在のディレクトリに通常の(以前のバージョン)ファイルのコピーがある場合、パッチは期待どおりに機能します。
注:パッチするファイル名を取得する一般的な規則は、最も短い名前を見つけることです。一般的な命名規則は、次を使用することです。
file.orig
そして
file