我想向用戶展示一下我的程序中的具體操作:有什麼方法可以找出使用哪個Linux發行版?
請輸入「apt-get install foobar」來安裝foobar功能。
有什麼要做到這一點還是我必須把它留給用戶和來自Red Hat,SUSE的Debian/Ubuntu的,的Mandriva,Slackware的,Gentoo的提供dozend選擇....
我想向用戶展示一下我的程序中的具體操作:有什麼方法可以找出使用哪個Linux發行版?
請輸入「apt-get install foobar」來安裝foobar功能。
有什麼要做到這一點還是我必須把它留給用戶和來自Red Hat,SUSE的Debian/Ubuntu的,的Mandriva,Slackware的,Gentoo的提供dozend選擇....
貓的/ etc/LSB釋放
[email protected]:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu 8.10"
你可以對於大多數知名的發行版(Redhat,Fedora,Gentoo,Suse,Debian,Ubuntu)來說,它們都有專門的文件來識別發行版和版本。即/etc/debian_version
。
但是這將是一個繁瑣的任務,爲您列出了所有的包和東西,但如果你真的希望成爲用戶友好
嘗試用貓:
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 – Lothar 2009-11-05 07:31:46
關於ubuntu的作品:Linux版本2.6.31-14-generic (buildd @ rothera)(gcc版本4.4.1(Ubuntu 4.4.1-4ubuntu8))#48-Ubuntu SMP Fri Oct 16 16 14:04:26 UTC 2009.又是什麼關於uname -a? – cupakob 2009-11-05 07:34:47
你可以給
cat /etc/issue
a try too
在Ubuntu 9.04上效果很好 – 2010-11-26 09:44:08
沒有,是要找出您正在運行的Linux發行版沒有通用的方法。
有一個lsb_release
命令,它在Linux標準基礎規範中指定。但顯然這個命令只出現在符合LSB標準的發行版上,許多更小或專用的發行版是而不是 LSB兼容版本。 (例如,我在FritzBox路由器上運行的發行版不是。)
而且,如果您假設無論如何都遵循LSB規範,那麼爲什麼不簡單地將您的應用程序打包爲LSB package?這樣,它在全部 LSB兼容的發行版上的工作原理是一樣的。
鑑於Linux可以從一個系統開始並變成另一個系統,您可能無法準確地分辨出它當前是哪個系統。如果某些發行版符合LSB標準,則會提供LSB工具,因此可能有所幫助。
某些發行版提供文件/ etc/dist-release。例如,我有一個空的文件/ etc/arch-release。
您也可以執行:
uname -a
這威力表示內核是爲建的分配,但可能是一個長鏡頭。我的Arch Linux內核沒有提到Arch,但我相信我的Gentoo安裝表明「Gentoo Linux」。
某些工具可以指示分發,例如apt-get,rpm,emerge,但通常您也可以將這些工具安裝在其他發行版上。
這是正確的方式:) – cupakob 2009-11-05 07:36:03
不,它不是。 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 – Lothar 2009-11-05 08:11:38
中看到過它沒有問題:)它不適合你... – cupakob 2009-11-05 08:22:21