Saya memiliki tambalan dengan jalur absolut yang ingin saya gunakan. yaitu beberapa baris pertama adalah sebagai berikut.
--- /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
Namun, gagal kecuali saya ada di direktori root.
~$ 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
Apakah ada cara untuk patch
menggunakan jalur absolut dengan direktori yang berfungsi?
patch
perintah./tmp/foo
. Saya lebih tertarik pada jawaban umum yang berlaku untukpatch
.Jawaban:
Melihat kode sumber tambalan GNU, perilaku ini sudah ada sejak versi 2.7. Pada GNU patch 2.7.1, hanya jalur relatif yang tidak mengandung
..
yang diterima, kecuali direktori saat ini adalah direktori root.Untuk menerapkan tambalan yang berisi jalur absolut, Anda dapat menggunakan
Di versi terbaru dari patch GNU, Anda dapat dengan mudah
sumber
cd /usr
juga gagal, meskipun file target berada di bawah direktori ini./
, maka tolak semua jalur absolut atau jalur yang mengandung..
komponen.sudo patch -d/ -p0 <foo.patch