用于安装软件包(如果尚未安装)的 Bash 脚本(来自包含许多软件包的目录)- Fedora 17

用于安装软件包(如果尚未安装)的 Bash 脚本(来自包含许多软件包的目录)- Fedora 17

我有一个充满 rpm 的目录(及其依赖项)。目前我正在执行yum localinstall ./packages_directory/*.rpm安装其中的所有软件包。它会自动跳过已经安装的。但是,如果所有软件包都已安装,则这会花费太长时间。我希望它能够更快地安装软件包。我认为的另一种选择是检查这些软件包中的每一个是否已经安装(也许使用其他命令)。如果它们没有安装,那么我对它们运行本地安装。有人可以帮我写这个脚本吗?或者也许是更快的替代方案。

答案1

我为它想出了一个脚本(Fedora 17)。假设当前脚本运行目录也是rpm所在目录:

install_packages(){
    echo "Installing/Checking Fedora packages. Process may take a while..."
    for i in *
    do
        if test -f "$i" #Test if it is a file
        then
           i=$(basename $i) #Remove parent directory part of the string
           PACKAGE_NAME=${i::-4} #Remove .rpm from the end of file name
           if rpm -q $PACKAGE_NAME | grep "not installed" > /dev/null #If package not yet installed
           then
            echo "Installing $i ..."
                yum localinstall ./fc17/"$i" -y > /dev/null #Install this package 
           fi
        fi
    done    
    echo "Packages checked/installed"


}

对于 Fedora 22 只需替换yum localinstalldnf install

相关内容