"Почти" тот же самый вопрос был задан здесь: Знаете сервер распространения Ubuntu или рабочий стол
Я также хотел бы опубликовать свой ответ здесь, потому что в нем есть несколько новых подсказок, как проверить, используете ли вы настольную или серверную версию.
Как упоминалось в предыдущих сообщениях, нелегко определить, используете ли вы настольную или серверную версию, поскольку все пакеты могут быть установлены или удалены.
Если вы находитесь в согласованной и предсказуемой среде, не должно быть очень сложно определить, является ли это настольным компьютером или сервером.
Я использую только ubuntu-desktop (vanilla) или ubuntu server. Для меня это dpkg -l ubuntu-desktop
это очень надежный способ определить, является ли это настольным компьютером или сервером.
Как упоминалось в связанном сообщении, нелегко определить, используете ли вы настольную или серверную версию, поскольку все пакеты могут быть установлены или удалены.
Вот моя функция, которую я использую для своих скриптов. В основном она проверяет, установлены ли xserver-common или xwayland. Если один из них установлен, это означает, что это настольная система.
#!/usr/bin/env bashcheck_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
, в то время как настольная версия работает с сетевым менеджером, поэтому проверьте, установлен ли сетевой менеджер
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 environmentsdpkg -l compiz (E17, fluxbox and so one) # Window managerdpkg -l xorg # X window server
или использовать:
dpkg-query --show --showformat='${Status}\n' *packagename* 2> /dev/null | grep "install ok installed"
проверьте, запущен ли X-сервер:
ps -e | grep Xsudo netstat -lp | grep -i Xorg
Проверьте наличие служб, доступных только на рабочем столе:
Это зависит от вашей версии Ubuntu, как проверить службы:
sudo service *servicename* status # on SysVinit sudo status *servicename* # on Upstartsystemctl status *servicename*.service # on systemd
типичными услугами являются:
- lightdm
- x11-общий
- gnome-оболочка
и некоторые другие, которые связаны с определенными производными
Мое приложение зависит от распределения сервера
Даже если нет никакого смысла запускать серверное приложение в настольной версии, не должно возникнуть никаких проблем с установкой всех зависимостей для вашего приложения в настольной версии и заставить его работать.
Можете ли вы подробнее объяснить, почему это зависит от дистрибутива сервера?