Wie erkennt man die verwendete Linux-Distribution?

639
Jarmund

Was ich tue, normalerweise zumindest eine Vorstellung davon zu bekommen, welche Zweig wir reden, ich versuche zu laufen apt-get, pacman, yumund alle anderen gemeinsamen Paket - Manager, die ich aus der Spitze von meinem Kopf erinnern kann, aber ich bin sicher, dass es eine bessere So, so: Gibt es eine einfache Möglichkeit, durch die Verwendung von Shell zu ermitteln, an welcher Linux-Distribution Sie sich gerade angemeldet haben?

3
[Wie kann ich in einem einfachen Shellskript den Namen und die Versionsnummer der Distribution erhalten?] (Http://unix.stackexchange.com/q/6345) DavidPostill vor 8 Jahren 2
Antworten, die die Kernel-Version betreffen (z. B. "uname -a" und "cat / proc / version") sind nicht korrekt, da das Konzept einer "Distribution" dem Linux-Kernel fremd ist. Beachten Sie, dass das Linux-System von keinem stammt Distro überhaupt, das heißt, es könnte sich um einen benutzerdefinierten Kernel und um rootfs handeln. sawdust vor 8 Jahren 0
@DavidPostill Es wäre großartig, wenn "/ etc / lsb-release" de facto wäre - es war nur bei 1 der 4 vorhanden, die ich unten ausprobiert habe. Paul vor 8 Jahren 0
lsb-release ist normalerweise * optional * Thomas Dickey vor 8 Jahren 0
Katze / etc / * release * Alec Istomin vor 8 Jahren 0

4 Antworten auf die Frage

3
MariusMatutiae

Es kommt auf die Distribution an.

Debian und Verwandte verwenden

 lsb_release -a cat /etc/lsb-release 

Beide sollten in Ordnung sein. Obwohl dies mit LSB (Linux Standard Base) zusammenhängt, haben es nicht alle Distributionen. Wenn Sie keine Antwort von den obigen Befehlen erhalten, sollten Sie es versuchen

 ls /etc/*release 

und dann in die Datei schauen, die Sie gefunden haben. Sie müssen vorsichtig sein: Während RedHat / etc / redhat-release hat, haben andere, wie Arch Linux, eine leere / etc / arch-release-Datei, und die Datei, die die gesuchten Informationen enthält, ist / etc / os-release .

Also, YMMV.

2
Paul

Es ist zwar nicht narrensicher, /proc/versionsollte Ihnen aber zumindest einen Spielplatz geben:

Redhat-Ableitung:

# cat /proc/version  Linux version 2.6.18-92cp (builder@Lnx30BccCmp5) (gcc version 4.1.1 20061011 (Red Hat 4.1.1-30)) #1 SMP Wed Apr 8 17:12:19 IDT 2015 

Ubuntu:

$ cat /proc/version Linux version 3.13.0-24-generic (buildd@panlong) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 

Debian:

$ cat /proc/version  Linux version 3.2.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.65-1+deb7u1  

Centos:

# cat /proc/version  Linux version 2.6.18-400.el5xen (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-55)) #1 SMP Thu Dec 4 13:29:23 EST 2014 
Wie angekündigt, nicht narrensicher, aber viel einfacher als meine Methode, den Paketmanager zu überprüfen. `/ proc / version` auf Mint Ubuntu, aber es ist nahe genug. Jarmund vor 8 Jahren 0
0
KenWeiLL
uname -a 

Sollte den Trick tun. Es werden Systeminformationen in der Distribution angezeigt, in der Sie angemeldet sind.

cat /etc/lsb-release 

Sollte auch den Namen und die Version der Distribution anzeigen.

Nein, es zeigt nur den Hostnamen, den Kernel und die Plattform an, nicht die Distribution. Jarmund vor 8 Jahren 0
Okay. Ich habe meine Antwort aktualisiert. Daraufhin sollten Name und Version der Distribution angezeigt werden. Oder zumindest bei Linux Mint. KenWeiLL vor 8 Jahren 0
0
mattdm

Bei modernen Fedora und Debian (und Arch, CentOS, CoreOS, Mageia, openSUSE, Red Hat Enterprise Linux, SUSE Linux Enterprise Server, Ubuntu und anderen) ist der einfachste Weg, die Anwendung zu betrachten /etc/os-releaseoder auszuführen hostnamectl status.

In einem Skript könnten Sie das einfach tun

#!/bin/sh source /etc/os-release echo $PRETTY_NAME 

Zum Beispiel:

$ source /etc/os-release $ echo $PRETTY_NAME Fedora 25 (Workstation Edition) 

...

$ source /etc/os-release  $ echo $PRETTY_NAME Debian GNU/Linux 8 (jessie) 

Wenn Sie auch ältere Versionen oder nicht systembezogene Distributionen ermitteln müssen, können Sie natürlich mit diesem Ansatz beginnen, falls /etc/os-releasevorhanden, und wenn nicht, suchen Sie nach lsb_release, suchen Sie nach /etc/redhat-release, versuchen Sie es herauszufinden /proc/version, oder eine andere heuristische.

Weitere Informationen finden Sie unter Ermitteln des Namens und der Version der Linux-Distribution in der Stack Overflow-Dokumentation.