2019年10月10日 CentOS 7.7 > 补丁 > my_patch_191010_exec > 符号链接文件兼容修补脚本(已在CentOS 6.9和CentOS 7.7上进行了测试)
CentOS release 6.9 (Final)
CentOS Linux release 7.7.1908 (Core)
相关
在进行将WRF(天气研究和预报模型)系统从CentOS6.9迁移到CentOS7.7的调查中发现的问题。
-
- 2019-10-10 CentOS 7.7のmv > StackOverflow掲載とは異なる動作 > シンボリックリンクは解除されない
- CentOS 6.9 | CentOS7.7 > patchコマンド > シンボリックリンクファイルへの振舞いが異なる
简述
-
- CentOS 6.9で使用していたスクリプトがCentOS 7.7で動かなくなった
-
- patchコマンドの振る舞いが変わったことによるようだ
- patchコマンドをCentOS 6.9とCentOS 7.7両方で使えるように独自のpatchコマンドを実装した
单独的patch命令
#/usr/bin/env bash
set -eu
#echo "$#"
if [ $# -lt 2 ]; then
echo "[cmd] [file] [patch_file]"
echo ""
echo "about: patch command to work on CentOS 6.9 and 7.7"
echo " On CentOS 7.7, symbolic file is not patched by default"
echo " making XXX.rej file, instead."
echo ""
exit 0
fi
echo "original: $1"
echo "working: wrk.$1"
mv $1 wrk.$1
cp wrk.$1 $1
rm wrk.$1
patch $1 $2
使用示例
准备
创建样本文件。
$echo "TEST" > test_1
$echo "TESS" > test_2
$diff test_1 test_2 > diff.1to2
给予my_patch_191010_exec文件执行权限。
$chmod +x my_patch_191010_exec
选项1:带有文件指定
用符号链接试着创建一个名为LN_TEST的文件。
$ln -fs test_1 LN_TEST
其中一个例子是应用补丁。
$ ./my_patch_191010_exec LN_TEST diff.1to2
original: LN_TEST
working: wrk.LN_TEST
patching file LN_TEST
LN_TEST是一个普通文件,而不是一个符号链接文件,并且其内容是TESS。
使用案例2 > 不需要指定文件
$ ./my_patch_191010_exec
[cmd] [file] [patch_file]
about: patch command to work on CentOS 6.9 and 7.7
On CentOS 7.7, symbolic file is not patched by default
making XXX.rej file, instead.