É possível obter patch para arquivos de patch em $ HOME e sistema em um único comando e arquivo?

0

Eu criei o seguinte arquivo de patch usando diff -u file1 file2 | file.patch e, em seguida, editei a linha --- e alterei o caminho:

ArkOS_Dev_Openbox.patch
+++ ~/.config/openbox/menu.xml  2016-07-28 21:21:55.683952870 +0200
@@ -5,7 +5,7 @@
 <item label="Terminal"><action name="Execute"><execute>lxterminal</execute></action></item>
 <item label="Browser"><action name="Execute"><execute>firefox</execute></action></item>
 <item label="File Manager"><action name="Execute"><execute>spacefm</execute></action></item>
-<item label="Editor"><action name="Execute"><execute>geany</execute></action></item>
+<item label="Editor"><action name="Execute"><execute>gksu geany</execute></action></item>

 <separator/>
 <menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/arch-applications.menu" />

+++ /usr/share/applications/geany.desktop.bak   2016-07-29 22:43:43.483359679 +0200
@@ -130,7 +130,7 @@
 Comment[vi]=Một IDE nhanh và nhẹ nhàng dùng GTK+
 Comment[zh_CN]=GTK+ 编写的轻快的 IDE
 Comment[zh_TW]=一個快速且輕巧的 GTK+ 整合開發環境
-Exec=geany %F
+Exec=gksu geany %F
 Icon=geany
 Terminal=false
 Categories=GTK;Development;IDE;

E eu tento executar este patch com o seguinte comando.

sudo patch -d / -p0 < ArkOS_Dev_Openbox.patch

Isso resulta no primeiro arquivo não encontrado devido ao til. Eu tentei usar $ HOME também sem sucesso.

Acho que estou tentando usar os patches de uma forma que eu acho que não são para eles, um ambiente de área de trabalho em vez de um pacote.

Então, minha pergunta é: posso usar patches dessa maneira? Devo usar patches dessa maneira? Se sim como? Se não o que devo usar em vez disso?

    
por Folatt 30.07.2016 / 09:28

1 resposta

1

Uma rápida checagem das fontes mostra que o patch GNU, por exemplo, não expande o til para o lar. diretórios. É provável que nenhuma das outras implementações o faça, já que a maioria - todas, mas talvez algumas versões Unix de código fechado - são baseadas em versões anteriores do patch GNU (conforme evoluíram de Larry Wall's original).

Você poderia lidar com isso por um script sed, por exemplo, algo assim:

sed -e "s,~/,$HOME/," ArkOS_Dev_Openbox.patch | sudo patch -d / -p0

Leitura adicional:

por 30.07.2016 / 13:51

Tags