如何以编程方式确定系统是台式机还是服务器?


12

有什么方法可以区分Ubuntu Server和Ubuntu Desktop吗?

我有一个用于设置轻量级Web服务器的Bash脚本(无耻插件),并且我已经注意到,当我在自己的计算机上运行此脚本时,我的Ubuntu(Desktop)安装被搞砸了-我很漂亮确保罪魁祸首是以下代码行:

echo -e "\e[1;32mDave, I'm removing the bloatware.\e[0m"

for halBox_package in apache2 bind9 nscd php portmap rsyslog samba sendmail; do
    if [[ -f /etc/init.d/$halBox_package ]]; then
        ( service $halBox_package stop ) > /dev/null
    fi

    ( apt-get -qq -y remove --purge "$halBox_package*" ) > /dev/null 2>&1
done

我想做的是检测脚本是否以Server风格运行,因此我可以决定是否清除这些软件包。如果无法区分口味,您能告诉我Ubuntu桌面正常运行所需的软件包吗?


@Rinzwind :DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.10 DISTRIB_CODENAME=quantal DISTRIB_DESCRIPTION="Ubuntu 12.10"。我无法用来判断它是服务器还是台式机。
Alix Axel

从根本上说,Ubuntu Server和Ubuntu之间没有什么区别。区别主要是桌面版本带有GUI,但您可以在GUI ubuntu服务器上安装GUI。另外,您可以将服务器软件包安装到Ubuntu桌面的GUI版本上。我不确定确定桌面与服务器安装媒体的方法是否可靠。
托马斯·沃德

@Rinzwind:这是服务器安装。在服务器版本的2个不同提供程序中,我也有3个其他VPS,但没有一个显示“ server”字符串。我想阅读lsb_release还不够可靠。
Alix Axel

@TheLordofTime:是的,我知道它们几乎相同。但是我认为也许至少有一个至关重要的软件包可以区分两者。
Alix Axel

作为后续说明,问题是软件包正则表达式,将其更改为可( apt-get -qq -y remove --purge "^$halBox_package*" )同时在服务器和桌面版本上使用。
Alix Axel

Answers:


9

命令

dpkg -l ubuntu-desktop 

结果:

所需=未知/安装/删除/清除/保持
| 状态=不/安装/配置文件/未打包/ halF-conf /半安装/ trig-aWait /触发挂起
| / Err?=(无)/需要重新输入(状态,Err:大写=错误)
|| /名称版本体系结构描述
+++-==============-===========-=============-===== ===========================
ii ubuntu-desktop 1.287 i386 Ubuntu桌面系统

 - 项目清单

警告

如果有人在不使用ubuntu-desktop的情况下安装桌面,则将无法正常工作。但是那是谁呢?

文献资料

  • 在12.04之前,Ubuntu服务器默认安装服务器优化的内核。从12.04开始,由于linux-image-server被合并为linux-image-generic,因此Ubuntu Desktop和Ubuntu Server的内核没有区别。

顺便说一句,$?1如果dpkg -l没有任何名单,0否则。关于grep desktop它将始终匹配,无论是软件包还是未找到表明它的消息。
Alix Axel

1
好的,我希望这是我最后的编辑!您也可以清理评论吗?>:D
Rinzwind

我只是在阅读dpkg手册页,但显然这似乎可行。如果有人在没有ubuntu-desktop的情况下安装了台式机,那么他们应该足够聪明地解决我的脚本将引起的问题,所以一切都很好!:P
Alix Axel

( dpkg -s "ubuntu-desktop" && Ubuntu_Flavor="desktop" ) > /dev/null 2>&1效果很好,谢谢!
Alix Axel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.