Como determinar programaticamente se um sistema é uma área de trabalho ou servidor?

12

Existe alguma maneira de distinguir entre o Ubuntu Server e o Ubuntu Desktop?

Eu tenho um script Bash ( plugue sem vergonha ) que eu uso para configurar servidores Web leves, e notei que quando executo esse script no meu próprio computador, minha instalação do Ubuntu (Desktop) fica toda bagunçada - estou bem verifique se o culpado são as seguintes linhas de código:

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

O que eu gostaria de fazer é detectar se o script está sendo executado em um sabor de servidor ou não, para que eu possa decidir se deseja remover esses pacotes ou não. Se não for possível diferenciar os sabores, você pode me dizer qual pacote é necessário para o Ubuntu Desktop funcionar corretamente?

Alix Axel
fonte
@Rinzwind: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.10 DISTRIB_CODENAME=quantal DISTRIB_DESCRIPTION="Ubuntu 12.10". Nada que eu possa usar para dizer se é Servidor ou Desktop.
Alix Axel
Fundamentalmente, há pouca diferença entre o Ubuntu Server e o Ubuntu. A diferença é principalmente o fato de que a versão Desktop vem com uma GUI, mas você pode instalar uma GUI no servidor CLI ubuntu. Além disso, você pode instalar pacotes de servidores na versão GUI do Ubuntu Desktop. Não tenho certeza de que haja uma maneira segura de determinar a mídia de instalação do Desktop vs. Servidor.
Thomas Ward
@Rinzwind: Esta é uma instalação do servidor. Eu também tenho outros 3 VPS em 2 provedores diferentes com edições do servidor e nenhum deles mostra a string "server". Eu acho que a leitura lsb_releasenão é confiável o suficiente.
Alix Axel
@TheLordofTime: Sim, eu sei que eles são praticamente iguais. Mas pensei que talvez houvesse pelo menos um pacote crucial que diferenciasse os dois.
Alix Axel
Como nota de acompanhamento, o problema era a expressão regular do pacote, alterando-a para ( apt-get -qq -y remove --purge "^$halBox_package*" )trabalhar nos sabores Servidor e Área de Trabalho.
Alix Axel

Respostas:

9

Comando

dpkg -l ubuntu-desktop 

Resultado:

Desejado = Desconhecido / Instalar / Remover / Limpar / Manter
| Status = Não / Inst / Conf-arquivos / Descompactado / halF-conf / Meio-inst / trig-aWait / Trig-pend
| / Err? = (Nenhum) / Necessário reintegração (Status, Err: maiúsculas = incorreto)
|| / Nome Versão Arquitetura Descrição
+++ - ============== - ============ - ============ - ===== ============================
ii ubuntu-desktop 1.287 i386 O sistema de desktop Ubuntu

 - Item da lista

Embargo

Não funcionará se alguém instalar a área de trabalho sem usar o ubuntu-desktop. Mas quem faz isso?

Documentação

  • Antes de 12.04, o servidor Ubuntu instala um kernel otimizado para servidor por padrão. Desde 12.04, não há diferença no kernel entre o Ubuntu Desktop e o Ubuntu Server, pois o linux-image-server é mesclado no linux-image-generic.
Rinzwind
fonte
BTW, $?será 1se dpkg -lnão conseguir listar nada, 0caso contrário. Em relação a grep desktopele sempre corresponderá, o pacote ou a mensagem dizendo que não foi encontrado.
Alix Axel
1
Ok, esta é minha última edição, espero! Você pode limpar os comentários também? >: D
Rinzwind
Estou apenas lendo a dpkgpágina de manual, mas aparentemente isso parece funcionar. Se alguém instala a área de trabalho sem o ubuntu-desktop, deve ser experiente o suficiente para corrigir os problemas que meu script causará, então está tudo bem! : P
Alix Axel
( dpkg -s "ubuntu-desktop" && Ubuntu_Flavor="desktop" ) > /dev/null 2>&1funciona muito bem, obrigado!
Alix Axel