GNU/Linux >> Tutoriels Linux >  >> Linux

Comment appliquer un correctif -p0 à partir de n'importe quel répertoire de travail ?

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

Linux
  1. Comment utiliser Wget pour télécharger récursivement des fichiers depuis un répertoire web ?

  2. Comment mettre à niveau vers Debian 11 à partir de Debian 10

  3. Comment exécuter un programme avec un répertoire de travail différent de l'actuel, à partir du shell Linux ?

  4. Comment créer et appliquer un patch SVN ?

  5. Comment puis-je exclure un répertoire de la commande ls

Comment créer une vidéo à partir d'images sous Linux

Comment imprimer le répertoire de travail à l'aide de la commande Linux pwd ?

Comment mettre à niveau Node.js de 4.2 à 6.11.0 sur Ubuntu 16.04 ?

Comment ajouter un répertoire virtuel depuis SolidCP ?

Comment ajouter un répertoire virtuel depuis WebsitePanel 2.1 ?

Comment migrer le répertoire HOME sous Linux