Использование опции патча -p, когда новый и старый содержат разное количество подкаталогов

Похоже, вы пытаетесь извлечь содержимое tar-шара в каталог /media/asd/LinuxABC/?
Если это так, вы должны использовать tar вот так:

/Downloads$ sudo tar -C /media/asd/LinuxABC/ -xvzf elasticsearch-7.5.1-linux-x86_64.tar.gz  

В приведенной выше команде -Cуказывает tar перейти в каталог. Затем -xvzfуказывает tar извлечь указанный файл.

Команда, которую вы использовали, указывает tarискать файл/media/asd/LinuxABCвнутри tar-шара и извлекать его.

Также переключатель tотображает содержимое tar ball без извлечения. Если вы пытаетесь извлечь tar-шар вместо вывода его содержимого, вам не следует использовать этот переключатель.
Вы должны использовать переключатель xвместо t.

1
15.01.2021, 20:44
1 ответ

Or should I expect a patch to only apply if the number of leading directories is the same for the +++ and ---?

Да, man patchупоминает, что:

   If the recipient is supposed to use the -pN option, do not send  output
   that looks like this:

          diff -Naur v2.0.29/prog/README prog/README
          --- v2.0.29/prog/README   Mon Mar 10 15:13:12 1997
          +++ prog/README   Mon Mar 17 14:58:22 1997

   because  the two file names have different numbers of slashes, and dif‐
   ferent versions of patch interpret  the  file  names  differently.   To
   avoid confusion, send output that looks like this instead:

          diff -Naur v2.0.29/prog/README v2.0.30/prog/README
          --- v2.0.29/prog/README   Mon Mar 10 15:13:12 1997
          +++ v2.0.30/prog/README   Mon Mar 17 14:58:22 1997

Здесь вы можете нормализовать патч и применить его вот так:

sed 's,--- /home/user/foo/,--- /data/myproj/project/version/foo/,' orig.patch | patch <other_patch_options>
2
18.03.2021, 22:36

Теги

Похожие вопросы