Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法找出使用了哪个Linux发行版?_Linux_Installation - Fatal编程技术网

有没有办法找出使用了哪个Linux发行版?

有没有办法找出使用了哪个Linux发行版?,linux,installation,Linux,Installation,我想向用户展示我的表格程序中有关特定操作的一些帮助: 请键入“apt get install foobar”安装foobar功能 有什么办法可以做到这一点吗?还是我必须让用户自己选择,并提供来自Red Hat、Suse、Debian/Ubuntu、Mandriva、Slackware、Gentoo……的多种选择 您可以为大多数知名发行版(Redhat、Fedaora、Gentoo、Suse、Debian、Ubuntu)这样做,这些发行版都有特殊的文件来标识发行版和版本。i、 e./etc/deb

我想向用户展示我的表格程序中有关特定操作的一些帮助:

请键入“apt get install foobar”安装foobar功能


有什么办法可以做到这一点吗?还是我必须让用户自己选择,并提供来自Red Hat、Suse、Debian/Ubuntu、Mandriva、Slackware、Gentoo……的多种选择

您可以为大多数知名发行版(Redhat、Fedaora、Gentoo、Suse、Debian、Ubuntu)这样做,这些发行版都有特殊的文件来标识发行版和版本。i、 e.
/etc/debian\u版本

但是,列出所有的软件包和内容对您来说是一项乏味的任务,但是如果您真的想做到用户友好,请尝试使用cat:

cat /proc/version cat/proc/version 但联埃特派团可能更好:

uname -a uname-a你可以给出

cat /etc/issue

尝试一下lsb_发行版-a可能对debian和apparented有所帮助。

cat/etc/lsb发行版

root@pierr-desktop:~# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu 8.10"

不,没有通用的方法来确定您运行的是哪个Linux发行版

还有一个命令,它是在Linux标准基本规范中指定的。但很明显,这个命令只出现在符合LSB的发行版上,而且许多较小或专用的发行版不符合LSB。(例如,我在FritzBox路由器上运行的发行版不是。)


而且,如果您假设一个符合LSB的发行版,那么为什么不简单地将您的应用程序打包为一个发行版呢?通过这种方式,它在所有符合LSB的发行版上都可以工作。

鉴于Linux可以从一个系统开始构建,然后转变为另一个系统,您可能无法准确地判断它当前是哪一个。一些发行版提供了lsb工具(如果它们符合lsb),因此可能会有所帮助

有些发行版提供文件/etc/dist版本。例如,我有一个文件/etc/arch版本是空的

您还可以执行:

uname -a
这可能表明内核是为哪个发行版构建的,但这可能是一个长期目标。我的Arch linux内核没有提到Arch,但我相信我的Gentoo安装表明“Gentoo linux”


有些工具可以表示发行版,例如apt-get、rpm、emerge,但您通常也可以在其他发行版上安装这些工具。

我真的可以期望/proc/version中包含发行版的名称吗?至少对那些主要的?uname没有给我任何关于我在SUSE的暗示。我得到:Linux kiste 2.6.27.7-9-default#1 SMP 2008-12-04 18:10:04+0100 x86_64 x86_64 x86_64 GNU/LinuxOn ubuntu作品:Linux版本2.6.31-14-generic(buildd@rothera)(gcc版本4.4.1(Ubuntu 4.4.1-4ubuntu8))#48 Ubuntu SMP周五10月16日14:04:26 UTC 2009。那联阿援助团呢?不,不是。Suse告诉我:“Linux kiste 2.6.27.7-9-default#1 SMP 2008-12-04 18:10:04+0100 x86_64 x86_64 x86_64 GNU/Linux”这里也没有关于发行版的说明,我认为/etc/lsb版本甚至不在lsb规范中。至少我在3.2中没有看到过它,而不是直接读取该文件,请使用
lsb发行版-a
(或者特别请求您想要的属性,例如
lsb_release-i-r-c-d
)。这似乎是答案-我等了几天,直到我标记它。在Debian上,它不存在,除非安装了
lsb发行版
软件包。该软件包没有标记为
essential
,并且不能保证存在。老Linux问题再次出现-我讨厌它,它们理应获得1%的桌面市场份额。