Comment savoir si une compilation est basée sur Debian?

Je commence à travailler avec une boîte qui a une version Linux (petite) personnalisée. Comment puis-je savoir s'il s'agit d'une version Debian ou Red Hat?

C'est ce que je sais jusqu'à présent:

$ 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 

Exécuter uname -a devrait vous donner des informations générales sur le système. En outre, vous pouvez exécuter à apropos "package manager" ou avec des mots keys similaires pour en savoir plus sur le gestionnaire de packages. Regardez dans /etc pour un file nommé xyz-releasexyz devrait être la dissortingbution de la dissortingbution.

Pour tester les systèmes Debian, vous pouvez vérifier si /etc/debian_version existe:

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

Il devrait être inclus Debian et les systèmes basés sur celui-ci (y compris Ubuntu et ses dérivés), bien que certains peuvent ne pas l'avoir – dans ce cas, vous pouvez vérifier les files /etc/*release :

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

debian|buntu|mint est une list de noms de distros à searchr (pas de casse sensible) – vous pouvez avoir une idée des dérivés communs d' ici , bien que les dérivés debian comme Ubuntu aient leurs propres dérivés .


Pour les systèmes basés sur RedHat, les dérivés utilisent un plus grand nombre de files et peuvent ne pas avoir la version lsb – vous pouvez donc appliquer les methods suivantes:

  • get le nom de lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2- de lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2- lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
  • Vérifiez l'identifiant DISTRIB dans le file lsb-release , une méthode de repli qui n'est probablement pas nécessaire sur les systèmes modernes. Le file apparemment absent de Fedora ne contient pas DISTRIB_ID sur OpenSUSE

  • vérifier l'existence de certains des éléments suivants

    • /etc/fedora-release et / ou /etc/redhat-release pour RedHat ou Fedora
    • /etc/SuSE-release pour SuSe
    • /etc/mandriva-release pour mandriva / mageia
  • utiliser une méthode similaire à la dernière debian:

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

Les 3 premiers points que j'ai tirés de la mise à jour de Google Chrome, vous pouvez donc l'examiner aussi en savoir plus (il détermine également les gestionnaires de packages)


Pour une plus large gamme d'OS, la lecture de ce post sur SO devrait aider.

Vérifier la sortie de:

 lsb_release -a 

et:

 cat /etc/issue 

Vous pouvez également vérifier d'autres commands de packageages à faible levier de vitesse pour RedHat et dpkg pour Debian.

S'il s'agit d'un périphérique embarqué (par exemple un routeur SoHo), il ne s'agira probablement pas des dissortingbutions "desktop / server". Je voudrais essayer de regarder dans le manuel de l'appareil, le site Web du fabricant (devrait avoir la source du code sous licence GPL), et le Web en général.