GNU/Linux >> Znalost Linux >  >> Linux

Jak aplikovat opravu -p0 z libovolného pracovního adresáře?

Mám patch s absolutními cestami, které chci použít. tj. prvních několik řádků je následujících.

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

Nicméně selže, pokud nejsem v kořenovém adresáři.

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

Existuje způsob, jak vytvořit patch použít absolutní cestu s jakýmkoli pracovním adresářem?

Přijatá odpověď:

Při pohledu na zdrojový kód GNU patche je toto chování zabudováno od verze 2.7. Od GNU patche 2.7.1 pouze relativní cesty neobsahující .. jsou akceptovány, pokud aktuální adresář není kořenovým adresářem.

Chcete-li použít opravu obsahující absolutní cesty, můžete použít

(cd / && sudo patch -p0) <foo.patch

V posledních verzích opravy GNU můžete jednoduše

sudo patch -d/ -p0 <foo.patch

Linux
  1. Jak upgradovat Zabbix z 3.4 na 4.0 na Ubuntu 18.04:Fast &Easy

  2. Jak zkontrolovat, zda smtp funguje z příkazového řádku (Linux)

  3. Jak mohu vyloučit adresář z příkazu ls

  1. Jak upgradovat na Debian 11 z Debianu 10

  2. Jak upgradovat Node.js z 4.2 na 6.11.0 na Ubuntu 16.04?

  3. Jak zobrazit seznam nedávno smazaných souborů z adresáře?

  1. Jak spustím program s jiným pracovním adresářem, než je aktuální, z prostředí Linux?

  2. Jak nastavím pracovní adresář nadřazeného procesu?

  3. Jak vyrobit a aplikovat SVN patch?