Как программно определить, является ли система рабочим столом или сервером?

12

Есть ли способ отличить Ubuntu Server от Ubuntu Desktop?

У меня есть скрипт Bash ( бесстыдный плагин ), который я использую для настройки облегченных веб-серверов, и я заметил, что когда я запускаю этот скрипт на моем собственном компьютере, моя установка Ubuntu (Desktop) все испортила - я довольно уверен, виновником являются следующие строки кода:

echo -e "\e[1;32mDave, I'm removing the bloatware.\e[0m"

for halBox_package in apache2 bind9 nscd php portmap rsyslog samba sendmail; do
    if [[ -f /etc/init.d/$halBox_package ]]; then
        ( service $halBox_package stop ) > /dev/null
    fi

    ( apt-get -qq -y remove --purge "$halBox_package*" ) > /dev/null 2>&1
done

То, что я хотел бы сделать, это определить, запущен ли скрипт в варианте сервера или нет, чтобы я мог решить, удалять ли эти пакеты или нет. Если невозможно разделить вкусы, подскажите, какой пакет необходим для правильной работы Ubuntu Desktop?

Аликс Аксель
источник
@Rinzwind: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.10 DISTRIB_CODENAME=quantal DISTRIB_DESCRIPTION="Ubuntu 12.10". Ничего, что я могу использовать, чтобы определить, сервер это или рабочий стол.
Аликс Аксель
По сути, между Ubuntu Server и Ubuntu есть небольшая разница. Разница заключается, прежде всего, в том, что версия Desktop поставляется с графическим интерфейсом, но вы можете установить графический интерфейс на сервер CLI Ubuntu. Также вы можете установить серверные пакеты на версию Ubuntu Desktop с графическим интерфейсом. Я не уверен, что существует надежный и точный способ определения установочных носителей Desktop и Server.
Томас Уорд
@Rinzwind: это установка сервера. У меня также есть 3 других VPS в 2 разных провайдерах с серверными выпусками, и ни один из них не показывает строку «сервер». Я думаю, что чтение lsb_releaseпросто недостаточно надежно.
Аликс Аксель
@TheLordofTime: Да, я знаю, что они почти одинаковы. Но я подумал, что, может быть, есть хотя бы решающий пакет, который будет отличать их.
Аликс Аксель
В качестве последующего замечания, проблема заключалась в регулярном выражении пакета, которое изменило его на ( apt-get -qq -y remove --purge "^$halBox_package*" )совместимость с версиями Server и Desktop.
Аликс Аксель

Ответы:

9

команда

dpkg -l ubuntu-desktop 

Результат:

Желаемая = Неизвестный / Установка / удаление / Purge / Удержание
| Статус = Не / Inst / Conf-файлы / Распакованный / HALF-конф / Half-инст / тригонометрические-ОЖИДАНИЕ / Триг-ПЭНД
| / Err? = (Нет) / Reinst-required (Status, Err: uppercase = bad)
|| / Имя Версия Архитектура Описание
+++ - ============== - ============ - ============ - ===== ============================
ii ubuntu-desktop 1.287 i386 Настольная система Ubuntu

 - Пункт списка

Предостережение

Это не будет работать, если кто-то установит рабочий стол без использования ubuntu-desktop. Но кто это делает?

Документация

  • До 12.04 Ubuntu server устанавливает оптимизированное для сервера ядро ​​по умолчанию. Начиная с 12.04, нет никаких отличий в ядре между Ubuntu Desktop и Ubuntu Server, поскольку linux-image-server объединен с linux-image-generic.
Rinzwind
источник
Кстати, $?будет, 1если dpkg -lне в состоянии ничего перечислить, в 0противном случае. Что касается grep desktopего всегда будет совпадать, либо пакет, либо сообщение о том, что он не был найден.
Аликс Аксель
1
Хорошо, это мое последнее редактирование, я надеюсь! Вы тоже можете убрать комментарии? >: D
Rinzwind
Я просто читаю dpkgсправочную страницу, но, похоже, это работает. Если кто-то устанавливает рабочий стол без ubuntu-desktop, он должен быть достаточно опытным, чтобы решить проблемы, которые вызовет мой скрипт, так что все хорошо! : P
Аликс Аксель
( dpkg -s "ubuntu-desktop" && Ubuntu_Flavor="desktop" ) > /dev/null 2>&1отлично работает, спасибо!
Аликс Аксель