Mam łatkę z bezwzględnymi ścieżkami, których chcę użyć. tzn. pierwsze kilka wierszy jest następujące.
--- /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
Jednak kończy się niepowodzeniem, chyba że jestem w katalogu głównym.
~$ 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
Czy istnieje sposób patch
wykorzystania ścieżki bezwzględnej w dowolnym katalogu roboczym?
patch
poleceniu./tmp/foo
. Bardziej interesuje mnie ogólna odpowiedź, która dotyczypatch
.Odpowiedzi:
Patrząc na kod źródłowy łatki GNU, to zachowanie jest wbudowane od wersji 2.7. Począwszy od poprawki GNU 2.7.1,
..
akceptowane są tylko ścieżki niezawierające , chyba że katalog bieżący jest katalogiem głównym.Aby zastosować łatkę zawierającą ścieżki bezwzględne, możesz użyć
W najnowszych wersjach łatki GNU możesz po prostu
źródło
cd /usr
również się nie powiedzie, mimo że pliki docelowe znajdują się w tym katalogu./
, to odrzuć ścieżkę bezwzględną lub ścieżkę zawierającą..
składnik.sudo patch -d/ -p0 <foo.patch