Як перевірити, чи встановлено Ubuntu Desktop або Server?


34

У мене спільний хостинг. У мене є доступ до оболонки. ОС є Ubuntu, і я хочу перевірити, чи це версія сервера чи версія для настільних ПК.

Коли я входжу через оболонку, вона показує таку інформацію:

Linux [server-name] 2.6.32-24-generic #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010 i686 GNU/Linux
Ubuntu 10.04.1 LTS

Відповіді:


20

Ця відповідь не така різана і суха, як це роблять деякі люди. Ви можете ubuntu-standardвстановити пакет і використовувати його як сервер. Ви можете використовувати ubuntu-minimalяк сервер. Ви можете взяти ubuntu-desktopі зламати його, щоб він не використовував X ... Або навіть залишити X там для адміністрування (eww). Ви можете змінити пакети ядра з -server на -generic на -rt і т. Д. Ви можете змінити motd або навіть просто оновити до версії, де motd не довгий, ніж новий (жоден з моїх серверів ніколи не вийшов з усім цим guff - можливо, тому що вони модернізовані зі старих LTS).

Я здогадуюсь, що всім нам слід задавати питання: Чому це важливо? Чого ти намагаєшся навчитися? Яка різниця для вас?

Якщо ви намагаєтеся запустити щось графічне, перевірте, що вам насправді потрібно (X, x11vnc тощо). Якщо ви намагаєтеся перевірити, чи немає графічного інтерфейсу, зробіть те ж саме!


+1. Чому це важливо? Ну, вважайте, ksplice. Робочий стіл вільний, сервера немає ...;)
0xC0000022L

1
Ну, це більш конкретне питання: що перевіряє ksplice, щоб вирішити, чи можна використовувати безкоштовну версію для настільних ПК. Я б припустив, що вони перевіряють наявність ядра робочого столу проти сервера.
poolie

1
Чому це важливо? Я не маю повноважень замінювати систему, тому мені потрібно зняти кластер, починаючи з того, щоб знати, що це було спочатку. Чого ти намагаєшся навчитися? Тільки те, що просили: це встановлення сервера чи настільних ПК. Що дифререну він робить для вас? Якщо це було встановлення сервера і воно повне X-матеріалів, ми повинні звільнити наших ІТ-людей тощо.
Ян Кю Пеблик

@JanKyuPeblik Якщо вам передається зламана система, і це, очевидно, не робочий стіл, вам слід попросити особу, яка повідомила про помилку . Серйозно. Комп'ютери - це не машини. Це не специфічний перелік робочих значень та допусків. Це все можна налаштувати. Сенс тут - застосований до ваших думок - полягає в тому, що людина, яка передає систему, може легко взяти сервер і налаштувати його на робочий стіл. Якщо ви перетворите його назад на сервер, ви заподіяли шкоду. Технічне розмежування між цими двома під час встановлення не стосується проблеми. І те, що було відмінністю у 2010 році, зараз значно менший.
Олі

Все, що я з цього вийшов, - це "історія дурна".
Ян Кю Пеблик

34
dpkg -l ubuntu-desktop 

підкаже, чи встановлені запропоновані компоненти на робочому столі.

uname -a

підкаже, чи використовується сервер чи загальне ядро.

"Робочий стіл або сервер" - це не бінарне - можна встановити деякі компоненти робочого столу на машині, спочатку встановлені як сервер тощо.

Ви повинні вирішити, який пакет ви хочете використовувати як ключове розмежування між "сервером" або "робочим столом". Можливо xserver-xorg, це вдалий вибір, хоча навіть деякі сервери матимуть це залежно від пакетів або для підтримки віддалених настільних ПК.


2
dpkg -i ubuntu-desktop не робить те, що ви описуєте для мене.
8128

2
Вибачте, я мав на увазі dpkg -l. (Оновлено.)
poolie

2
Можна мати ідеально працюючий робочий стіл без пакета ubuntu-desktop. Це лише метапакет для забезпечення певного стандартного набору допоміжних додатків, таких як панелі управління, специфічні для Debian речі тощо. Якщо ви видалите будь-яке з них, тоді ubuntu-desktop також буде ефективно "видалений", але ви все одно будете мати робочий стіл. Було б набагато краще замість цього перевірити пакет xserver-xorg-core. Хоча існування цього пакету не гарантує його використання, немає жодної вагомої причини встановити його на не-робочому столі.
thomasrutter

Так, той факт, що між робочим столом та сервером немає різкої лінії, широко обговорювався більшістю відповідей, включаючи мою. Але ubuntu-desktopце розумний тест на наявність робочого столу Ubuntu. Якщо ви встановите з настільного CD / ISO, у вас буде цей пакет.
poolie

15

це можна перевірити, набравши текст cat /etc/motd. Вихід буде різним на сервері та різним у настільному виданні.

Настільний:

Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/

Сервер:

Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/

  System information as of Wed Nov 10 20:54:11 UTC 2010

  System load:  0.07               Processes:           78
  Usage of /:   30.4% of 14.76GB   Users logged in:     1
  Memory usage: 38%                IP address for eth0: XXXXXXXX
  Swap usage:   0%

  Graph this data and manage this system at https://landscape.canonical.com/
---------------------------------------------------------------------
At the moment, only the core of the system is installed. To tune the 
system to your needs, you can choose to install one or more          
predefined collections of software by running the following          
command:                                                             

   sudo tasksel --section server  

Варто також зазначити, що цей файл легко редагується за допомогою sudo, що робиться дуже часто, оскільки це повідомлення, яке бачить користувач, коли він входить через ssh.


2
Це здебільшого говорить про те, чи landscape-clientвстановлено. Це може статися правдою на серверах, але це насправді не пов’язано з тим, використовуєте ви серверну ОС чи ні.
poolie

5

Це може бути не найшвидшим чи найчистішим способом розповісти, але запустити:

dpkg --get-selections | grep linux-image | grep -v deinstall

Якщо в даний час встановлений пакет linux-образ містить у ньому слово "сервер", то ви запускаєте сервер Ubuntu.

Наприклад, останній останній пакет ядра для робочого столу Ubuntu 10.10:

linux-image-2.6.35-22-generic

І сервер:

linux-image-2.6.35-22-server

Для більш універсального пакета, який має бути однаковим для різних версій Ubuntu, linux-image-genericце стандартний пакет для робочого столу Ubuntu і linux-image-serverє типовим для серверного видання.


4
Ви можете запустити ядро ​​сервера на встановленні робочого столу так само, як ви можете запустити ядро ​​робочого столу на сервері. Це не є остаточною відповіддю в будь-якому розтягуванні.
Олі

@Oli: як ви вже зазначали, напевне відповіді не існує;)
0xC0000022L

4

Немає чітко визначеної, просто сформульованої відповіді на це питання.

Можна завантажити функції робочого столу на сервер і видалити їх з робочого столу. Основна проблема полягає в тому, які пакети є частиною функціональності сервера , і отримають додатковий період підтримки та оновлень.

Найкращою відповіддю (ИМХО) можна знайти в питанні Launchpad (з 2008 року):

яка різниця між серверним та настільним виданням?

https://answers.launchpad.net/ubuntu/+question/40114


Чи можете ви підвести підсумок питання Launchpad тут?
Пітер Мортенсен

2

Ви повинні пам’ятати, що між виданнями Desktop та Server немає принципової різниці.

Однак велика ймовірність, що у вашого постачальника хостингу не знайдеться всіх графічних фрагментів, таких як GNOME у верхній частині стека, оскільки в них немає потреби. Встановлені пакети - це те, що робить його сервером.

Можливо, вас зацікавить ubuntu-maintenance-checkскрипт ( посилання ), який розповідає про цикл обслуговування кожного встановленого пакету - тим, у кого триваліший період, є серверні пакети.


Мабуть, починаючи з 12.04 і всі підтримувані пакети отримують однаковий термін служби без різниці між сервером та робочим столом.
poolie

2

Я відкриваю відкриття у великій мережі і намагаюся відрізнити від встановленого LINUX як робочої станції проти сервера (тому що ми будемо ставитися до них по-різному).

Я сподівався на атрибут або файл, який мав Ubuntu-Server замість Ubuntu.

Я знаходжу кілька цікавих файлів у / var / log / installer:

media-info говорить "Ubuntu-Server" для сервера і просто "Ubuntu" для робочого столу. syslog показує ту саму інформацію для "cdrom"

Обидва вони корисні, і я можу їх використовувати разом із інформацією про обладнання. Це повинно вам розповісти хоча б про те, яка версія була встановлена ​​спочатку.


1

"Майже" тут було задано те саме питання: Знай сервер дистрибутива 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-поширений
  • гном-оболонка

і деякі інші, які пов'язані з певними похідними


Моя програма залежить від розподілу сервера

Навіть якщо не має сенсу запускати серверну програму на настільній версії, не повинно виникнути жодних проблем із встановленням усіх залежностей для вашої програми на настільній версії та змусити її працювати.

Чи можете ви детальніше пояснити, чому це залежить від серверного дистрибутива?


0

Жодне з перерахованих вище рішень для мене не працювало дуже добре. Іноді в системі немає motd, або, можливо, адміністратор її змінив і т. Д. Я навіть не впевнений, чому відповідь, наведена вище, була "правильною" відповіддю. Ось що я в кінцевому підсумку використав.

#!/bin/bash
__check_desktop() {
  if [ `(dpkg-query -W -f='${Status}' ubuntu-desktop 2>/dev/null | grep -c "ok installed")` -eq 1 ]; then
    err "Ubuntu Server is required, but it appears that you are running Ubuntu Desktop"
    exit 1
  fi
}

# Now just call the function:
__check_desktop

Використання -f з $ {Status} добре, і я буду його використовувати. Але не використовуйте bash з синтаксисом sh та неіснуючими функціями, такими як 'err'.
Томаш Несронал
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.