Detectando distribuições baseadas em RHEL / RPM

1

Estou tentando escrever um script para detectar se ele está sendo executado em distros baseadas em RHEL / RPM.

Eu enfrentei alguns sistemas estranhos configurados, de modo que ambos dpkg e rpm estão instalados, portanto, fazer which rpm não é uma solução.

Eu tentei isso:

if [[ "$(cat /etc/*[_-][rv]e[lr]*)" == (CentOS|Fedora) ]]; then
  #...
fi

mas isso requer que eu saiba os nomes de todas as distribuições baseadas em RHEL / RPM.

    
por user2064000 01.07.2014 / 08:13

4 respostas

2

Se o seu objetivo é detectar se rpm é o gerenciador de pacotes nesse sistema, uma boa heurística deve ser que o banco de dados do pacote RPM não esteja vazio.

if [ -n "$(rpm -qa)" ] 2>/dev/null; then
  echo "This looks like an rpm-based system"
else
  echo "Either there is no rpm command, or the rpm package database has no entries"
fi
    
por 02.07.2014 / 02:08
1

O arquivo /etc/os-release contém o campo ID_LIKE= , que serve para identificar a distribuição base da qual o sistema operacional local é derivado. Você pode verificar se ele contém rhel com grep :

cat /etc/os-release | grep ID_LIKE= | grep rhel

Mais documentação sobre este arquivo: freedesktop .

    
por 01.07.2014 / 08:36
0

Eu verificaria a presença de / etc / redhat-release ou / etc / fedora-release.

    
por 01.07.2014 / 08:29
0

Você pode verificar a saída de /proc/version :

$ cat /proc/version 
Linux version 3.14.8-200.fc20.x86_64 ([email protected]) 
(gcc version 4.8.2 20131212 (Red Hat 4.8.2-7) (GCC) ) #1 SMP Mon Jun 16 21:57:53 UTC 2014

Exemplo:

$ grep -q 'Red Hat' /proc/version && echo "Redhat based distro"
Redhat based distro
    
por 02.07.2014 / 03:58

Tags