사용하고 싶은 절대 경로가 포함된 패치가 있습니다. 즉, 처음 몇 줄은 다음과 같습니다.
--- /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
작업 디렉터리에서 절대 경로를 사용하는 방법이 있나요 ?
답변1
GNU 패치의 소스 코드를 보면 이 동작은 버전 2.7부터 내장되어 있습니다. GNU 패치 2.7.1부터 ..
현재 디렉터리가 루트 디렉터리가 아닌 이상 포함되지 않은 상대 경로만 허용됩니다.
절대 경로가 포함된 패치를 적용하려면 다음을 사용할 수 있습니다.
(cd / && sudo patch -p0) <foo.patch
최신 버전의 GNU 패치에서는 간단히 다음을 수행할 수 있습니다.
sudo patch -d/ -p0 <foo.patch
답변2
최소한 GNU 패치 2.7.6에서는 파일 이름을 지정할 수 있습니다.
patch /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml /tmp/fix_kde_icons.patch