シェル合成アップグレードパッケージのプロセス

1. いくつかの名前と変数を定義します

name=name      #定义名称
unshname=uninstall${name}.sh   #卸载脚本文件的功能
appname=appname             
installpath=/opt/${name}     #安装的路径,并且给被安装的文件命名

2. $unshname という名前のファイルがあるかどうかを確認し、存在する場合は、そのファイルを実行して古いバージョンのソフトウェアをアンインストールします。

if [ -f "/usr/bin/$unshname" ];then
    echo "=========== 卸载旧版本软件 ============="  
    /usr/bin/$unshname  
    echo "====================================="  
    echo ""  
fi

3. 圧縮パッケージ内のインストール ファイルを一時ファイルに解凍します。

  • -n: 編集した行のみを出力します。
  • -e: 続く引数は、実行する sed スクリプトです。
  • '1,/^exit 0/!p': "最初の行から '^exit 0' に一致する最初の行までのすべての行を出力します。" この例では、シェル スクリプトの「exit 0」より前のコンテンツを抽出します。
  • $0: は、現在実行中のスクリプト ファイルの名前を表す特別な変数です。
  • ${tmpfile_name}sed -n -e '1,/^exit 0/!p' $0 > ${tmpfile_name} 2>/dev/null は、シェル スクリプトの 'exit 0' より前の内容を抽出し、一時ファイル中央に書き込むことを意味します。また、発生したエラーは無視されます。
tmpfile_name=/tmp/${name}.tgz   #定义了临时文件
echo -e "\t                     #准备安装软件
  
#从当前脚本中分离出压缩包部分,写入到临时文件${tmpfile_name}
sed -n -e '1,/^exit 0/!p' $0 > ${tmpfile_name} 2>/dev/null

tar xzf ${tmpfile_name} -C /tmp #解压压缩包
rm -rf ${tmpfile_name}          #删除压缩包
cd /tmp                         #切换到放置压缩包的目录中

4. パスが存在するかどうかを確認し$installpath、存在しない場合はパスを作成します

if [ ! -d $installpath ] ;then
    mkdir -p $installpath
fi

5. ライブラリファイルとツールファイルをインストールする

sed -i '1i/${インストールパス}' ${名前}/$configname

  • -i: 端末や別のファイルに出力するのではなく、元のファイルに直接変更を加えます。
  • '1i/${installpath}':1iは最初の行の前に挿入することを意味し、${installpath}その値が指定されたファイルに挿入される変数です。
  • ${name}/$configname: これは、変更するファイルへのパスです。${name}そして$configname、その値がコンテキストに依存する変数でもあります。

したがって、このコマンドの機能は、ファイルの最初の行の前に${installpath}config の値を挿入し、変更した内容を ${name}/$configname に保存し直すことです。${name}/$configname

echo -e "\t 安装库文件和工具软件" 
configname=${name}.conf                          #配置文件的名称
touch ${name}/$configname                        #创建一个空的配置文件
sed -i '1i/${installpath}' ${name}/$configname   #将前面文件的内容输入到第二个文件的第一行前面
cp ${name}/$configname /etc/ld.so.conf.d/        #将配置文件复制到/etc/ld.so.conf.d/目录
sed -i '1i/${installpath}' ${name}/$configname
cp ${name}/$configname /etc/ld.so.conf.d/
ldconfig                                         #ldconfig命令重新加载库文件
cp -r ${name}/* $installpath                #将${name}文件夹的所有文件复制到${installpath}。

6.一時フォルダー${name},输出“安装完成「」を削除します。

rm -rf ${name}
echo -e "\t 安装完成"  
exit 0

Supongo que te gusta

Origin blog.csdn.net/weixin_45981798/article/details/131778219
Recomendado
Clasificación