У меня есть патч с абсолютными путями, которые я хочу использовать. т.е. первые несколько строк следующие.
--- /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
использовать абсолютный путь с любым рабочим каталогом?
patch
команде./tmp/foo
. Меня больше интересует общий ответ, который относится кpatch
.Ответы:
Глядя на исходный код патча GNU, это поведение встроено начиная с версии 2.7. Начиная с патча GNU 2.7.1,
..
принимаются только относительные пути, не содержащие , если текущий каталог не является корневым.Чтобы применить патч, содержащий абсолютные пути, вы можете использовать
В последних версиях патча GNU вы можете просто
источник
cd /usr
также не удалось, несмотря на то, что целевые файлы находятся в этом каталоге./
, то отклоните любой абсолютный путь или путь, содержащий..
компонент.sudo patch -d/ -p0 <foo.patch