unix
April 12, 2023

Откапываем и оживляем CDE

Сеанс практической некромантии, если вам вдруг стало скучно.

Вот так это выглядит. Ради фана запустил современную среду разработки.

В качестве фона:

CDE (Common Desktop Environment) это такое графическое окружение, с кнопочками и панелями. Очень старое, скорее всего оно старше большинства читателей этого поста.

CDE в естественной среде обитания - на рабочей станции начала 90х.

Это был очень дорогой, профессиональный софт, естественно закрытый, работающий на дорогом же профессиональном оборудовании «уважаемых вендоров».

Применялись такие станции например как платформа для CAD систем:

Но все меняется к лучшему а на дворе весна.

А что может быть лучше по весне, чем оживить древний кусок компьютерного говна ради красивой истории:

In February 1997, the Open Group released their last major version of CDE, version 2.1.[10]

Да да, разработка была фактически заморожена еще в далеком 1997м, а исходники CDE в публичный доступ выложили в 2012м:

On August 6, 2012, CDE was released under the LGPL-2.0-or-later license.[4][21] The CDE source code was then released to SourceForge.

На момент выкладывания оно даже не собиралось, а то что собиралось — толком не работало.

Прошло 11 лет и все уже стало несколько лучше — собирается практически везде и уже более-менее работает.

После открытия исходников, разработка CDE ведется вот тут.

Ниже опишу последовательность для самого хардкорного варианта: сборки из исходников текущей версии.

Если вам это не надо — ставьте из пакетов, благо оно уже много где есть.

Во FreeBSD все заводится с полпинка одной командой:

pkg install cde

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

Шаг первый: Motif

CDE сильно зависит от другой «древней дряни из проперженного космоса»: Motif, его придется также собирать из исходников, поскольку в системе он будет либо урезанным либо не той версии либо в виде форка LessTif.

Забираем исходники:

git clone https://git.code.sf.net/p/motif/code motif-code

Настраиваем:

./configure --prefix=/opt/motif

Тут надо заметить что я ставлю Motif в отдельный каталог /opt/motif, чтобы избежать проблем с системной версией (если она стоит).

Каких-то особых зависимостей у Motif нет, поэтому причин по которой он может не собраться исчезающе мало.

Собираем:

make && make install

В результате у вас должно появиться что-то такое:

 ls /opt/motif/lib
libMrm.a      libMrm.so.4.0.4*  libUil.so.4@      libXm.so@
libMrm.la*    libUil.a          libUil.so.4.0.4*  libXm.so.4@
libMrm.so@    libUil.la*        libXm.a           libXm.so.4.0.4*
libMrm.so.4@  libUil.so@        libXm.la*         X11/

Шаг второй: сборка CDE

Забираем исходники:

git clone https://git.code.sf.net/p/cdesktopenv/code cdesktopenv-code

Вот тут уже нужно ставить библиотеки, которых довольно много:

On debian-like systems (including Ubuntu) install the following packages:
  • autoconf
  • automake
  • libtool
  • git (for downloading from source repository)
  • build-essentials or build-essential
  • libpam-dev
  • libutempter-dev
  • libxp-dev (not available on latest linuxes, skip)
  • libxt-dev
  • libxmu-dev
  • libxft-dev
  • libxinerama-dev
  • libxpm-dev
  • libmotif or libmotif3 or libmotif4 or libxm4 (Openmotif, in non-free or restricted)
  • libmotif-dev (Openmotif, in non-free or restricted)
  • libxaw7-dev (used by dtinfo)
  • libx11-dev
  • libXSs-dev or libxss-dev
  • libtirpc-dev
  • x11-xserver-utils (for xset)
  • libjpeg62-turbo-dev or libjpeg62-dev
  • libfreetype6-dev
  • libssl-dev
  • tcl-dev
  • ksh (required for database to any script, and probably dtksh building)
  • m4 (required for nsgmls building)
  • ncompress (old style unix 'compress' needed when building help files)
  • patch (needed for new ksh93)
  • xfonts-100dpi (for nicer looking fonts)
  • xfonts-100dpi-transcode or xfonts-100dpi-transcoded
  • rpcbind (or portmap) may require running in insecure mode (-i) see section 1.5 below
  • bison
  • xbitmaps
  • x11proto-fonts-dev
  • flex
  • opensp
  • libxrender-dev
  • xrdb
  • sessreg

Motif мы собираем вручную, поэтому его ставить не надо.

Я собирал на Mageia 9, которая вроде как не поддерживается но работает.

Для Mageia у пакетов для разработки будет не -dev а -devel постфикс.

Запускаем конфигурацию:

./autogen.sh

Затем:

 ./configure --prefix=/opt/cde LDFLAGS="-L/opt/motif/lib" CFLAGS="-I/opt/motif/include" CXXFLAGS="-I/opt/motif/include"

Тут указание на собранный выше вручную Motif .

Сборка:

make -j 8

Сборка идет достаточно долго даже на современной машине и с указанием использования 8 потоков для сборки ( -j 8).

После окончания сборки, нужно будет выполнить из-под root:

make install

Часть CDE обязательно установится в /usr/dt, создав симлинки на указанный /opt/cde — так надо. По другому не заработает.

Шаг третий: настройка

В CDE есть свой собственный login manager: dtlogin, выглядит вот так:

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

Поэтому я выбрал вариант запуска CDE из Xsession, подхватываемый современными менеджерами вроде SDDM:

 cp /path/to/cdesktopenv-code/cde/contrib/desktopentry/cde.desktop /usr/share/xsessions/

В нем нужно заменить путь до запускаемого бинарника:

 cat /usr/share/xsessions/cde.desktop 
[Desktop Entry]
Name=CDE
DesktopNames=CDE
Comment=Use this session to boot into the Common Desktop Environment
Keywords=Common Desktop Environment
Exec=/opt/cde/bin/Xsession
Icon=Dtlogo.pm
Type=Application

После этого, в меню выбора окружения должен появитьс пункт CDE.

Дальше, при первом запуске вас будет ожидать вот такое сообщение:

По нажатию OK произойдет волшебство завершение сеанса. Чтобы это исправить - нужно запустить rpcbind:

service rpcbind start

Держать этот сервис включенным — опасно, это та еще дыра в безопасности, поэтому включать просто так не советую. Вы должны быть абсолютно уверены что оно закрыто файрволом снаружи.

Локализация и реальное использование

Оказалось что CDE очень даже возможно локализовать, настроить и использовать в ежедневной работе:

Если вам очень надо - вот тут лежит подробный гайд как сие реализовать. У меня к сожалению особого интереса к его ежедневному использованию нет.

Вот так оно может выглядеть:

Итого

В очередной раз убеждаюсь что софт это в первую очередь идея а не реализация. Поэтому легенды не умирают.

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

Удивительное дело но этот софт практически в два раза старше современных быдлокодеров.

Кадр из к/ф "Парк юрского периода"