有没有办法找出使用了哪个Linux发行版?
我想向用户展示我的表格程序中有关特定操作的一些帮助: 请键入“apt get install foobar”安装foobar功能有没有办法找出使用了哪个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
有什么办法可以做到这一点吗?还是我必须让用户自己选择,并提供来自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%的桌面市场份额。