90 lines
1.7 KiB
Bash
Executable File
90 lines
1.7 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
get_distro () {
|
|
|
|
|
|
# try various methods, in order of preference, to detect distro
|
|
# store result in variable '$distro'
|
|
#
|
|
distro=$(lsb_release -i -s 2>/dev/null)
|
|
#
|
|
if test -z "${distro}" -a -e /etc/os-release
|
|
then
|
|
distro=$(awk -F= '$1 == "ID" {print $2}' /etc/os-release)
|
|
fi
|
|
#
|
|
if test -z "${distro}" -a -e /etc/lib/os-release
|
|
then
|
|
distro=$(awk -F= '$1 == "ID" {print $2}' /etc/lib/os-release)
|
|
fi
|
|
#
|
|
if test -z "${distro}" -a -e /etc/lsb-release
|
|
then
|
|
distro=$(awk -F= '$1 == "DISTRIB_ID" {print $2}' /etc/lib/lsb-release)
|
|
fi
|
|
#
|
|
if test -z "${distro}" -a -e /etc/debian_version
|
|
then
|
|
distro="debian"
|
|
fi
|
|
#
|
|
ls /etc/*-release >/dev/null
|
|
if test $? -eq 0 -a -z "${distro}"
|
|
then
|
|
distro=$(cat /etc/*-release | awk -F= '$1 == "ID" {print $2}' | tail -n 1)
|
|
fi
|
|
#
|
|
if test -z "${distro}"
|
|
then
|
|
distro="unknown"
|
|
fi
|
|
|
|
# convert to lowercase
|
|
distro=$(printf '%s\n' "${distro}" | LC_ALL=C tr '[:upper:]' '[:lower:]')
|
|
|
|
echo ${distro}
|
|
|
|
}
|
|
|
|
is_pkg_installed_cmd () {
|
|
distro="$1"
|
|
if test -z ${distro};
|
|
then
|
|
distro="$(get_distro)"
|
|
fi
|
|
case "${distro}" in
|
|
|
|
alpine)
|
|
cmd="apk info"
|
|
;;
|
|
|
|
arch | endeavouros | manjaro)
|
|
cmd="pacman -Q"
|
|
;;
|
|
debian | mint | mxlinux | popos | raspian | ubuntu | zorinos)
|
|
cmd="dpkg -l"
|
|
;;
|
|
|
|
centos | fedora)
|
|
cmd="rpm -qa"
|
|
;;
|
|
|
|
opensuse)
|
|
cmd="zypper search -is"
|
|
;;
|
|
|
|
*)
|
|
echo "Warning: do not know which package manager to use for distro: ${distro}"
|
|
;;
|
|
|
|
esac
|
|
|
|
echo "${cmd}"
|
|
}
|
|
|
|
distro=$(get_distro)
|
|
echo "Distro is ${distro}"
|
|
is_installed=$(is_pkg_installed_cmd "${distro}")
|
|
echo "is_installed cmd is: ${is_installed}"
|
|
|