J'ai un patch avec des chemins absolus que je souhaite utiliser. c'est-à-dire que les premières lignes sont les suivantes.
--- /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
Cependant, cela échoue sauf si je suis dans le répertoire racine.
~$ 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
Existe-t-il un moyen de créer un patch
utiliser le chemin absolu avec n'importe quel répertoire de travail ?
Réponse acceptée :
En regardant le code source du patch GNU, ce comportement est intégré depuis la version 2.7. Depuis le patch GNU 2.7.1, seuls les chemins relatifs ne contenant pas ..
sont acceptés, sauf si le répertoire courant est le répertoire racine.
Pour appliquer un patch contenant des chemins absolus, vous pouvez utiliser
(cd / && sudo patch -p0) <foo.patch
Dans les versions récentes du patch GNU, vous pouvez simplement
sudo patch -d/ -p0 <foo.patch