Ich habe einen Patch mit absoluten Pfaden, die ich verwenden möchte. dh die ersten paar Zeilen lauten wie folgt.
--- /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml 2014-10-10 18:47:23.000000000 +1100
+++ /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml.mod 2014-11-11 09:44:17.786200477 +1100
Es schlägt jedoch fehl, wenn ich mich nicht im Stammverzeichnis befinde.
~$ cd
~$ sudo patch -i /tmp/fix_kde_icons.patch -p0
Ignoring potentially dangerous file name /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml
Ignoring potentially dangerous file name /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml.mod
can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
...
~$ cd /tmp
/tmp$ sudo patch -i /tmp/fix_kde_icons.patch -p0
... #same error as above
/tmp$ cd /usr
/usr$ sudo patch -i /tmp/fix_kde_icons.patch -p0
... #same error as above
/usr$ cd /
/$ sudo patch -i /tmp/fix_kde_icons.patch -p0
patching file /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml
Gibt es eine Möglichkeit, patch
den absoluten Pfad für jedes Arbeitsverzeichnis zu verwenden?
patch
Befehl Zielpfade angeben zu müssen ./tmp/foo
. Ich bin mehr an einer generischen Antwort interessiert, die zutrifftpatch
.Antworten:
Wenn man sich den Quellcode des GNU-Patches ansieht, ist dieses Verhalten seit Version 2.7 eingebaut. Ab GNU-Patch 2.7.1 werden nur relative Pfade
..
akzeptiert, die keine enthalten , es sei denn, das aktuelle Verzeichnis ist das Stammverzeichnis.Mit können Sie einen Patch anwenden, der absolute Pfade enthält
In neueren Versionen von GNU Patch können Sie einfach
quelle
cd /usr
auch fehlgeschlagen, obwohl sich die Zieldateien in diesem Verzeichnis befinden./
, lehnen Sie alle absoluten Pfade oder Pfade ab, die eine..
Komponente enthalten.sudo patch -d/ -p0 <foo.patch