Comece com a resposta aceita para esta pergunta: Como posso obter o nome da distribuição e o número da versão em um simples shell script? . Em seguida, decida qual gerenciador de pacotes você deseja usar com base na distribuição detectada.
Existe uma maneira (de um script) de identificar o gerenciador de pacotes padrão do sistema?
Para esclarecer, o que eu quero fazer é executar um determinado comando e, no Debian ou qualquer um de seus derivados, ele retornará algo como "apt", no openSUSE ele retornará "zypp", no Fedora et al it vai retornar "yum", no Arch Linux ele retornará "pacman" etc.
Sei que posso fazer isso com algo como o seguinte, apenas me perguntei se havia um método mais robusto que não fosse interrompido assim que houvesse um executável com o mesmo nome.
which apt >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo "apt"
fi
# etc...
Comece com a resposta aceita para esta pergunta: Como posso obter o nome da distribuição e o número da versão em um simples shell script? . Em seguida, decida qual gerenciador de pacotes você deseja usar com base na distribuição detectada.
Em vez de identificar programas binários, você deve começar a partir de distribuições de identificação,
Basta fornecer algumas linhas que funcionam no script do 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
Embora não seja possível confiar nessas partes, mas geralmente as pessoas não farão isso.