Как проверить, установлен ли Ubuntu Desktop или Server?


34

У меня есть общий хостинг. У меня есть доступ к оболочке. Операционная система - Ubuntu, и я хочу проверить, является ли это версией сервера или версией рабочего стола.

Когда я захожу через shell, он показывает следующую информацию:

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 не так длинен, как новая (ни один из моих серверов никогда не выходил) со всей этой болтовней - вероятно, потому что они обновлены от более старых LTSs).

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

Если вы пытаетесь запустить что-то графическое, проверьте, что вам действительно нужно (X, x11vnc и т. Д.). Если вы пытаетесь проверить, что нет графического интерфейса, сделайте то же самое!


+1. Почему это важно? Ну, рассмотрим ксплице. Рабочий стол бесплатный, сервер не ...;)
0xC0000022L

1
Ну, это более конкретный вопрос: что проверяет ksplice, чтобы решить, можете ли вы использовать бесплатную версию для ПК. Я предполагаю, что они проверяют сборку ядра рабочего стола и сервера.
пул

1
Почему это имеет значение? У меня нет полномочий на замену системы, поэтому нужно ее разархивировать, начиная со знания того, чем она была изначально. Чему ты пытаешься научиться? Только то, о чем просили: была ли это установка на сервере или на компьютере. Чем это отличается от вас? Если это была установка сервера, и она полна X-контента, мы должны уволить наших ИТ-специалистов и т. Д.
Ян Кью Пеблик,

@JanKyuPeblik Если вам передали сломанную систему, а она, очевидно, не является рабочим столом, вам следует обратиться к лицу, сообщившему об ошибке . Шутки в сторону. Компьютеры не являются автомобилями. Это не спецификация рабочих значений и допусков. Это все настраивается. Суть здесь - в применении к вашим мыслям - то, что человек, управляющий системой, мог легко взять сервер и настроить его как рабочий стол. Если вы превратите его обратно в сервер, вы причинили вред. Техническое различие между ними во время установки не имеет отношения к проблеме. И какое различие было в 2010 году, теперь значительно меньше.
Оли

Все, что я получил от этого, было "история глупа".
Ян Кю Пеблик

34
dpkg -l ubuntu-desktop 

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

uname -a

скажет вам, используется ли сервер или общее ядро.

«Рабочий стол или сервер» не является бинарным - можно установить некоторые компоненты рабочего стола на компьютере, изначально установленном как сервер, и т. Д.

Вы должны решить, какой пакет вы хотите использовать в качестве ключевого различия между «сервером» и «настольным компьютером». Может быть xserver-xorg, это хороший выбор, хотя даже некоторые серверы будут иметь это для зависимостей пакетов или для поддержки удаленных рабочих столов.


2
dpkg -i ubuntu-desktop не делает то, что вы описываете для меня.
8128

2
Извини, я имел ввиду dpkg -l. (Обновлено.)
пул

2
Без пакета ubuntu-desktop можно получить отлично работающий рабочий стол. Это всего лишь метапакет, обеспечивающий установку определенного стандартного набора вспомогательных приложений, таких как панели управления, специфичные для Debian и т. Д., Вместе с вашим рабочим столом. Если вы удалите какой-либо из них, тогда ubuntu-desktop также будет «удален», но у вас все равно будет рабочий стол. Было бы намного лучше проверить пакет xserver-xorg-core. Несмотря на то, что наличие этого пакета не гарантирует его использования, нет веской причины устанавливать его на компьютере, не являющемся рабочим столом.
Томасруттер

Да, тот факт, что между рабочим столом и сервером нет четкой границы, широко обсуждается в большинстве ответов, включая мой. Но ubuntu-desktopэто разумный тест на то, есть ли у вас рабочий стол Ubuntu. Если вы устанавливаете с настольного CD / ISO, у вас будет этот пакет.
пул

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установлен ли . Это может произойти на серверах, но на самом деле это не связано с тем, используете ли вы серверную ОС или нет.
пул

5

Это может быть не самый быстрый или самый чистый способ сказать, но запустите:

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

Если установленный в данный момент пакет linux-image содержит слово «сервер», значит, вы используете Ubuntu server.

Например, текущий последний пакет ядра для рабочего стола 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 все поддерживаемые пакеты получают одинаковое время поддержки без различия между сервером и рабочим столом.
пул

2

Я запускаю обнаружение в большой сети и пытаюсь отличить Linux, установленный как рабочая станция, от сервера (потому что мы будем относиться к ним по-разному).

Я надеялся на атрибут или файл, который имел Ubuntu-Server вместо Ubuntu.

Я нахожу некоторые интересные файлы в / var / log / installer:

media-info говорит «Ubuntu-Server» для сервера и просто «Ubuntu» для настольного компьютера. Системный журнал показывает ту же информацию для "CDROM"

Оба они полезны, и я могу использовать их вместе с информацией об оборудовании. Это должно сказать вам, по крайней мере, какая версия была установлена ​​изначально.


1

«Почти» тот же вопрос был задан здесь: Знай сервер распространения 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-общий
  • гном-оболочки

и некоторые другие, которые связаны с определенными производными


Мое приложение зависит от распределения сервера

Даже если нет смысла запускать серверное приложение в настольном выпуске, не должно быть никаких проблем с установкой всех зависимостей для вашего приложения в настольном выпуске и обеспечением его работы.

Можете ли вы объяснить, почему это зависит от дистрибутива сервера?


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.