フォルダ内のどのパッケージがダウンロードされていないかを確認するLinuxスクリプト

フォルダ内のどのパッケージがダウンロードされていないかを確認するLinuxスクリプト

私が直面している問題を解決する方法を見つけようとしています。職場にオフラインのスタンドアロンサーバーがあります。インターネットに接続していないため、毎月手動でサーバーにパッチを適用する必要がありました。別のLinuxサーバー(同じオペレーティングシステム)からダウンロードしたいコンテンツパッケージをフォルダに移動します。このフォルダには、スタンドアロンサーバーのデフォルトフォルダに転送される50〜100rpmパッケージがあります。

次のコマンドを実行して、スタンドアロンサーバーを更新して毎月アップグレードします。

#cd November-os-updates

#yum clean all

#yum update *.rpm --disablerepo=*

Novell-os-updatesのすべてのrpmパッケージが正常にインストール/アップグレードされたことを確認できるスクリプトは何ですか?すべてが成功すると、すべてのパッケージが正常にインストールされたというメッセージが表示されます。何らかの理由でパッケージがアップグレードされない場合は、「(パッケージ名)がインストールされていません!」などの内容が表示されます.これは正しくパッチを適用するのに大きな助けになります。過去にはパッケージが更新されず、大きな問題が発生した場合がありました。

ベストアンサー1

~から8.2.2。パッケージのリスト~のRed Hat 導入ガイド:

yum list available

アクティブなすべてのリポジトリで利用可能なすべてのパッケージを一覧表示

また、8.2.3。パッケージ情報の表示~の同じガイドまた便利です:

たとえば、abrt パッケージに関する情報を表示するには、次のように入力します。

yum info abrt
...
Name       : abrt
Arch       : x86_64
Version    : 1.0.7
Release    : 5.el6
Size       : 578 k
Repo       : installed
From repo  : rhel
...

November-os-updates次の解決策が有効かどうかを教えてくださいyum list available

#!/bin/bash

# - [ change working directory ]
cd 'path-to'/November-os-updates

# - [ define variables ]
ALL_PKG=($(yum list available))
INSTLLD=($(ls ./*))

# - [ remove cache of enabled repos ]
yum clean all

# - [ update every currently installed package ]
yum update *.rpm --disablerepo=*

# - [ verify installed packages ]
for ((i=0; i <= "${#ALL_PKG[@]}"; i++)); do
    for ((j=0; j <= "${#INSTLLD[@]}"; j++ )); do

        ## [1] - if installed, print [success]
        if [[ "${INSTLLD[j]}" == "${ALL_PKG[i]}"'.rpm' ]]; then
            echo "${INSTLLD[j]} - success"

        ## [2] - if not installed print [failure]
        else
            echo "${INSTLLD[j]} - failure"

        ## [3] - END
        fi

    done
done

おすすめ記事