사용하려는 절대 경로가있는 패치가 있습니다. 즉, 처음 몇 줄은 다음과 같습니다.
--- /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