我有一个充满 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 localinstall
为dnf install