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, il é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 d' patch
utiliser le chemin absolu avec n'importe quel répertoire de travail?
patch
commande./tmp/foo
. Je suis plus intéressé par une réponse générique qui s'applique àpatch
.Réponses:
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, à moins que le répertoire courant ne soit le répertoire racine.Pour appliquer un patch contenant des chemins absolus, vous pouvez utiliser
Dans les versions récentes du patch GNU, vous pouvez simplement
la source
cd /usr
également échoué, malgré le fait que les fichiers cibles se trouvent sous ce répertoire./
, alors rejetez tout chemin absolu ou chemin contenant un..
composant.sudo patch -d/ -p0 <foo.patch