"Майже" тут було задано те саме питання:
Знай сервер дистрибутива Ubuntu або робочий стіл
Я також хотів би опублікувати свою відповідь і тут, оскільки в ньому є кілька нових підказок, як перевірити, чи є ваш настільний або серверний випуск.
Як згадувалося в попередніх публікаціях, визначити, чи використовуєте ви настільну чи серверну версію, непросто, оскільки весь пакет можна встановити або видалити.
Якщо ви перебуваєте в послідовному і передбачуваному середовищі, визначити, робочий стіл чи сервер не повинно бути дуже складним.
Я використовую тільки ubuntu-desktop (ваніль) або ubuntu-сервер. Для мене 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
, тоді як настільне видання працює з Менеджером мереж, тому перевірте, чи встановлено Менеджер мереж
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-поширений
- гном-оболонка
і деякі інші, які пов'язані з певними похідними
Моя програма залежить від розподілу сервера
Навіть якщо не має сенсу запускати серверну програму на настільній версії, не повинно виникнути жодних проблем із встановленням усіх залежностей для вашої програми на настільній версії та змусити її працювати.
Чи можете ви детальніше пояснити, чому це залежить від серверного дистрибутива?