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

9

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

Isto é 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
Sparky1
fonte
porque lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-?? Basta executarlsb_release -si

Respostas:

2

A execução uname -adeve fornecer algumas informações gerais sobre o sistema. Além disso, você pode executar apropos "package manager"ou com palavras-chave semelhantes para descobrir mais sobre o gerenciador de pacotes. Procure /etcum arquivo chamado xyz-releaseonde xyzdeve estar qualquer distro que esteja sendo executada.


fonte
Isto é o que recebo quando executo uname -a: $ uname -a Linux 10.0.1.46 2.6.31-2.5 # 7 qui 15 de dezembro 19:57:09 CST 2011 mips GNU / Linux
Sparky1
@ Sparky1 Então, parece que você conseguiu uma distribuição Linux-MIPS .
7

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

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

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

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

Onde debian|buntu|mintestá uma lista de nomes de distribuições para procurar (sem distinção entre maiúsculas e minúsculas) - você pode ter uma idéia de alguns derivados comuns a partir daqui , embora os derivados do Debian como o Ubuntu tenham seus próprios derivados .


Para sistemas baseados em RedHat, os derivados usam uma variedade maior de arquivos e podem não ter o lsb-release instalado - para que você possa aplicar os seguintes métodos:

  • obtenha o nome do release

    lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
    
  • Verifique o ID do DISTRIB no lsb-releasearquivo - um 'método de fallback que provavelmente não é necessário nos sistemas modernos', também o arquivo aparentemente está ausente no Fedora e não contém DISTRIB_ID no OpenSUSE

  • verifique a existência de algumas das seguintes

    • /etc/fedora-releasee / ou /etc/redhat-releasepara RedHat ou Fedora
    • /etc/SuSE-release para SuSe
    • /etc/mandriva-release para mandriva / mageia
  • use um método semelhante ao último debian:

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

Os três primeiros pontos que obtive da atualização cron do Google Chrome, para que você possa examinar isso para descobrir 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.

Wilf
fonte
2

Verifique a saída de:

lsb_release -a

e:

cat /etc/issue

Você também pode procurar por mais comandos de pacote de baixa alavanca rpmpara RedHat e dpkgDebian.

Michał Šrajer
fonte
O comando $ dpkg não encontrou $ rpm (mostra opções para o comando rpm). Parece que isso é uma compilação baseada no chapéu vermelho. Obrigado pela ajuda!
precisa saber é o seguinte
2
você também pode verificar o arquivo / etc / debian_version , que existe em toda a distribuição Linux baseada em debian
Coren
Instale-o também usando apt-get install lsb-releasese não estiver instalado.
Massood Khaari
1

Se for um dispositivo incorporado (por exemplo, um roteador SoHo), provavelmente não será uma das distros "desktop / servidor". Eu tentaria examinar o manual do dispositivo, o site do fabricante (deveria ter origem no código licenciado pela GPL) e a Web em geral.

Piskvor saiu do prédio
fonte
0

uname -ae cat /proc/version( somente leitura para superusuários ), na minha opinião sincera, são as únicas respostas corretas para esta pergunta, já que o restante - como lsb_release, /etc/issueou cat /proc/sys/kernel/version- não está disponível / não pode ser usado em todos os sistemas (nem mesmo nas distribuições oficiais do Debian). Também não se incomode em usar /etc/*releases, /etc/*versionpois eles podem ser alterados. Este último não está disponível em todas as distribuições Debian.

Outras opções podem ser (não é minha recomendação):

  • Verifique dashou verifique se shestá vinculado dash(deve ser o padrão para a execução de scripts)
  • Verifique o gerenciador de pacotes executando >/dev/null 2>&1 dpkg --version && { ... }
FifthAxiom
fonte