Дневник импортозамещения. Linux GUI – ложное искушение

А что находится под графической оболочкой.

Путеводитель по краткой истории GUI в Linux.

Администрирование в Linux GUI неизбежно приводит к командной строке.

Поддержка SUID в Linux GUI — будет ли совместимость?

Сначала проверь (32bit or 64 bit), а потом запусти.

Как понять причину ошибки из пустого окна GUI?

Мониторинг с графиками и без GUI.

Linux — свободные отношения без обязательств.

А что находится под графической оболочкой.

Сейчас на волне импортозамещения везде можно услышать, что в Linux есть gui интерфейс «как в Windows», а количество gui приложений растет с каждым днем. И вообще практически  все в Linux бесплатно, и пора уже снять с себя ярмо Windows, который замучал своими принудительными обновлениями.  Вы же пробовали уже их отключить насовсем? Успешно?

Да удавка Windows затягивается с вводом политики WAAS (Windows as service), которую пока обкатывают на простых пользователей, но очевидно скоро доберутся до корпоративных систем, которые намертво привяжут их к облаку Microsoft.

Начинаем путешествие в Linux? Нас там ненавязчиво ждут с 1С, Postrges  и еще другим офисным набором софта. Тем более с разных сторон идут утверждения типа

«Postgres на Windows — это дурной тон» , «Будете ждать пока Microsoft вас отключит?»

Когда начинаешь работать с Linux на уровне администрирования, от Linux GUI возникает  послевкусие как от дикого райского острова на Мальдивах. Ну да дикий бесплатный райский остров манит издалека, белым песком, пальмами –, а как высадишься и зайдешь в эти пальмы, видишь горы мусора и — как будто в Строгино попал после шашлыков. Вот и приходится брать с собой мусорные мешки c дайвбота, чтобы расчистить поляну и скорей погрузиться в голубую бездну заставки Windows.

Наверняка найдутся те, кто считает администрирования GUI не нужен  и даже Midnight Commander commander лишнее — долгой Вам работы с командной строкой. То, что у кого-то «бабушка использует Linux» я охотно поверю, а вот то, что администрирование в Linux в GUI это легко и просто … покажите в каком из сотни активных дистрибутивов Linux?

Linux Distributions Timeline (wikimedia.org)

Я конечно, имею ввиду начальный уровень серверного администрирования — развертывание приложений, организация Remode desktop сервера, performance and tuning. Управление сотнями серверов и другой высший пилотаж — это уже совсем другая история

Ну раз уж путешествовать  в сторону Linux (а какие сечас альтернативы для 1С?) ,   важно после «выхода из зоны комфорта» прийти к в состояние дзена на Linux, а не в состояние «мыши плакали и кололись… и продолжали жрать …».

Вы же не переделываете горнолыжный склон под себя — Вы просто выбираете оптимальный путь. Стиль жизни может поменяться, но «рай в шалаше бунгало» подразумевает теплый тропический душ и туалет не далее 20 метров. Все зависит от начальной точки путешествия — у меня это Windows, и смотреть я конечно буду не только из «окна».  Конечно, я не могу смотреть с точки зрения опытного путешественника по Linux, но посмотрев с других точек зрения можно вскрыть очень многое Сколько точек зрения у Архитектора в ИТ?

Путеводитель по краткой истории GUI в Linux

Вообще-то историю пишут победители. Кто победит в основах GUI Linux — вопрос открытый, но краткое понимание о истории GUI можно посмотреть у претендента   Wayland. Особенно описание

причин,  почему они решили заменить X11 с условной обратной совместимостью. Вот пара картинок из которых появится общее понимание

9f58dc32549b9d150aeacbf5c5ae1442.jpg

Я еще помню, как учился в университете на машинах с X Window в середине 90х. Да там был GUI на основе X11 протокола, однако что–то пошло не так и на текущий момент мы имеем примерно такую ситуацию

Pekka Paalanen: What does EGL do in the Wayland stack (ppaalanen.blogspot.com)

925ba1e6a8521cfcbdb996d2198aa5bc.png

Ответ на вопрос — «Почему Linux с GUI так и не стал конкурентом c Windows?» кроется в отношениях communitу, а в этих отношениях там «все сложно».

Если хотите понять в каком месте находится GUI в Linux — достаточно посмотреть набор стандартов Linux Standard Base LSB Specifications (linuxfoundation.org) . Старый X11 Linux Standard Base Desktop Specification, Generic Part (linuxfoundation.org)  он считается стандартом, но на текущий момент не удовлетворяет сообщество разработчиков (см ссылки выше)

По факту альтернативы Linux Standard Base Trial Use Specification (linuxfoundation.org) на уровне «Trial Use»  с 2015 года. Да это не сковывает никого в творчестве и «души прекрасные порывы» превращаются в «многобразие и свободу выбора» .

Как это работает практике — посмотрим на простых примерах ниже.

В качестве базы возьмем сервер на Oracle Linux c графической оболочкой GNOME,   и Remote desktop на основе Xrdp + XVNC. Попробуем несколько простых действий в GUI

Пример 1. Установка тонкого клиента 1C с GUI инсталлятором.

Пример 2. Установка СУБД Oracle на Oracle linux, с использованием графического инсталлятора ./RunInstaller и утилит типа ./dbca. Они традиционно для Oracle написаны на Java.

Пример 3. Мониторинг системы средствами GUI.

Почему Oracle linux? Просто это официально бесплатный Red hat, который Oracle позиционирует как проверенный вариант для своей СУБД. Для Postgres он тоже хорош по опыту эксплуатации. Т.е. я пытаюсь получить прежде всего платформу, проверенную для СУБД. Linux трудозатратен в эксплуатации (об это ниже), поэтому я предпочитаю тратить время на сервер приложений с Remote desktop (а не на рабочие станции) , тогда цена усилий хотябы оптимизируется по числу пользователей.

Администрирование в Linux GUI неизбежно приводит к командной строке.

В GNOME есть аналоги проводника — Files (nautilus)

c0f4ec5cdd52faf1bc8dccdb6bab5e02.JPG

Попробуйте запустить setup-thin-8.3.23.1739-i386.run — ответ молчание

Попробуйте запустить setup-thin-8.3.23.1739-x86_64.run выведется сообщения о необходимости прав root  и в GUI окне

f34792df404d85a9a329605b64add456.JPGacffc46de11ab2a2c3d9bbc3c78d2c68.JPG

А как в GUI запустить что то под root?

А как увидеть сообщение об ошибках если приложение ничего не пишет на экран?

Гугл и ChatGPT отправят Вас искать extensions либо gksudo. Где-то просто рекомендуют войти в GUI под root с паролем для root, что по многим причинам плохо и именно поэтому в коммандной строке появилась команда  sudo  su или sudo? / Хабр (habr.com).

Вообще сразу возникает вопрос —

Почему GNOME сразу не предоставляет аналоги sudo в стиле GUI?

После Windows кажется диким, что в GUI нет из коробки «Run as administrator» и то что в Linux может быть только один пользователь с правами root. Если Вы включите своего пользователя в группы root, weels и добавите в /etc/sudoers — вы всеравно не обойдетесь без sudo. И sudo это не аналог User Account Control в windows

В общем помучавшись с GUI сразу вспомнил, что в MS DOS был всегда Norton commander, в Linux есть midnight commander (mc) — установил и получил в командной строке с «текстовым GUI» .

Плюсы такого решения очевидны — быстрая навигация, просмотр , возможность sudo mc и виден поток ошибок. Например, 32 битный инсталлятор

$  ./setup-thin-8.3.23.1739-i386.run 

Выдаст Вам странное, но хоть что то 

bash: setup-thin-8.3.23.1739-i386.run: command not found…

и разгадку Вы сможете получить тоже через командную строку

64 х битный инсталлятор ./setup-full-8.3.23.1739-x86_64.run  запустился, но не как хотелось в GUI — видимо разработчики 1С знали, что большинство не дойдут до красивой картинки и сделали вариант запуска инсталлятора через командную строку (он даже в небольшим количеством опций неудобен). Неужели нужно устанавливать пароль root и логиниться под ним в GUI?

9de58c53349fb0b3a34895d3d4456f06.JPG

Знакомое чувство, когда отель формально имеет звезды, но не оправдал ожиданий? Так и мне стало депрессивно от мысли, что импортозмещаться придется на технологи, c usability 25 летней давности. А когда, на последнем 1С DevCon видео инсталляции 1С сервера было полностью в командной строке, на облегченном от GUI сервере Linux, стало совсем грустно.

Поддержка  SUID в Linux GUI — будет ли совместимость?

После копирования файлов дистрибутивов я конечно проверил (и поправил)  права на файлы инсталлятора  по маске rwx

 ls -l setup*
-rwxrwxrwx 1 1CUnlimited_linux 1c 277099553 июн  4  2023 setup-thin-8.3.23.1739-i386.run
-rwxrwxrwx 1 1CUnlimited _linux 1c 279629502 июн  4  2023 setup-thin-8.3.23.1739-x86_64.run

Т.е. формально на x — execute права есть, но в Linux есть еще так называемый SUID

Linux permissions: SUID, SGID, and sticky bit | Enable Sysadmin (redhat.com)

«Commonly noted as SUID, the special permission for the user access level has a single function: A file with SUID always executes as the user who owns the file, regardless of the user passing the command. If the file owner doesn’t have execute permissions, then use an uppercase S here.»

Т.е. если сделать

Sudo chown root:1c setup*
Sudo chmod ugoa=rwx setup*

А потом добавить special permission

Sudo  chmod u+s setup*

Мы получим

-rwsrwxrwx 1 root 1c 277099553 июн  4  2023 setup-thin-8.3.23.1739-i386.run
-rwsrwxrwx 1 root 1c 279629502 июн  4  2023 setup-thin-8.3.23.1739-x86_64.run

В теории запуск данного файла должен быть под правами root даже если это делаем из nautilus (GUI проводник) –, но по факту результата нет. GNOME это игнорирует. Такое впечатление что GNOME к правам Linux относится совершенно игнорируя традиции коммандной строки. Формально он не обязан, поскольку на это нет стандартов для Linux GUI. И вот тут приходит осознание что Windows архитектурно более стройна и прозрачна — Windows GUI отражает нижний уровень, который доступен как с коммандной строки, так и с GUI. Назвать это недоработками Linux  язык не поворачивается, это какой то архитектурный треш.

В общем путешествие остановилось на развилке у того самого камня

А) На лево пойдешь — Будешь ставить до посинения extensions, gksudo и изучать надстройку политик и прав в GNOME. А если не получится тогда перебирать все имеющиеся оболочки типа KDE и etc.

Б) На право пойдешь — Будешь  заходить в GUI явно под root  (раздав пароль всем админам сервера). Здесь откроется ящик пандоры — ведь в Linux завести  пользователя полностью эквивалентного root, можно опасным способом sudo useradd -ou 0 -g 0 1СUnlimited_linux т.е. по сути разрешив  два пользователя под одним UID. Но посмотрите фатальные последствия в комментах HowTo: Grant Root Access to User — Root Privileges — Linux — ShellHacks.  А безопасные (см выше включение в группы wheels и т.д.  ) инсталлятор не считает рутом. В Windows например, можно спокойно создать полноценного пользователя с правами админа, с нужным именем и достаточными правами. Это интересное направление путешествия, но в тупик.

В) Прямо пойдешь — будешь ставить все из терминала через RPM используя midnight commander и подобные средства для повышения продуктивности. И будет у тебя тьма командной строки на экране

Я для себя выбрал третье, поскольку GUI в Linux на примере GNOME, достаточно странная оболочка, которая игнорирует администраторов как пользователей. И это явно не связано с безопасностью, поскольку терминал доступен из GNOME со всеми нужными командами. Для бабушки да подойдет — запуск с ярлыка там есть, сама, как на Android, она себе приложение не поставит и хорошо. Потому что в Linux нет apk, а есть менеджеры пакетов, которые после установки требуют еще дополнительных действий (просто прочтите полное руководство по инсталляции клиента 1С Глава 2. Установка и обновление системы :: Руководство пользователя :: 1С: Предприятие 8.3.26. Документация. Тестовая версия (1c.ru))

А управление атрибутами требует административного понимания , например , u=s будет уже неверно!!!

Sudo chmod ugo=rws setup*
ls -l setup*
-rwSrwSrw- 1 root 1c 277099553 июн  4  2023 setup-thin-8.3.23.1739-i386.run
-rwSrwSrw- 1 root 1c 279629502 июн  4  2023 setup-thin-8.3.23.1739-x86_64.run

Сначала проверь (32bit or 64 bit), а потом запусти

Выше был пример запуска $  ./setup-thin-8.3.23.1739-i386.run  со странным сообщением

bash: setup-thin-8.3.23.1739-i386.run: command not found…

или No such file…

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

which ./setup-thin-8.3.23.1739-i386.run

Проверить информацию о файле

stat ./setup-thin-8.3.23.1739-i386.run
  File: ./setup-thin-8.3.23.1739-i386.run
  Size: 277099553 	Blocks: 541216     IO Block: 4096   regular file
Device: fc00h/64512d	Inode: 8402463     Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (54331/      1c)
Access: 2024-05-11 21:53:52.734371578 +0300
Modify: 2023-06-04 15:00:23.000000000 +0300
Change: 2024-05-11 21:53:52.733371587 +0300
 Birth: 2024-05-11 21:50:15.820405079 +0300

И наконец посмотреть

file ./setup-thin-8.3.23.1739-i386.run

./setup-thin-8.3.23.1739-i386.run: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, stripped

Информацию о структуре исполняемого файла. Тут видно что он 32 битный, а у меня 64 битный linux

Hostnamectl
    Virtualization: vmware
  Operating System: Oracle Linux Server 8.9
       CPE OS Name: cpe:/o:oracle:linux:8:9:server
            Kernel: Linux 5.15.0-205.149.5.1.el8uek.x86_64
      Architecture: x86-64

В Linux конечно можно запустить 32 битное приложение, вопрос только в количестве времени на установку дополнительных package

Кроме как из командной строки подобные проблемы в GNOME не диагностировать , в 

$ journalctl /usr/bin/gnome-shell
$ journalctl /usr/bin/gnome-session
$ journalctl -xe

Это не фиксируется

В Windows  критические для ОС ошибки и предупреждения как правило фиксируются в Event Viewer (тоже Gui приложение)

Как понять причину ошибки из пустого окна GUI?

Однако бывают ситуации, когда для решений проблем GUI нужно идти до конца поиска в google.

Я много ставил Oracle на Windows и прочитав путеводитель Oracle для Linux был удивлен его  сухостью, как будто авторы ловили кайф от тех же самых процессов на Windows. А ведь Linux — вроде как «родная» ОС для Oracle.

При инсталляции Oracle в Linux удобно развернуть rpm пакет, а потом использовать либо ./runInstaller с образа либо ./dbca, для создании базы с нужными параметрами. Без GUI тут тяжело, так как параметров много.

Конечно можно все сделать скриптами через SQLPlus в терминале, но лучше помучится и запустить GUI. Однако, когда появляется пустое окно — вера в чудеса возвращается

2cdd92ad3a15525f2db9ef7f45349df3.JPG

Как будто все шрифты и контролы куда-то испарились. А ведь этот мультиплатформенный wizard на java. Правильные вопросы к google приведут к настройкам файла /etc/xrdb/xrdp.ini

«xserverbpp=

Specifies color depth of the backend X server. The default is the color depth of the client. Only Xvnc and X11rdp use that setting. Xorg runs at 24 bpp.»

Этот файл отвечает за настройку подсистемы удаленного доступа Xrdp. Я использовал Xvnc+xrdp и значение по умолчанию давало такой эффект. Если поставить значение 24- все контролы и шрифты появляются.

Формально конечно виноват не стек Gui. Но когда на разнообразие вариантов  стека Gui  накладывается разнообразие вариантов удаленного доступа, такие проблемы просто неизбежны. Поэтому несмотря на стандарты Linux, мы имеем сотню дистрибутивов разной степени работоспособности и качества сборки.

Мониторинг с графиками и без GUI

После нескольких поездок за границу, энтузиазм притупляется и начинаются вопросы о смысле. Вот зачем ездить в Египет — где только пустыня, жара и красное море? Может проще в Турцию? Те кто смотрит глубже сразу скажут — ради красного моря. Потому что по чистоте и живности для дайвинга оно уникально, и хочется туда возвращаться снова и снова. Вот Мальдивы тоже хороши, там больше шансов поплавать безопасно с акулами, но такой чистоты и буйства жизни там нет. Иными словами место для туриста должно содержать киллерфичу, которую на родине не найти.

Какие киллерфичи может дать GUI в Linux по сравнению с коммандной строкой?

Наличие аналога Event Viewer Windows? Формально
в GNOME есть Logs, но он просто повторяет journalctl без расширенной функциональности. Более того journalctl –system показывает разные данные если сравнить
с logs раздел system

005cb9e99847e68fdbdd3fe89ce5e926.JPG

·         Аналог Computer management\Server manager?  — формально есть приложения GNOME для оборудования в разделе Utilities. Сразу видно, что сильно урезано особенно дисплей, но пока пойдем дальше.

·         GUI версии Task Scheduler, Print manager, Firewall?  — Надо где-то искать по репозиториям, не буду на этом зависать, поскольку лишнего в Linux не положат

·         Администрирование прав и ресурсов через GUI, что-то аналогичное адмнистрированию домена? Ну тут вряд ли стоит ожидать что-то из коробки, поскольку Linux не привязан в данном случае к какому-то одному стандарту. Пропустим.

·         Мониторинг с графиками? Вот тут представлением в стиле команды top уже не отделаться.

Есть замечательный путеводитель Более чем 80 средств мониторинга системы Linux / Хабр (habr.com) из которой ясно, что графики нужно еще поискать.

Вообще — зачем они они нужны? Например, этих статьях показаны чудеса, которые случаются при виртуализации

1С + MS SQL против Матрицы виртуализации / Хабр (habr.com)

1C MSSQL Против Матрицы  виртуализации — Перезагрузка / Хабр (habr.com)

Если кратко — вы можете обнаружить ситуацию, когда загрузки ресурсов нет, но при этом все работает медленно — как будто кто-то душит. А у администраторов гипервизора тоже все » в порядке» — загрузки нет, значит ресурсов навалом.

А когда начинаешь разбираться выясняется, что

·         Либо какой-то важный процесс работает только с одним ядром, и на него возникает очередь

·         Либо очереди и ожидания возникают по цепочке на разных ресурсах.

Такие головоломки решаются только анализом графиков, по счетчикам очередей и ожиданий. Ожидания и очереди могут быть как от загрузки какого ресурса (это может быть ядро, на котором висит процесс), либо от блокировок различного вида.

Если брать импортозамещение на Postgres, там тоже нужно анализировать задержки даже в таком случае

Как эффективно настроить autovacuum в Postgres для 1С

На высоконагруженных системах без виртуализации — без графиков так же сложно понять как события соотносятся друг с другом.

В Windows  с этим идеально — есть

Performance monitor \ Resource monitor и это не просто несколько счетчиков, это интерфейс для всех счетчиков Windows. Поэтому я предпочитаю нагрузочные тесты Postgres гонять на Windows, там проще понять где узкие места, а уже потом проверять настройки и параметры на Linux. Здесь проверенные тестами параметры

Инструкция по установке Postgres для OLTP приложений и 1С. Часть 1 Базовая конфигурация.

В linux сложнее, в GNOME есть System monitor –, но это аналог урезанного Resource Monitor windows.

 А если нужно кроме загрузки ресурсов  задержки (секунд на операцию), очереди на ресурсы (queue)?

Все путеводители по запросу с приставкой GUI сворачивают на утилиты командной строки.

Конечно типовой  iostat -xt 1 будет выдавать статистику каждую секунду в тексте, а по нему наверное уже нужно строить график?

Есть еще iotop, но там урезанный набор статистики. И все они выводят данные в виде текста на момент времени

f95a733a0a8bb76977b672bf96a7501d.JPG

Вы можете попробовать установить с первой попытки Monitorix, но как везде в Linux если установка превращается в квест проще изменить себя перейти обратно к командной строке.

В общем для меня открытый вопрос — есть ли аналог Performance monitor (Windows) в Linux? Отдельные утилиты найти можно, но там опять не все. Пока я не понимаю, как можно серьезно использовать Linux не имея нормального GUI мониторинга. Тут четко видна разница между платной Windows и бесплатным Linux. Скорее всего среди продуктов типа Zabbix я потрачу время и найду нужное\за плату, а в платной ОС Windows средства мониторинга уже идут из коробки  без лишних движений.

 Ах да в Red Hat (Oracle linux) есть nmon — вроде попытка собрать все, но очередей и (секунд на операцию) Вы там не найдете

a386664e37cc2a5173f41067eb78af60.JPG

Linux — свободные отношения без обязательств

Я думаю Вы уже поняли, что GUI в Linux  для администратора это не стройная система. Ее можно сравнить с творениями Хундертвассера в Австрии. Вот такое ощущение остается от GUI Linux

867751749b4d36f42c9aeaf8df59ad31.jpg

И вроде бы дом соответствует всем СНИПам,  аутентичен, экологичен и т.д., но есть ощущение, что творили его бессистемно и искусственно.  «Я художник, я так вижу» . Даже не поймешь — есть ли тут стиль , или надерганные по Австрии элементы создают иллюзию стиля.

Поэтому Linux используют все кому не лень только для того чтобы … разобрать на органы  взять ядро и построить на его базе что то более user friendly. Такой путь прошел Android, который хорошо показал, что можно сделать из Linux, если отказаться от Linux way Как Unix-way убивает десктопный Linux / Хабр (habr.com) .  И дело не только в GUI — обычные обновления это уже сложная для Linux тема.

В Linux много разных GUI оболочек, но для серьезной работы на уровне администратора важны не фичи или улетный дизайн, а хотя бы корректная трансляция концепций, работающих в командной строке, в оболочку GUI. Пока этого не видно. А когда почитаешь вот такие статьи Stop asking «What«s Linux«s GUI?» | by Jesse Portnoy | Medium  понимаешь, что без вмешательства свыше ситуация не изменится. Такое впечатление что GUI в Linux это приманка для пользователей, а не средство эффективной работы. Если GUI не отражает архитектуру системы, это просто ярлычки с окошками и не более. А да еще набор графических утилит, а не программ администрирования. Я вообще думал, что время утилит на каждый вопрос уже ушло, но нет вот они рассыпаны по системе.

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

Почему Oracle предоставляет Oracle linux бесплатно? — да чтобы иметь независимый движок для своей СУБД и продуктов, и не давать повода использовать Microsoft. Очевидно, что тут уже не до GUI .

Если сравните ситуацию с Java community — там все гораздо красивей и продуманней. И даже противостояние Spring vs базовый Java EE, только улучшает стандарты. Возможно потому что Java community делает инструмент для себя  и поэтому стремится к более эффективным стандартам.  

Есть в Linux GUI для администратора вот в чем вопрос?

Пока для меня он остается открытым, надеюсь бывалые путешественники подскажут, где среди сотни  Linux Distributions Timeline (wikimedia.org) дистрибутивов Linux можно найти серверный, позволяющий максимально уйти от командной строки?

В России на волне санкций есть хороший шанс на базе Linux сделать какой-то аналог MacOS  . Тем более что на ИТ стали выделятся деньги, а другого выхода для серьезной работы просто нет. До новых импортозамещений  на нашем канале t.me/Chat1CUnlimited . Лето будет жарким

© Habrahabr.ru