Come posso determinare a livello di codice se un sistema è un desktop o un server?


12

C'è un modo per distinguere tra Ubuntu Server e Ubuntu Desktop?

Ho uno script Bash ( plug spudorato ) che utilizzo per configurare server Web leggeri e ho notato che quando eseguo questo script sul mio computer, la mia installazione di Ubuntu (Desktop) si incasina - Sono carina certo il colpevole sono le seguenti righe di codice:

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

Quello che vorrei fare è rilevare se lo script viene eseguito in un ambiente Server o meno, quindi posso decidere se eliminare o meno quei pacchetti. Se non è possibile distinguere i sapori, puoi dirmi quale pacchetto è necessario affinché Ubuntu Desktop funzioni correttamente?


@Rinzwind: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.10 DISTRIB_CODENAME=quantal DISTRIB_DESCRIPTION="Ubuntu 12.10". Nulla che posso usare per dire se si tratta di server o desktop.
Alix Axel,

Fondamentalmente, c'è poca differenza tra Ubuntu Server e Ubuntu. La differenza sta principalmente nel fatto che la versione desktop viene fornita con una GUI, ma è possibile installare una GUI sul server ubuntu della CLI. Inoltre, è possibile installare pacchetti server sulla versione GUI di Ubuntu Desktop. Non sono sicuro che esista un modo sicuro e preciso per determinare i supporti di installazione Desktop vs. Server.
Thomas Ward

@Rinzwind: questa è un'installazione server. Ho anche altri 3 VPS in 2 diversi provider con edizioni server e nessuno di essi mostra la stringa "server". Immagino che leggere lsb_releasenon sia abbastanza affidabile.
Alix Axel,

@TheLordofTime: Sì, lo so che sono praticamente uguali. Ma ho pensato che forse c'era almeno un pacchetto cruciale che avrebbe differenziato tra i due.
Alix Axel,

Come nota di follow-up, il problema era l'espressione regolare del pacchetto, cambiandola per ( apt-get -qq -y remove --purge "^$halBox_package*" )funzionare su entrambi i tipi di server e desktop.
Alix Axel,

Risposte:


9

Comando

dpkg -l ubuntu-desktop 

Risultato:

Desiderata = Unknown / Installa / Rimuovi / Purge / Hold
| Stato = Non / Inst / Conf-files / Unpacked / Half-conf / Half-inst / Trig-attendono / Trig-pend
| / Err? = (Nessuno) / Reinst-richiesto (Stato, Err: maiuscolo = cattivo)
|| / Nome Versione Architettura Descrizione
+++ - ============== - ============ - ============ - ===== ============================
ii ubuntu-desktop 1.287 i386 Il sistema desktop Ubuntu

 - Elenco elemento

Avvertimento

Non funzionerà se qualcuno installa il desktop senza usare Ubuntu-Desktop. Ma chi lo fa?

Documentazione

  • Prima del 12.04, il server Ubuntu installa un kernel ottimizzato per server per impostazione predefinita. Dal 12.04, non vi è alcuna differenza nel kernel tra Ubuntu Desktop e Ubuntu Server poiché Linux-Image-Server è unito a Linux-Image-Generic.

A proposito, $?sarà 1se dpkg -lnon riesce a elencare qualcosa, 0altrimenti. Per grep desktopquanto riguarda la corrispondenza, il pacchetto o il messaggio indicano che non è stato trovato.
Alix Axel,

1
Ok, questa è la mia ultima modifica, spero! Puoi ripulire anche i commenti? >: D
Rinzwind

Sto solo leggendo la dpkgpagina man, ma a quanto pare sembra funzionare. Se qualcuno installa desktop senza Ubuntu-desktop, dovrebbe essere abbastanza esperto da risolvere i problemi che il mio script causerà, quindi va tutto bene! : P
Alix Axel,

( dpkg -s "ubuntu-desktop" && Ubuntu_Flavor="desktop" ) > /dev/null 2>&1funziona benissimo, grazie!
Alix Axel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.