태그 보관물: patch

patch

작업 디렉토리에서 -p0 패치를 어떻게 적용 할 수 있습니까? 09:44:17.786200477 +1100 그러나

사용하려는 절대 경로가있는 패치가 있습니다. 즉, 처음 몇 줄은 다음과 같습니다.

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

답변