Como Chris Down disse nos comentários, detectar a distribuição é realmente uma maneira ruim de detectar o sistema de pacotes. Por exemplo, você mencionou "REDHAT + CENTOS + FEDORA = suporte para rpm + yum e DEBIAN + UBUNTU = deb + apt-get". OK, e quanto a Mint, LMDE, Kali, Backtrack, Crashbang e todas as outras distros usando dpkg
/ apt-get
? Ou Scientific Linux, Yellow Dog Linux e Oracle Linux, todos usam yum
? Sem mencionar outras distribuições baseadas em RPM que não usam yum
como SuSe, OpenSuSe, Mandriva Linux, Rosa Linux ou Mageia?
Uma maneira muito melhor seria detectar a ferramenta que você deseja usar. Também sugiro que você use o sistema rpm
diretamente, em vez de yum
, por que limitar-se às distribuições baseadas em 6 RPM que usam yum
?
Eu simplesmente testaria se o sistema em que você se encontra usa rpm
ou dpkg
para gerenciar seus pacotes:
if [ $(rpm -qa 2>/dev/null | wc -l ) -gt 10 ]; then
system="rpm"
elif [ $(dpkg -l 2>/dev/null | wc -l ) -gt 10 ]; then
system="dpkg"
else
system="unk"
fi
echo $system
Como rpm
pode ser instalado em distribuições com base em dpkg
e vice-versa , estou testando se há mais de 10 pacotes instalados com cada ferramenta.
Para obter uma maneira melhor de detectar a distribuição real, consulte a resposta aceita aqui , que deve lhe dar uma ideia de quão complicado é. Você realmente quer escrever testes específicos de distro para dúzias de distros quando você poderia facilmente detectar o sistema de empacotamento usado em seu lugar?