我想在我的程序中向用户展示一些特定操作的帮助,例如:
请键入“apt-get install foobar”以安装 foobar 功能。
有没有什么方法可以做到这一点,还是我必须让用户自己选择 Red Hat、Suse、Debian/Ubuntu、Mandriva、Slackware、Gentoo 等十几个选项?
我想在我的程序中向用户展示一些特定操作的帮助,例如:
请键入“apt-get install foobar”以安装 foobar 功能。
有没有什么方法可以做到这一点,还是我必须让用户自己选择 Red Hat、Suse、Debian/Ubuntu、Mandriva、Slackware、Gentoo 等十几个选项?
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"
在 Debian 及其衍生版本中,可以使用 lsb_release -a 命令来获取帮助。
lsb-release
软件包,则不存在该软件包。该软件包未标记为“essential”并且不能保证存在。 - ephemientlsb_release
命令,该命令在Linux标准库规范中指定。但是显然,此命令仅存在于符合LSB的发行版中,许多较小或专业化的发行版不符合LSB。(例如,我在FritzBox路由器上运行的分发版就不符合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命令:
cat /proc/version
但是使用uname命令可能更好:
uname -a
lsb_release -a
(或者明确请求所需的属性,例如lsb_release -i -r -c -d
)。 - ephemient