"Quasi" la stessa domanda è stata posta qui:
Conosci Ubuntu Distribution server o desktop
Vorrei pubblicare la mia risposta anche qui perché ha alcuni nuovi suggerimenti su come verificare se si è su un'edizione desktop o server.
Come menzionato nei post precedenti, non è facile determinare se si utilizza un'edizione desktop o server poiché è possibile installare o rimuovere tutti i pacchetti.
Se ci si trova in un ambiente coerente e prevedibile, non dovrebbe essere molto difficile determinare se desktop o server.
Uso solo Ubuntu-Desktop (vanilla) o Ubuntu Server. Per me dpkg -l ubuntu-desktop
è un metodo molto affidabile per determinare se è un desktop o un server.
Come menzionato nel post collegato, non è facile determinare se si utilizza un'edizione desktop o server perché tutti i pacchetti possono essere installati o rimossi.
Ecco la mia funzione che uso per i miei script. Fondamentalmente controlla se xserver-common o xwayland sono installati. Se uno di questi è installato, significa che è un sistema desktop.
#!/usr/bin/env bash
check_if_desktop (){
IS_DESKTOP="false"
displayManager=(
'xserver-common' # X Window System (X.Org) infrastructure
'xwayland' # Xwayland X server
)
for i in "${displayManager[@]}"; do
dpkg-query --show --showformat='${Status}\n' $i 2> /dev/null | grep "install ok installed" &> /dev/null
if [[ $? -eq 0 ]]; then
IS_DESKTOP="true"
fi
done
}
Ecco alcune altre cose da controllare:
Per impostazione predefinita, l'edizione server utilizza la versione classica /etc/network/interfaces
, mentre l'edizione desktop funziona con Network Manager, quindi controlla se Network Manager è installato
dpkg -l network-manager
Oppure esegui il comando nmcli (lo strumento da riga di comando per NM) se ricevi un messaggio come questo:
The program 'nmcli' is currently not installed. You can install it by typing:
sudo apt-get install network-manager
la probabilità è alta di essere su un'edizione server. Ma tieni presente che puoi modificare un server per operare con NM.
Utilizzare il comando seguente per determinare se sono installati componenti desktop
dpkg -l ubuntu-desktop
Su un server riceverai un messaggio come questo:
dpkg-query: no packages found matching ubuntu-desktop
Su un desktop riceverai un messaggio che ti dice quale versione è installata
Controlla altri pacchetti che si trovano in genere su un desktop:
dpkg -l unity (gnome, mate and so one) # Desktop environments
dpkg -l compiz (E17, fluxbox and so one) # Window manager
dpkg -l xorg # X window server
o utilizzare:
dpkg-query --show --showformat='${Status}\n' *packagename* 2> /dev/null | grep "install ok installed"
controlla se il server X è in esecuzione:
ps -e | grep X
sudo netstat -lp | grep -i Xorg
Controlla i servizi disponibili solo su un desktop:
Dipende dalla tua versione di Ubuntu come controllare i servizi:
sudo service *servicename* status # on SysVinit
sudo status *servicename* # on Upstart
systemctl status *servicename*.service # on systemd
i servizi tipici sono:
- lightdm
- x11-common
- gnome-shell
e alcuni altri associati a determinati derivati
La mia applicazione dipende dalla distribuzione del server
Anche se non ha senso eseguire un'applicazione server su un'edizione desktop, non dovrebbero esserci problemi con l'installazione di tutte le dipendenze per l'applicazione sull'edizione desktop e farla funzionare.
Puoi approfondire questo perché dipende dalla distribuzione del server?