Jak sprawdzić, czy Ubuntu Desktop lub Server jest zainstalowany?

34

Mam dzielonego hostingu. Mam dostęp do powłoki. System operacyjny to Ubuntu i chcę sprawdzić, czy jest to wersja serwerowa czy stacjonarna.

Kiedy loguję się przez powłokę, pokazuje następujące informacje:

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
Naveed
źródło

Odpowiedzi:

20

Ta odpowiedź nie jest tak wytrawna i sucha, jak niektórzy ludzie rozumieją. Możesz ubuntu-standardzainstalować pakiet i używać go jako serwera. Możesz użyć ubuntu-minimaljako serwer. Możesz go wziąć ubuntu-desktopi złamać, aby nie używał X ... Lub nawet zostaw X tam do administracji (eww). Możesz zmienić pakiety jądra z -server na -generic na -rt itp. Możesz zmienić motd lub nawet po prostu zaktualizować wersję, w której motd nie jest tak długi jak nowy (żaden z moich serwerów nigdy nie wyszedł z całym tym guffem - prawdopodobnie dlatego, że są uaktualnione ze starszych LTS).

Sądzę, że pytania, które powinniśmy wszyscy zadać, to: Dlaczego to ma znaczenie? Czego się uczysz? Jaką to dla ciebie robi różnicę?

Jeśli próbujesz uruchomić coś graficznego, sprawdź, czego naprawdę potrzebujesz (X, x11vnc itp.). Jeśli próbujesz sprawdzić, czy nie ma interfejsu graficznego, zrób to samo!

Oli
źródło
+1. Dlaczego jest to ważne? Cóż, rozważ ksplice. Pulpit jest bezpłatny, serwer nie jest ...;)
0xC0000022L
1
Cóż, to jest bardziej szczegółowe pytanie: co sprawdza ksplice, aby zdecydować, czy możesz użyć darmowej wersji na komputery. Domyślam się, że sprawdzają kompilację jądra serwera vs.
poolie
1
Dlaczego to ma znaczenie? Nie mam uprawnień do zastąpienia systemu, więc muszę go usunąć z klastrów, zaczynając od znajomości oryginalnego systemu. Czego się uczysz? Tylko o to poproszono: czy była to instalacja na serwerze lub na komputerze. Co to dla ciebie robi różnicę? Jeśli była to instalacja serwera i jest pełna rzeczy X, powinniśmy zwolnić naszych informatyków itp.
Jan Kyu Peblik,
@JanKyuPeblik Jeśli dostałeś uszkodzony system i nie jest to oczywiście pulpit, powinieneś zapytać osobę zgłaszającą usterkę . Poważnie. Komputery to nie samochody. To nie jest lista specyfikacji wartości roboczych i tolerancji. Wszystko można konfigurować. Chodzi o to - w odniesieniu do twoich myśli - osoba przekazująca system mogła łatwo wziąć serwer i skonfigurować go jako pulpit. Jeśli zmienisz go z powrotem w serwer, wyrządziłeś krzywdę. Techniczne rozróżnienie między nimi w czasie instalacji nie ma znaczenia dla problemu. To, co wyróżniono w 2010 roku, jest teraz znacznie mniejsze.
Oli
Wszystko, co z tego wyciągnąłem, to „historia jest głupia”.
Jan Kyu Peblik,
34
dpkg -l ubuntu-desktop 

poinformuje Cię, czy sugerowane komponenty pulpitu są zainstalowane.

uname -a

powie ci, czy serwer lub ogólne jądro jest używane.

„Komputer stacjonarny lub serwer” nie jest kwestią binarną - możliwe jest zainstalowanie niektórych składników pulpitu na komputerze pierwotnie zainstalowanym jako serwer itp.

Musisz zdecydować, którego pakietu chcesz użyć jako kluczowego rozróżnienia między „serwerem” lub „komputerem stacjonarnym”. Może xserver-xorgjest to dobry wybór, choć nawet niektóre serwery będą miały taką możliwość w zależności od pakietów lub do obsługi zdalnych komputerów stacjonarnych.

poolie
źródło
2
dpkg -i ubuntu-desktop nie robi tego, co dla mnie opisujesz.
8128,
2
Przepraszam, miałem na myśli dpkg -l. (Zaktualizowano.)
poolie
2
Możliwe jest posiadanie idealnie działającego pulpitu bez pakietu ubuntu-desktop. To tylko metapakiet zapewniający zainstalowanie określonego standardowego zestawu aplikacji pomocniczych, takich jak panele sterowania, rzeczy specyficzne dla Debiana itp. Wraz z komputerem. Jeśli usuniesz którykolwiek z nich, to ubuntu-desktop również zostanie skutecznie „usunięty”, ale nadal będziesz mieć pulpit. Lepiej byłoby zamiast tego sprawdzić pakiet xserver-xorg-core. Chociaż istnienie tego pakietu nie gwarantuje, że zostanie on użyty, nie ma dobrego powodu, aby instalować go na komputerze innym niż stacjonarny.
thomasrutter
Tak, większość odpowiedzi, w tym moja, była szeroko dyskutowana o tym, że nie ma ostrej granicy między komputerem a serwerem. Ale ubuntu-desktopto rozsądny test na to, czy masz komputer Ubuntu. Jeśli instalujesz z komputera CD / ISO, będziesz mieć ten pakiet.
poolie
15

można to sprawdzić, pisząc cat /etc/motd. Dane wyjściowe będą różne na serwerze i różne w wersji na komputery.

Pulpit:

Ubuntu 10.10

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

Serwer:

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  

Warto również wspomnieć, że ten plik jest łatwo edytowalny przez sudo, co odbywa się bardzo często, ponieważ jest to komunikat, który użytkownik widzi, gdy loguje się przez ssh.

Pawełkowy
źródło
2
To głównie mówi, czy landscape-clientjest zainstalowany. Może się tak zdarzyć na serwerach, ale tak naprawdę nie ma to związku z tym, czy używasz systemu operacyjnego serwera, czy nie.
poolie 11.11.10
5

To może nie być najszybszy lub najczystszy sposób na stwierdzenie, ale uruchom:

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

Jeśli aktualnie zainstalowany pakiet linux-image zawiera słowo „serwer”, oznacza to, że używasz serwera Ubuntu.

Na przykład aktualny najnowszy pakiet jądra dla pulpitu Ubuntu 10.10:

linux-image-2.6.35-22-generic

I serwer:

linux-image-2.6.35-22-server

Bardziej ogólny pakiet, który powinien być taki sam w różnych wersjach Ubuntu, linux-image-genericjest pakietem domyślnym dla pulpitu Ubuntu i linux-image-serverjest domyślny dla wersji serwerowej.

ayan4m1
źródło
4
Możesz uruchomić jądro serwera na instalacji na pulpicie tak samo, jak jądro na serwerze. To nie jest ostateczna odpowiedź w żadnym przypadku.
Oli
@Oli: jak już zauważyłeś, wydaje się, że nie ma jednoznacznej odpowiedzi;)
0xC0000022L
4

Na to pytanie nie ma jasno określonej, po prostu sformułowanej odpowiedzi.

Możliwe jest załadowanie funkcji pulpitu na serwer i usunięcie ich z pulpitu. Głównym problemem jest to, które pakiety są częścią funkcjonalności serwera , i otrzymają dodatkowy okres wsparcia i aktualizacji.

Najlepszą odpowiedzią (IMHO) można znaleźć w pytaniu Launchpad (od 2008 roku):

Jaka jest różnica między wersją serwerową a komputerową?

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

david6
źródło
Czy możesz tutaj streścić wynik pytania dotyczącego Launchpad?
Peter Mortensen
2

Musisz pamiętać, że nie ma zasadniczej różnicy między wersjami Desktop i Server.

Jest jednak wysoce prawdopodobne, że twój dostawca hostingu nie ma wszystkich elementów graficznych, takich jak GNOME na szczycie stosu, ponieważ nie jest to potrzebne. Zainstalowane pakiety sprawiają, że jest to serwer.

Możesz być zainteresowany ubuntu-maintenance-checkskryptem ( linkiem ), który informuje o cyklu konserwacji każdego zainstalowanego pakietu - te, które mają dłuższy okres, to pakiety serwera.

8128
źródło
Najwyraźniej od 12.04 wszystkie obsługiwane pakiety mają ten sam okres wsparcia bez rozróżnienia między serwerem a komputerem stacjonarnym.
poolie
2

Korzystam z funkcji wykrywania w dużej sieci i staram się odróżnić od systemu LINUX zainstalowanego jako stacja robocza w porównaniu do serwera (ponieważ potraktujemy je inaczej).

Miałem nadzieję na atrybut lub plik, który miał Ubuntu-Server zamiast Ubuntu.

Znalazłem kilka interesujących plików w / var / log / installer:

media-info mówi „Ubuntu-Server” dla serwera i tylko „Ubuntu” dla komputerów stacjonarnych. syslog pokazuje te same informacje dla „cdrom”

Oba są pomocne i mogę ich używać w połączeniu z informacjami o sprzęcie. Powinno to powiedzieć ci przynajmniej, która wersja została pierwotnie zainstalowana.

Sean Perdew
źródło
1

„Prawie” zostało zadane to samo pytanie: poznaj serwer dystrybucyjny Ubuntu lub komputer stacjonarny

Chciałbym również zamieścić tutaj swoją odpowiedź, ponieważ zawiera ona kilka nowych wskazówek, jak sprawdzić, czy masz wersję na komputer czy serwer.

Jak wspomniano w poprzednich postach, nie jest łatwo ustalić, czy korzystasz z wersji stacjonarnej, czy serwerowej, ponieważ cały pakiet można zainstalować lub usunąć.

Jeśli jesteś w spójnym i przewidywalnym środowisku, ustalenie, czy komputer, czy serwer, nie powinno być trudne.

Używam tylko serwera ubuntu-desktop (waniliowego) lub ubuntu. Dla mnie dpkg -l ubuntu-desktopjest to bardzo niezawodna metoda ustalenia, czy jest to komputer stacjonarny czy serwer.

Jak wspomniano w łączonym poście, nie jest łatwo ustalić, czy korzystasz z wersji stacjonarnej czy serwerowej, ponieważ wszystkie pakiety można zainstalować lub usunąć.

Oto moja funkcja, której używam w swoich skryptach. Zasadniczo sprawdza, czy zainstalowany jest xserver-common czy xwayland. Jeśli jeden z nich jest zainstalowany, oznacza to, że jest to system stacjonarny.

#!/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
}

Oto kilka innych rzeczy do sprawdzenia:

Domyślnie wersja serwerowa używa klasycznej wersji /etc/network/interfaces, podczas gdy wersja biurkowa działa z Network Managerem, więc sprawdź, czy Network Manager jest zainstalowany

dpkg -l network-manager

Lub uruchom polecenie nmcli (narzędzie wiersza poleceń dla NM), jeśli pojawi się taki komunikat:

The program 'nmcli' is currently not installed. You can install it by typing:
sudo apt-get install network-manager

prawdopodobieństwo, że jesteś na serwerze, jest wysokie. Pamiętaj jednak, że możesz zmodyfikować serwer, aby działał z NM.


Użyj następującego polecenia, aby ustalić, czy składniki pulpitu są zainstalowane

dpkg -l ubuntu-desktop

Na serwerze otrzymasz następujący komunikat:

dpkg-query: no packages found matching ubuntu-desktop

Na pulpicie pojawi się komunikat informujący, która wersja jest zainstalowana


Sprawdź inne pakiety, które zwykle znajdują się na pulpicie:

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

albo użyj:

 dpkg-query --show --showformat='${Status}\n' *packagename* 2> /dev/null | grep "install ok installed"

sprawdź, czy serwer X działa:

ps -e | grep X
sudo netstat -lp | grep -i Xorg

Sprawdź usługi dostępne tylko na komputerze:

W zależności od wersji Ubuntu sposób sprawdzania usług:

sudo service *servicename* status # on SysVinit 
sudo status *servicename* # on Upstart
systemctl status *servicename*.service # on systemd

typowe usługi to:

  • lightdm
  • x11-wspólne
  • gnome-shell

i niektóre inne, które są powiązane z niektórymi instrumentami pochodnymi


Moja aplikacja zależy od dystrybucji serwerów

Nawet jeśli nie ma sensu uruchamiać aplikacji serwerowej w wersji na komputery, nie powinno być żadnych problemów z instalacją wszystkich zależności dla aplikacji w wersji na komputery i sprawić, by działała.

Czy możesz wyjaśnić, dlaczego zależy to od dystrybucji serwera?

karakal
źródło
0

Żadne z powyższych rozwiązań nie działało dla mnie zbyt dobrze. Czasami system nie ma motd, a może administrator go zmienił itp. Nie jestem nawet pewien, dlaczego powyższa odpowiedź była odpowiedzią „poprawną”. Oto, co ostatecznie wykorzystałem.

#!/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
Clayton Dukes
źródło
Używanie -f z $ {Status} jest dobre i użyję go. Ale nie używaj bash ze składnią sh i nieistniejącymi funkcjami, takimi jak „err”.
Tomáš Nesrovnal