Como posso saber se uma compilação é baseada no Debian?

8

Estou começando a trabalhar com uma caixa que possui um Linux (pequeno) personalizado. Como posso saber se isso é uma compilação baseada no Debian ou no Red Hat?

Isso é o que eu sei até agora:

$ cat /proc/version
Linux version 2.6.31-2.5 (build@build-desktop) (gcc version 4.4.3 (Broadcom stbgcc-4.4.3-1.2) ) #7

$ apt-get
-sh: apt-get: command not found

$ yum
-sh: yum: command not found
    
por Sparky1 25.01.2012 / 18:06

4 respostas

1

A execução de uname -a deve fornecer algumas informações gerais sobre o sistema. Além disso, você pode executar apropos "package manager" ou com palavras-chave semelhantes para obter mais informações sobre o gerenciador de pacotes. Procure em /etc por um arquivo chamado xyz-release , em que xyz deve ser qualquer distro em execução.

    
por 25.01.2012 / 18:30
6

Para testar sistemas Debian, você pode verificar se /etc/debian_version existe:

if [ -f "/etc/debian_version" ];
   #do stuff
fi

Deve ser incluído o Debian e sistemas baseados nele (incluindo o Ubuntu e seus derivados), embora alguns possam não tê-lo - neste caso, você pode verificar /etc/*release files:

if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
   #do stuff
fi

Onde debian|buntu|mint é uma lista de nomes de distros a procurar (sem diferenciação de maiúsculas e minúsculas) - você pode ter uma idéia de alguns dos derivados comuns de aqui , embora derivados do Debian como o Ubuntu tenham seus próprios deriatives .

Para sistemas baseados em RedHat, as derivadas usam um intervalo maior de arquivos e podem não ter o lsb-release instalado - portanto, você pode aplicar os seguintes métodos:

  • obtenha o nome do lançamento de lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
  • Verifique o DISTRIB-ID no arquivo lsb-release - um 'método de retorno que é provavelmente desnecessário em sistemas modernos', também o arquivo aparentemente está faltando no Fedora e não contém DISTRIB_ID no OpenSUSE

  • verifique a existência de alguns dos seguintes itens

    • /etc/fedora-release e / ou /etc/redhat-release para RedHat ou Fedora
    • /etc/SuSE-release para SuSEe
    • /etc/mandriva-release para mandriva / mageia
  • use o método similar ao último debian:

    if [ "$(grep -Ei 'fedora|redhat' /etc/*release)" ]; then
    ...
    

Os primeiros 3 pontos que eu obtive do cron de atualização do Google Chrome, para que você possa examinar isso também descubra mais (ele também determina os gerenciadores de pacotes)

Para uma gama mais ampla de sistemas operacionais, a leitura desta postagem no SO deve ajudar.

    
por 18.06.2015 / 23:09
2

Verifique a saída de:

lsb_release -a

e:

cat /etc/issue

Você também pode verificar se há mais comandos do pacote de nível baixo rpm para RedHat e dpkg para o Debian.

    
por 25.01.2012 / 18:30
1

Se for um dispositivo incorporado (por exemplo, um roteador SoHo), provavelmente não será uma das distribuições "desktop / server". Eu tentaria examinar o manual do dispositivo, o site do fabricante (deve ter fonte para o código licenciado pela GPL) e a Web em geral.

    
por 25.01.2012 / 18:20