Linux 脚本查看文件夹中哪些包没有下载

Linux 脚本查看文件夹中哪些包没有下载

我正在尝试找到一种方法来解决我面临的问题。我在工作中有一个离线独立服务器。它没有连接到互联网,我们每个月都必须手动修补服务器。我们将要从另一台 Linux 服务器(相同操作系统)下载的内容的软件包转移到一个文件夹中。该文件夹有 50-100 个 rpm 软件包,我们将其转移到独立服务器的主文件夹中。

我们运行以下命令来更新独立服务器,以每月对其进行升级。

#cd November-os-updates

#yum clean all

#yum update *.rpm --disablerepo=*

什么脚本可以让我检查Novell-os-updates中的所有rpm包是否安装/升级成功?如果一切成功,它会说所有软件包都已成功安装!如果有软件包由于某种原因没有升级,它会显示类似:“(软件包名称)未安装!”。这将极大地帮助我确保我们正确地修补它。过去,曾出现过软件包未更新的情况,这导致了一个大问题。

答案1

8.2.2.列出套餐红帽部署指南

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

相关内容