Ho una patch con percorsi assoluti che desidero utilizzare. cioè le prime righe sono le seguenti.
--- /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
Tuttavia, fallisce a meno che non sia nella directory principale.
~$ 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
C'è un modo per creare patch
utilizzare il percorso assoluto con qualsiasi directory di lavoro?
Risposta accettata:
Osservando il codice sorgente della patch GNU, questo comportamento è integrato dalla versione 2.7. A partire dalla patch GNU 2.7.1, solo i percorsi relativi che non contengono ..
sono accettati, a meno che la directory corrente non sia la directory principale.
Per applicare una patch contenente percorsi assoluti, puoi usare
(cd / && sudo patch -p0) <foo.patch
Nelle versioni recenti della patch GNU, puoi semplicemente
sudo patch -d/ -p0 <foo.patch