【发布时间】:2009-11-05 07:10:55
【问题描述】:
我想向用户展示一些关于我的程序中特定操作的帮助:
请输入“apt-get install foobar”来安装 foobar 功能。
有什么可以做的,还是我必须把它留给用户,并提供来自 Red Hat、Suse、Debian/Ubuntu、Mandriva、Slackware、Gentoo 的十几种选择......
【问题讨论】:
标签: linux installation
我想向用户展示一些关于我的程序中特定操作的帮助:
请输入“apt-get install foobar”来安装 foobar 功能。
有什么可以做的,还是我必须把它留给用户,并提供来自 Red Hat、Suse、Debian/Ubuntu、Mandriva、Slackware、Gentoo 的十几种选择......
【问题讨论】:
标签: linux installation
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"
【讨论】:
lsb_release -a(或专门请求您想要的属性,例如lsb_release -i -r -c -d)。
lsb_release -a 可能对 debian 和明显有所帮助。
【讨论】:
lsb-release 软件包,否则它不存在。该包未标记essential,不保证存在。
不,没有通用的方法可以找出您在哪个 Linux 发行版上运行。
有lsb_release 命令,它在 Linux 标准基础规范中指定。但很明显,这个命令只存在于符合 LSB 的发行版上,许多较小或专门的发行版不符合 LSB。 (例如,我在 FritzBox 路由器上运行的发行版不是。)
如果您仍然假设一个符合 LSB 的发行版,那么为什么不简单地将您的应用程序打包为 LSB package?这样一来,它在所有符合 LSB 的发行版上都是一样的。
【讨论】:
你可以给
cat /etc/issue
也试试
【讨论】:
鉴于 Linux 可以从一个系统开始构建并演变成另一个系统,您可能无法准确判断它当前是哪个系统。如果某些发行版符合 LSB,则它们会提供 lsb 工具,因此这可能会有所帮助。
一些发行版提供了一个文件 /etc/dist-release.例如,我有一个文件 /etc/arch-release 是空的。
你也可以执行:
uname -a
这可能表明内核是为哪个发行版而构建的,但这可能是一个远景。我的 Arch linux 内核没有提到 Arch,但我相信我的 Gentoo 安装指示“Gentoo Linux”。
一些工具可以指示发行版,例如 apt-get、rpm、emerge,但您通常也可以将这些工具安装在其他发行版上。
【讨论】:
您可以为大多数知名发行版(Redhat、Fedaora、Gentoo、Suse、Debian、Ubuntu)执行此操作,这些发行版具有用于识别发行版和版本的特殊文件。即/etc/debian_version。
但是如果你真的想要用户友好
【讨论】:
试试猫:
cat /proc/version
但使用 uname 可能会更好:
uname -a
【讨论】: