Wie kann ich programmgesteuert feststellen, ob ein System ein Desktop oder ein Server ist?

12

Gibt es eine Möglichkeit, zwischen Ubuntu Server und Ubuntu Desktop zu unterscheiden?

Ich habe ein Bash-Skript ( shameless plug ), mit dem ich schlanke Webserver einrichte, und ich habe festgestellt, dass meine Ubuntu (Desktop) -Installation durcheinander gerät, wenn ich dieses Skript auf meinem eigenen Computer ausführe - ich bin hübsch Sicher, der Schuldige sind die folgenden Codezeilen:

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

Was ich tun möchte, ist zu erkennen, ob das Skript in einer Server-Variante ausgeführt wird oder nicht, damit ich entscheiden kann, ob diese Pakete gelöscht werden sollen oder nicht. Wenn es nicht möglich ist, die Geschmacksrichtungen zu unterscheiden, können Sie mir dann mitteilen, welches Paket für die ordnungsgemäße Funktion von Ubuntu Desktop erforderlich ist?

Alix Axel
quelle
@Rinzwind: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.10 DISTRIB_CODENAME=quantal DISTRIB_DESCRIPTION="Ubuntu 12.10". Nichts, woran ich erkennen kann, ob es sich um Server oder Desktop handelt.
Alix Axel
Grundsätzlich gibt es kaum einen Unterschied zwischen Ubuntu Server und Ubuntu. Der Unterschied besteht hauptsächlich in der Tatsache, dass die Desktop-Version über eine grafische Benutzeroberfläche verfügt. Sie können jedoch eine grafische Benutzeroberfläche auf dem Ubuntu-Server der CLI installieren. Sie können auch Server-Pakete auf der GUI-Version von Ubuntu Desktop installieren. Ich bin mir nicht sicher, ob es eine sichere und übersichtliche Methode gibt, um die Installationsmedien für Desktop vs. Server zu bestimmen.
Thomas Ward
@ Rinzwind: Dies ist eine Serverinstallation. Ich habe auch 3 andere VPS in 2 verschiedenen Anbietern mit Server-Editionen und keiner von ihnen zeigt die "Server" -String. Ich denke, das Lesen ist lsb_releaseeinfach nicht zuverlässig genug.
Alix Axel
@TheLordofTime: Ja, ich weiß, dass sie ziemlich gleich sind. Aber ich dachte, dass es vielleicht zumindest ein entscheidendes Paket gibt, das zwischen den beiden unterscheiden würde.
Alix Axel
Als Folgemaßnahme war das Problem der reguläre Ausdruck des Pakets, der so geändert wurde, dass er ( apt-get -qq -y remove --purge "^$halBox_package*" )sowohl für Server- als auch für Desktop-Versionen funktioniert.
Alix Axel

Antworten:

9

Befehl

dpkg -l ubuntu-desktop 

Ergebnis:

Gewünscht = Unbekannt / Installieren / Entfernen / Löschen / Halten
| Status = Not / Inst / Conf-Dateien / Unpacked / halF-conf / Half-inst / trig-aWait / Trig-pend
| / Err? = (None) / Reinst-required (Status, Err: Großbuchstaben = schlecht)
|| / Name Versionsarchitektur Beschreibung
+++ - ============================================= ===========================
ii ubuntu-desktop 1.287 i386 Das Ubuntu-Desktop-System

 - Listenpunkt

Vorbehalt

Es wird nicht funktionieren, wenn jemand den Desktop ohne Ubuntu-Desktop installiert. Aber wer macht das schon?

Dokumentation

  • Vor 12.04 installiert der Ubuntu-Server standardmäßig einen serveroptimierten Kernel. Seit 12.04 gibt es keinen Unterschied im Kernel zwischen Ubuntu Desktop und Ubuntu Server, da Linux-Image-Server in Linux-Image-Generic zusammengeführt wird.
Rinzwind
quelle
Übrigens $?wird es sein, 1wenn dpkg -lnichts aufgelistet wird , 0ansonsten. Diesbezüglich grep desktopwird immer das Paket oder die Meldung angezeigt, dass es nicht gefunden wurde.
Alix Axel
1
Ok, das ist meine letzte Bearbeitung, hoffe ich! Können Sie auch Kommentare bereinigen? >: D
Rinzwind
Ich lese gerade die dpkgManpage, aber anscheinend scheint das zu funktionieren. Wenn jemand Desktop ohne Ubuntu-Desktop installiert, sollte er geschickt genug sein, um die Probleme zu beheben, die mein Skript verursachen wird, also ist alles gut! : P
Alix Axel
( dpkg -s "ubuntu-desktop" && Ubuntu_Flavor="desktop" ) > /dev/null 2>&1funktioniert super, danke!
Alix Axel