¿Cómo puedo determinar mediante programación si un sistema es un escritorio o un servidor?

12

¿Hay alguna manera de distinguir entre Ubuntu Server y Ubuntu Desktop?

Tengo una secuencia de comandos Bash ( conector descarado ) que utilizo para configurar servidores web ligeros, y me di cuenta de que cuando ejecuto esta secuencia de comandos en mi propia computadora, mi instalación de Ubuntu (escritorio) se estropea - estoy bastante Seguro que el culpable son las siguientes líneas 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

Lo que me gustaría hacer es detectar si la secuencia de comandos se ejecuta en un servidor o no, para poder decidir si purgar esos paquetes o no. Si no es posible distinguir los sabores, ¿puede decirme qué paquete es necesario para que Ubuntu Desktop funcione correctamente?

Alix Axel
fuente
@Rinzwind: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.10 DISTRIB_CODENAME=quantal DISTRIB_DESCRIPTION="Ubuntu 12.10". Nada que pueda usar para saber si es Servidor o Escritorio.
Alix Axel
Básicamente, hay poca diferencia entre Ubuntu Server y Ubuntu. La diferencia es principalmente el hecho de que la versión de escritorio viene con una GUI, pero puede instalar una GUI en el servidor CLI ubuntu. Además, puede instalar paquetes de servidor en la versión GUI de Ubuntu Desktop. No estoy seguro de que haya una forma segura y segura de determinar los medios de instalación del escritorio frente al servidor.
Thomas Ward
@Rinzwind: esta es una instalación del servidor. También tengo otros 3 VPS en 2 proveedores diferentes con ediciones de servidor y ninguno de ellos muestra la cadena de "servidor". Supongo que leer lsb_releaseno es lo suficientemente confiable.
Alix Axel
@TheLordofTime: Sí, sé que son más o menos lo mismo. Pero pensé que tal vez había al menos un paquete crucial que diferenciaría entre los dos.
Alix Axel
Como nota de seguimiento, el problema era la expresión regular del paquete, que cambió para ( apt-get -qq -y remove --purge "^$halBox_package*" )funcionar en los sabores de Servidor y Escritorio.
Alix Axel

Respuestas:

9

Mando

dpkg -l ubuntu-desktop 

Resultado:

Deseado = Desconocido / Instalar / Eliminar / Purgar / Retener
El | Estado = No / Inst / Conf-files / Unpacked / halF-conf / Half-inst / trig-aWait / Trig-pend
| / Err? = (None) / Reinst-required (Estado, Err: mayúsculas = incorrecto)
|| / Nombre Versión Arquitectura Descripción
+++ - ============== - ============ - ============ - ===== ============================
ii ubuntu-desktop 1.287 i386 El sistema de escritorio Ubuntu

 - Artículo de la lista

Consideración

No funcionará si alguien instala el escritorio sin usar ubuntu-desktop. ¿Pero quién hace eso?

Documentación

  • Antes del 12.04, el servidor Ubuntu instala un núcleo optimizado para el servidor de manera predeterminada. Desde 12.04, no hay diferencia en el kernel entre Ubuntu Desktop y Ubuntu Server ya que linux-image-server se fusiona en linux-image-generic.
Rinzwind
fuente
Por cierto, $?será 1si dpkg -lno se enumera nada, de lo 0contrario. En cuanto a grep desktopque siempre coincidirá, ya sea el paquete o el mensaje que dice que no se ha encontrado.
Alix Axel
1
Ok, esta es mi última edición, ¡espero! ¿Puedes limpiar los comentarios también? >: D
Rinzwind
Solo estoy leyendo la dpkgpágina de manual, pero aparentemente esto parece funcionar. Si alguien instala el escritorio sin ubuntu-desktop, debe ser lo suficientemente inteligente como para solucionar los problemas que causará mi script, ¡así que todo está bien! : P
Alix Axel
( dpkg -s "ubuntu-desktop" && Ubuntu_Flavor="desktop" ) > /dev/null 2>&1funciona muy bien, gracias!
Alix Axel