GNU/Linux >> Linux の 問題 >  >> Linux

任意の作業ディレクトリから-p0パッチを適用する方法は?

使用したい絶対パスのパッチがあります。つまり、最初の数行は次のとおりです。

--- /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

ただし、ルートディレクトリにいない限り失敗します。

~$ 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

patchを作成する方法はありますか 作業ディレクトリで絶対パスを使用しますか?

承認された回答:

GNUパッチのソースコードを見ると、この動作はバージョン2.7以降に組み込まれています。 GNUパッチ2.7.1の時点では、..を含まない相対パスのみ 現在のディレクトリがルートディレクトリでない限り、受け入れられます。

絶対パスを含むパッチを適用するには、

を使用できます。
(cd / && sudo patch -p0) <foo.patch

GNUパッチの最近のバージョンでは、簡単に

sudo patch -d/ -p0 <foo.patch

Linux
  1. Wgetを使用してWebディレクトリからファイルを再帰的にダウンロードするにはどうすればよいですか?

  2. Ubuntu 16.04でNode.jsを4.2から6.11.0にアップグレードする方法は?

  3. 親プロセスの作業ディレクトリを設定するにはどうすればよいですか?

  1. コマンドラインから smtp が機能しているかどうかを確認する方法 (Linux)

  2. ls コマンドからディレクトリを除外するにはどうすればよいですか

  3. ディレクトリから最近削除されたファイルを一覧表示する方法は?

  1. Ubuntu 18.04 で Zabbix を 3.4 から 4.0 にアップグレードする方法:速くて簡単

  2. Linux シェルから、現在とは異なる作業ディレクトリでプログラムを実行するにはどうすればよいですか?

  3. SVNパッチを作成して適用するには?