Ich fange an, mit einer Box zu arbeiten, auf der ein benutzerdefiniertes (kleines) Linux basiert. Wie kann ich feststellen, ob es sich um einen Debian- oder einen Red Hat-basierten Build handelt?
Das weiß ich bisher:
$ 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-
? Einfach ausführenlsb_release -si
Antworten:
Beim Ausführen
uname -a
sollten Sie einige allgemeine Informationen zum System erhalten. Sie können auchapropos "package manager"
oder mit ähnlichen Schlüsselwörtern ausführen, um hoffentlich mehr über den Paketmanager zu erfahren. Suchen Sie/etc
nach einer Datei mit dem Namen,xyz-release
in derxyz
sich die laufende Distribution befinden soll.quelle
Zum Testen auf Debian-Systeme können Sie überprüfen, ob
/etc/debian_version
Folgendes vorhanden ist:Es sollte Debian und darauf basierende Systeme (einschließlich Ubuntu und seiner Derivate) enthalten, obwohl einige es möglicherweise nicht haben - in diesem Fall können Sie
/etc/*release
Dateien überprüfen :Wo
debian|buntu|mint
ist eine Liste von Distributionsnamen, nach denen gesucht werden muss (ohne Berücksichtigung der Groß- und Kleinschreibung) ? Hier können Sie sich einige gängige Derivate vorstellen , obwohl Debian-Derivate wie Ubuntu ihre eigenen Derivate haben .Bei RedHat-basierten Systemen verwenden die Derivate einen größeren Dateibereich und haben möglicherweise keine lsb-Version installiert. Daher können Sie die folgenden Methoden anwenden:
Holen Sie sich den Release-Namen von
Überprüfen Sie die DISTRIB-ID in der
lsb-release
Datei - eine 'Fallback-Methode, die auf modernen Systemen wahrscheinlich nicht erforderlich ist'. Außerdem fehlt die Datei anscheinend auf Fedora und enthält DISTRIB_ID unter OpenSUSE nichtÜberprüfen Sie, ob einige der folgenden Elemente vorhanden sind
/etc/fedora-release
und / oder/etc/redhat-release
für RedHat oder Fedora/etc/SuSE-release
für SuSe/etc/mandriva-release
für mandriva / mageiaVerwenden Sie eine ähnliche Methode wie die letztere Debian-Methode:
Die ersten 3 Punkte habe ich aus dem Update von Google Chrome bezogen, sodass Sie dies überprüfen können, um mehr zu erfahren (es bestimmt auch die Paketmanager).
Für eine größere Auswahl an Betriebssystemen sollte das Lesen dieses Beitrags über SO hilfreich sein.
quelle
Überprüfen Sie die Ausgabe von:
und:
Sie können auch nach weiteren Paketbefehlen mit niedrigem Hebel
rpm
für RedHat unddpkg
Debian suchen .quelle
apt-get install lsb-release
wenn es nicht installiert ist.Wenn es sich um ein eingebettetes Gerät handelt (z. B. einen SoHo-Router), handelt es sich wahrscheinlich nicht um eine der "Desktop / Server" -Distributionen. Ich würde versuchen, das Handbuch des Geräts, die Website des Herstellers (sollte Quelle für den GPL-lizenzierten Code sein) und das gesamte Web zu lesen.
quelle
uname -a
undcat /proc/version
( schreibgeschützt für Superuser ), in meiner ehrlichen Meinung, sind die einzig richtigen Antworten auf diese Frage , wie der Rest - wielsb_release
,/etc/issue
odercat /proc/sys/kernel/version
- nicht verfügbar / nicht verwendbar auf jedem System (nicht einmal offizielle Debian - Distributionen). Verwenden Sie auch nicht/etc/*releases
,/etc/*version
da sie geändert werden können. Letzteres ist nicht in allen Debian-Distributionen verfügbar.Andere Optionen könnten sein (nicht meine Empfehlung):
dash
oder überprüfen Sie, obsh
eine Verknüpfung bestehtdash
(dies sollte die Standardeinstellung für die Ausführung von Skripten sein).>/dev/null 2>&1 dpkg --version && { ... }
quelle