Answers:
从对这个问题的公认答案开始:如何在一个简单的shell脚本中获取发行名称和版本号?。然后,根据检测到的分发来决定要使用哪个程序包管理器。
apt-get
。
除了标识二进制程序,您应该从标识发行版开始,
请给您几行适用于bash脚本的行:
declare -A osInfo;
osInfo[/etc/redhat-release]=yum
osInfo[/etc/arch-release]=pacman
osInfo[/etc/gentoo-release]=emerge
osInfo[/etc/SuSE-release]=zypp
osInfo[/etc/debian_version]=apt-get
for f in ${!osInfo[@]}
do
if [[ -f $f ]];then
echo Package manager: ${osInfo[$f]}
fi
done
这些部分虽然不能被信任,但是通常人们不会这么做。
在查看其他人之后,我选择了这条路线。当我运行许多docker容器并且需要curl / jq并且不能依赖于工作之间的可用资源时,这对我来说就是了。
script:
- if [ -x "$(command -v apk)" ]; then apk add --no-cache curl jq; fi
- if [ -x "$(command -v apt-get)" ]; then apt-get install curl jq; fi
- if [ -x "$(command -v dnf)" ]; then dnf install curl jq; fi
- if [ -x "$(command -v zypper)" ]; then zypper install curl jq; fi