Je commence à travailler avec une boîte sur laquelle est construit un (petit) Linux personnalisé. Comment savoir s'il s'agit d'une version basée sur Debian ou Red Hat?
Voici 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
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
?? Il suffit d'exécuterlsb_release -si
Réponses:
L'exécution
uname -a
devrait vous donner des informations générales sur le système. En outre, vous pouvez exécuterapropos "package manager"
ou avec des mots clés similaires pour en savoir plus sur le gestionnaire de packages. Recherchez/etc
un fichier nomméxyz-release
oùxyz
devrait se trouver la distribution en cours d'exécution.la source
Pour tester les systèmes Debian, vous pouvez vérifier s’il
/etc/debian_version
existe:Il devrait être inclus Debian et les systèmes basés sur lui (y compris Ubuntu et ses dérivés), bien que certains ne l'aient pas - dans ce cas, vous pouvez vérifier les
/etc/*release
fichiers:Où se
debian|buntu|mint
trouve une liste de noms de distributions à rechercher (pas en respectant la casse) - vous pouvez avoir une idée de quelques dérivés courants d' ici , bien que les dérivés debian comme Ubuntu aient leurs propres dérivations .Pour les systèmes basés sur RedHat, les dérivés utilisent une plus grande gamme de fichiers et peuvent ne pas avoir lsb-release installé - vous pouvez donc appliquer les méthodes suivantes:
obtenir le nom de la version
Vérifiez l'ID DISTRIB dans le
lsb-release
fichier - une «méthode de secours qui n'est probablement pas nécessaire sur les systèmes modernes», également le fichier est apparemment manquant sur Fedora et ne contient pas DISTRIB_ID sur OpenSUSEvé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 / mageiautilisez une méthode similaire à celle de Debian:
Les 3 premiers points que j'ai obtenus de la mise à jour cron de Google Chrome, vous pouvez donc examiner cela pour en savoir plus (cela détermine également les gestionnaires de packages)
Pour une gamme plus large d'OS, lire ce post sur SO devrait aider.
la source
Vérifiez la sortie de:
et:
Vous pouvez également rechercher d'autres commandes de paquetages à bas niveau
rpm
pour RedHat etdpkg
Debian.la source
apt-get install lsb-release
s'il n'est pas installé.S'il s'agit d'un périphérique embarqué (par exemple un routeur SoHo), il ne s'agira probablement d'aucune des distributions "bureau / serveur". J'essaierais de consulter 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.
la source
uname -a
etcat /proc/version
( lecture seule pour les super-utilisateurs ), à mon avis, sont les seules bonnes réponses à cette question car les autres - commelsb_release
,/etc/issue
oucat /proc/sys/kernel/version
- ne sont pas disponibles / ne sont pas utilisables sur tous les systèmes (pas même les distributions Debian officielles). Ne vous embêtez pas non plus/etc/*releases
,/etc/*version
car ils peuvent être modifiés. Ce dernier n'est pas disponible sur toutes les distributions Debian.D'autres options pourraient être (pas ma recommandation):
dash
ou vérifiez sish
est lié àdash
(ce devrait être la valeur par défaut pour l'exécution des scripts)>/dev/null 2>&1 dpkg --version && { ... }
la source