我制作了一个bash脚本来在Linux系统上安装软件包。 我可以使用 4 个软件包来安装该软件:
我知道何时在哪个 Linux 服务器上手动安装哪个软件包,但我想“自动”(在我的 bash 脚本中)找出我必须安装哪个软件包。
有什么命令可以查到吗? 我已经知道有一种方法可以通过“arch”命令找出架构(32位或64位),但我不知道如何找出我需要哪个包。
uname -m
或 arch
为您提供架构(x86_64
或类似)。
您可以通过询问这两个变体安装了哪个软件包来确定您的系统是基于 RPM 还是 DEB(例如 Ubuntu 是基于 DEB)
/bin/ls
:
dpkg -S /bin/ls
将打印
coreutils: /bin/ls
在基于 DEB 的系统上。
rpm -q -f /bin/ls
将打印
coreutils-5.97-23.el5_6.4
在基于 RPM 的系统上(可能具有不同的版本号)。
在“错误”的系统上,每一个都会给出错误消息。
if dpkg -S /bin/ls >/dev/null 2>&1
then
case "$(arch)" in
x86_64)
sudo dpkg -i x86_64.deb;;
i386)
sudo dpkg -i x86.deb;;
*)
echo "Don't know how to handle $(arch)"
exit 1
;;
esac
elif rpm -q -f /bin/ls >/dev/null 2>&1
then
case "$(arch)" in
x86_64)
sudo rpm -i x86_64.rpm;;
i386)
sudo rpm -i x86.rpm;;
*)
echo "Don't know how to handle $(arch)"
exit 1
;;
esac
else
echo "Don't know this package system (neither RPM nor DEB)."
exit 1
fi
当然,所有这些只有在您知道接下来要做什么的情况下才有意义,即如果您知道哪个软件包要安装在哪个架构的哪个软件包系统上。