Como mencionado no post vinculado, não é fácil determinar se você usa uma edição de desktop ou servidor porque todos os pacotes podem ser instalados ou removidos.
Aqui está minha função que uso para meus scripts. Basicamente, verifica se xserver-common ou xwayland estão instalados. Se um deles estiver instalado, significa que é um 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
}
Aqui estão algumas outras coisas para verificar:
Por padrão, a edição do servidor usa o clássico /etc/network/interfaces
, enquanto a edição de desktop opera com o Network Manager, portanto, verifique se o Network Manager está instalado
dpkg -l network-manager
Ou execute o comando nmcli (a ferramenta de linha de comando para NM) se você receber uma mensagem como esta:
The program 'nmcli' is currently not installed. You can install it by typing:
sudo apt-get install network-manager
a probabilidade é alta de que você esteja em uma edição do servidor. Mas lembre-se, você pode modificar um servidor para operar com NM.
Use o seguinte comando para determinar se os componentes da área de trabalho estão instalados
dpkg -l ubuntu-desktop
Em um servidor, você receberá uma mensagem como esta:
dpkg-query: no packages found matching ubuntu-desktop
Na área de trabalho, você receberá uma mensagem informando qual versão está instalada
Verifique se há outros pacotes normalmente encontrados em uma área de trabalho:
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
ou use:
dpkg-query --show --showformat='${Status}\n' *packagename* 2> /dev/null | grep "install ok installed"
verifique se o servidor X está sendo executado:
ps -e | grep X
sudo netstat -lp | grep -i Xorg
Verifique se há serviços disponíveis apenas em uma área de trabalho:
Depende da sua versão do Ubuntu como verificar os serviços:
sudo service *servicename* status # on SysVinit
sudo status *servicename* # on Upstart
systemctl status *servicename*.service # on systemd
serviços típicos são:
- lightdm
- x11-common
- gnome-shell
e alguns outros que estão associados a certos derivados
Minha aplicação depende da distribuição do servidor
Mesmo que não faça qualquer sentido executar um aplicativo de servidor em uma edição de desktop, não deve haver problemas com a instalação de todas as dependências do seu aplicativo na edição de desktop e fazê-lo funcionar.
Você pode explicar por que isso depende da distribuição do servidor?