Как определить используемый дистрибутив Linux?
Что я обычно делаю, чтобы хотя бы понять, о какой ветке мы говорим, я пытаюсь запустить apt-get
, pacman
, yum
и все другие распространенные менеджеры пакетов, которые я могу вспомнить из головы, но я уверен, что есть лучший способ, так: есть ли простой способ, с помощью только оболочки, определить, в какой дистрибутив Linux вы только что вошли в систему?
4 ответа
Это зависит от дистрибутива.
Debian и родственники используют
lsb_release -a
cat /etc/lsb-release
либо один должен быть в порядке. Но, несмотря на то, что это связано с LSB (Linux Standard Base), оно есть не во всех дистрибутивах. Если вы не получили ответа от вышеуказанных команд, вам следует попробовать
ls /etc/*release
а затем загляните внутрь того файла, который вы нашли. Вы должны быть осторожны с этим: в то время как RedHat имеет /etc/redhat-release, другие, такие как Arch Linux, имеют пустой файл /etc/arch-release, а тот, который содержит информацию, которую вы ищете, это / etc / ОС-релиз.
Итак, YMMV.
Это не может быть надежным, но /proc/version
должен хотя бы дать вам приблизительную оценку:
Redhat производная:
# 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
В современных Fedora и Debian (а также в Arch, CentOS, CoreOS, Mageia, openSUSE, Red Hat Enterprise Linux, SUSE Linux Enterprise Server, Ubuntu и других) проще всего взглянуть на /etc/os-release
или беги hostnamectl status
,
В сценарии вы можете просто сделать
#!/bin/sh
source /etc/os-release
echo $PRETTY_NAME
Например:
$ source /etc/os-release
$ echo $PRETTY_NAME
Fedora 25 (Workstation Edition)
...
$ source /etc/os-release
$ echo $PRETTY_NAME
Debian GNU/Linux 8 (jessie)
Конечно, если вам нужно идентифицировать старые версии или несистемные дистрибутивы, вы можете просто начать с этого подхода, если /etc/os-release
существует, и если это не так, вернемся к поиску lsb_release
, /etc/redhat-release
пытаясь понять это из /proc/version
или какой-то другой эвристический.
См. Определение имени и версии дистрибутива Linux в документации по переполнению стека.
Я использую утилиту сценария для multi-linux-платформы screenfetch:
uname -a
Должен сделать свое дело. Он отобразит системную информацию о дистрибутиве, в который вы вошли.
cat /etc/lsb-release
Также должны отображаться название и версия дистрибутива.