Eu tenho um patch com caminhos absolutos que desejo usar. isto é, as primeiras linhas são as seguintes.
--- /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
No entanto, ele falhará, a menos que eu esteja no diretório raiz.
~$ 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 uma maneira de fazer patch
uso do caminho absoluto com qualquer diretório de trabalho?
patch
comando./tmp/foo
. Estou mais interessado em uma resposta genérica que se aplica apatch
.Respostas:
Observando o código fonte do patch GNU, esse comportamento está embutido desde a versão 2.7. No patch 2.7.1 do GNU, apenas os caminhos relativos que não contêm
..
são aceitos, a menos que o diretório atual seja o diretório raiz.Para aplicar um patch contendo caminhos absolutos, você pode usar
Nas versões recentes do patch GNU, você pode simplesmente
fonte
cd /usr
também falhará, apesar dos arquivos de destino estarem nesse diretório./
, rejeite qualquer caminho absoluto ou caminho que contenha um..
componente.sudo patch -d/ -p0 <foo.patch