CentOS 6.9 | CentOS7.7 > patchコマンド > シンボリックリンクファイルへの振舞いが異なる | --follow-symlinksオプション


動作環境
A. CentOS release 6.9 (Final)
  patch v2.6
B. CentOS Linux release 7.7.1908 (Core)
  patch (GNU patch 2.7.1)

概要

WRF (Weather Research and Forecasting Model)のシステムをCentOS6.9からCentOS7.7へ移行中の調査にて気づいた事項。
patchコマンドの振る舞いが異なる。

シンボリックリンクファイルへのpatchをしたときに、シンボリックリンクが切れてファイルが生成される振る舞いであった。
その振る舞いに基づいて作ったスクリプトがCentOS 7.7ではエラーになる。

CentOS 6.9

$ patch namelist.wps CODE_170613/diff_FNLtoSST 
patching file namelist.wps
Reversed (or previously applied) patch detected!  Assume -R? [n] 

CentOS 7.7

$ patch  namelist.wps CODE_170613/diff_FNLtoSST 
File namelist.wps is not a regular file -- refusing to patch
1 out of 1 hunk ignored -- saving rejects to file namelist.wps.rej

対応

対応として、「シンボリックリンクに直接patchを当てる方法はやめる」。

関連

シンボリックリンクをはずす方法として以下について知った。

補足

CentOS 7.7のpatchコマンドにはシンボリックリンクを扱うための新しいパラメータ「--follow-symlinks」がある。
これを使うことでCentOS 7.7では動くかもしれないが、現在の調査ではCentOS 6.9とCentOS 7.7で同一のスクリプトを動かす必要があるので、その選択肢は選択していない。