«Почти» тот же вопрос был задан здесь:
Знай сервер распространения Ubuntu или рабочий стол
Я также хотел бы опубликовать свой ответ здесь, потому что в нем есть несколько новых советов, как проверить, есть ли у вас версия для ПК или сервера.
Как упоминалось в предыдущих статьях, нелегко определить, используете ли вы настольную или серверную версию, поскольку весь пакет может быть установлен или удален.
Если вы находитесь в непротиворечивой и предсказуемой среде, не должно быть очень сложно определить, является ли настольный компьютер или сервер.
Я использую только Ubuntu-Desktop (Vanilla) или Ubuntu Server. Для меня dpkg -l ubuntu-desktop
это очень надежный способ определить, является ли это настольным компьютером или сервером.
Как упоминалось в связанном посте, нелегко определить, используете ли вы настольную или серверную версию, потому что все пакеты могут быть установлены или удалены.
Вот моя функция, которую я использую для своих сценариев. В основном он проверяет, установлены ли xserver-common или xwayland. Если один из них установлен, это означает, что это настольная система.
#!/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
}
Вот еще несколько вещей для проверки:
По умолчанию серверная версия использует классическую версию /etc/network/interfaces
, а настольная версия работает с Network Manager, поэтому проверьте, установлен ли Network Manager.
dpkg -l network-manager
Или запустите команду nmcli (инструмент командной строки для NM), если вы получите сообщение, подобное этому:
The program 'nmcli' is currently not installed. You can install it by typing:
sudo apt-get install network-manager
высока вероятность того, что вы находитесь на серверной редакции. Но имейте в виду, вы можете изменить сервер для работы с NM.
Используйте следующую команду, чтобы определить, установлены ли компоненты рабочего стола
dpkg -l ubuntu-desktop
На сервере вы получите сообщение, подобное этому:
dpkg-query: no packages found matching ubuntu-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
или используйте:
dpkg-query --show --showformat='${Status}\n' *packagename* 2> /dev/null | grep "install ok installed"
проверьте, работает ли X-сервер:
ps -e | grep X
sudo netstat -lp | grep -i Xorg
Проверьте сервисы, которые доступны только на рабочем столе:
Как проверить сервисы, зависит от вашей версии Ubuntu:
sudo service *servicename* status # on SysVinit
sudo status *servicename* # on Upstart
systemctl status *servicename*.service # on systemd
Типичные услуги:
- LightDM
- x11-общий
- гном-оболочки
и некоторые другие, которые связаны с определенными производными
Мое приложение зависит от распределения сервера
Даже если нет смысла запускать серверное приложение в настольном выпуске, не должно быть никаких проблем с установкой всех зависимостей для вашего приложения в настольном выпуске и обеспечением его работы.
Можете ли вы объяснить, почему это зависит от дистрибутива сервера?