【问题标题】:Is there any way to find out which Linux Distribution is used?有没有办法找出使用的是哪个 Linux 发行版?
【发布时间】:2009-11-05 07:10:55
【问题描述】:

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

请输入“apt-get install foobar”来安装 foobar 功能。

有什么可以做的,还是我必须把它留给用户,并提供来自 Red Hat、Suse、Debian/Ubuntu、Mandriva、Slackware、Gentoo 的十几种选择......

【问题讨论】:

    标签: linux installation


    【解决方案1】:

    cat /etc/lsb-release

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

    【讨论】:

    • 不,不是。 Suse 给了我:“Linux 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-release 甚至在 LSB 规范中。至少我在 3.2 没见过它
    • 不要直接读取该文件,而是使用lsb_release -a(或专门请求您想要的属性,例如lsb_release -i -r -c -d)。
    【解决方案2】:

    lsb_release -a 可能对 debian 和明显有所帮助。

    【讨论】:

    • 这似乎是答案 - 我等了几天,直到我标记它。
    • 在 Debian 上,除非安装了 lsb-release 软件包,否则它不存在。该包未标记essential,不保证存在。
    • 又是老的 Linux 问题 - 我讨厌它,他们应该有 1% 的桌面市场份额。
    【解决方案3】:

    不,没有通用的方法可以找出您在哪个 Linux 发行版上运行。

    有lsb_release 命令,它在 Linux 标准基础规范中指定。但很明显,这个命令只存在于符合 LSB 的发行版上,许多较小或专门的发行版不符合 LSB。 (例如,我在 FritzBox 路由器上运行的发行版不是。)

    如果您仍然假设一个符合 LSB 的发行版,那么为什么不简单地将您的应用程序打包为 LSB package?这样一来,它在所有符合 LSB 的发行版上都是一样的。

    【讨论】:

      【解决方案4】:

      你可以给

      cat /etc/issue
      

      也试试

      【讨论】:

        【解决方案5】:

        鉴于 Linux 可以从一个系统开始构建并演变成另一个系统,您可能无法准确判断它当前是哪个系统。如果某些发行版符合 LSB,则它们会提供 lsb 工具,因此这可能会有所帮助。

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

        你也可以执行:

        uname -a
        

        这可能表明内核是为哪个发行版而构建的,但这可能是一个远景。我的 Arch linux 内核没有提到 Arch,但我相信我的 Gentoo 安装指示“Gentoo Linux”。

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

        【讨论】:

          【解决方案6】:

          您可以为大多数知名发行版(Redhat、Fedaora、Gentoo、Suse、Debian、Ubuntu)执行此操作,这些发行版具有用于识别发行版和版本的特殊文件。即/etc/debian_version。

          但是如果你真的想要用户友好

          【讨论】:

            【解决方案7】:

            试试猫:

            cat /proc/version

            但使用 uname 可能会更好:

            uname -a

            【讨论】:

            • 我真的可以期望 /proc/version 中包含发行版的名称吗?至少对于主要的? uname 没有给我任何暗示我正在使用 SUSE。我得到:Linux 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
            • 在 ubuntu 上工作:Linux 版本 2.6.31-14-generic (buildd@rothera) (gcc 版本 4.4.1 (Ubuntu 4.4.1-4ubuntu8)) #48-Ubuntu SMP Fri Oct 16 14 :04:26 UTC 2009。那么 uname -a 是什么?
            猜你喜欢
            • 2014-07-20
            • 2015-07-24
            • 1970-01-01
            • 1970-01-01
            • 2013-07-11
            • 2017-09-24
            • 2016-03-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多