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.
bannerAds