GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie wendet man einen -p0-Patch aus einem beliebigen Arbeitsverzeichnis an?

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

Linux
  1. Wie aktualisiere ich Node.js von 4.2 auf 6.11.0 unter Ubuntu 16.04?

  2. Wie erstellt und wendet man einen SVN-Patch an?

  3. Wie führe ich ein .sh-Skript von einem beliebigen Pfad in einem Terminal aus?

  4. sudo -i aber aktuelles Arbeitsverzeichnis beibehalten

  5. Wie verkette ich Boot von Grub zu Syslinux?

So erstellen Sie ein Video aus Bildern unter Linux

Wie drucke ich das Arbeitsverzeichnis mit dem Linux-Befehl pwd?

Wie füge ich ein virtuelles Verzeichnis von SolidCP hinzu?

Wie füge ich ein virtuelles Verzeichnis von WebsitePanel 2.1 hinzu?

So migrieren Sie das HOME-Verzeichnis unter Linux

Wie verschiebt man alle Dateien vom aktuellen Verzeichnis in das obere Verzeichnis?