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-release
où xyz
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
Où 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:
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.