Ich habe einen Patch mit absoluten Pfaden, die ich verwenden möchte. d.h. 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, es sei denn, ich befinde mich im Stammverzeichnis.
~$ 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
zu erstellen Verwenden Sie den absoluten Pfad mit einem beliebigen Arbeitsverzeichnis?
Akzeptierte Antwort:
Wenn man sich den Quellcode des GNU-Patches ansieht, ist dieses Verhalten seit Version 2.7 eingebaut. Ab GNU-Patch 2.7.1 nur noch relative Pfade, die ..
nicht enthalten werden akzeptiert, es sei denn, das aktuelle Verzeichnis ist das Stammverzeichnis.
Um einen Patch anzuwenden, der absolute Pfade enthält, können Sie
verwenden(cd / && sudo patch -p0) <foo.patch
In neueren Versionen von GNU Patch können Sie einfach
sudo patch -d/ -p0 <foo.patch