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