Публикации Lazarus

Сборка Lazarus из исходников

03.12.2018
Вадим Исаев
  1. Аннотация
  2. Небольшое предисловие
  3. Предварительная подготовка
  4. Сборка в Linux
    1. На основе графической библиотеки GTK
    2. На основе графической библиотеки Qt
  5. Сборка в Windows на основе WinAPI
  6. Для тех, кто не боится демонов. Lazarus + BSD
    1. Сборка в OpenBSD на основе графической библиотеки GTK
    2. FreeBSD на основе графической библиотеки Qt
    3. Пробуем на вкус "Солярку"
  7. Заключение
  8. Ссылки

1. Аннотация

В этой статье рассказывается, каким образом можно собрать на своём компьютере Lazarus из исходного кода, взятого на сайте разработчиков [1]. Описывается сборка для ОС Linux, Windows и *BSD. Для ОС OpenBSD и FreeBSD даны краткие, но исчерпывающие инструкции по созданию графической рабочей станции. Так же описана установка Lazarus на ОС OpenIndiana Hipster, которая является наследницей ОС OpenSolaris.

2. Небольшое предисловие

Хотя все современные дистрибутивы Linux предлагают установить текущий релиз Lazarus'а из своих репозиториев, однако регулярно бывает необходимо собирать Lazarus из исходного кода, из так называемых снапшотов. Дело в том, что в отличие от многих программных продуктов, которые обновляют с помощью специальных дополнительных патчей, Lazarus обновляется целиком и полностью. Для этого как раз и выпускают снапшоты, причём раз в сутки. Запросто может случиться такая ситуация, что в релизе обнаруживается какая-то ошибка, которая мешает именно вам. Тогде единственный выход из ситуации − взять текущий снапшот и откомпилировать его на своём компьютере, потому что высока вероятность, что именно в снапшоте ошибка уже исправлена. Это даже если не принимать во внимание, что в снапшоте могли ввести какую-нибудь новую возможность.

Возможно кому-то покажетсяя странным, но все снапшоты идут в виде исходного кода. Однако это не вносит каких-либо проблем, т.к. в отличие от многих разработчиков, которые тоже предпочитают выкладывать свои продукты в виде исходного кода, разработчики Lazarus свели телодвижения по сборке к самому минимуму. Фактически, единственное что нужно сделать − это в каталоге с исходниками ввести команду "make". Опять же, в отличие от других разработчиков, здесь не нужно запускать скрипт предварительной настройки сборки "configure", его просто нет. А в комплекте прилагается уже готовый файл "Makefile" на основе команд которого проводится сборка. Однако, как и у всех сложных программных продуктов, у Lazarus существуют свои нюансы. И здесь мы эти нюансы подробно рассмотрим.

Хотя в среде линуксоидов считается хорошим тоном поругать Windows, однако в Windows сборка Lazarus более простое дело, чем в Linux. Но простое только в одном случае − если сборка происходит исключительно на основе WinAPI. Если же вам взбредёт в голову собирать виндовый Lazarus на основе каких-либо других графических библиотек (GTK или Qt), то предварительно придётся устанавливать и настраивать эти библиотеки. И в этом случае ситуация сразу же перестаёт быть благостной. Поэтому такую, прямо скажем, очень редкую ситуацию, мы рассматривать здесь не будем.

3. Предварительная подготовка

Предварительно, в обязательном порядке, должен быть усиановлен компилятор FreePascal. Причём как сам компилятор, так и все его модули и утилиты. В некоторых дистрибутивах FreePascal идёт в виде большого набора пакетов. Устанавливайте их все, даже если вам покажется, что какие-то из них не понадобятся. Можно скачать готовый компилятор с сайта разработчки [2]. Там, наряду с пакетами DEB и RPM, предлагается архив с вложенным в него скриптом "install.sh", который после запуска задаст вам пару тройку вопросов и установит FreePascal, со всеми модулями и утилитами, куда вы ему скажете. Версия FreePascal большого значения не имеет. У всех современных дистрибутивов Linux (и многих BSD), FreePascal тоже современной версии. У некоторых дистрибутивов он может быть и предыдущей версии, но повторюсь, это большого значения не имеет. Если очень нужна именно последняя версия, то компилятор можно взять на сайте разработчиков. И с 99-процентной вероятностью вы там найдёте FreePascal для своего дистрибутива, даже для модных нынче ARM-компьютеров.

В обязательном порядке нужно установить исходники FreePascal. Дело в том, что среда разработки Lazarus будет вам подсказывать продолжение кода именно по исходникам. Такая подсказка − чрезвычайно удобная вешь. Хотя, конечно, если у вас 100% фотографическая память, то может быть исходники вам и не нужны. Я вот, например, без этого никак обойтись не могу.

Рекоммендуется, хотя и не обязательно, установить отладчик "gdb". Вы можете им и не пользоваться, но при первом запуске Lazarus вам попеняет на его отсутствие как на ошибку. Однако абсолютно никаких фатальных последствий его отсутствие не принесёт. Но лучше поставить, пусть будет.

Ещё одна крайне необходимая вешь, правда только для дистрибутивов Linux\BSD − компилятор "gcc". Дело в том, что вместе с этим компилятором устанавливаются некоторые объектные файлы (например "crti.o" и ещё несколько подобных), которые используются при компиляции ваших программ FreePascal'ем. Сам "gcc" при этом не используется. Что касается BSD, то у них компилятором по умолчанию с некоторых пор является "clang", поэтому если вы счастливый обладатель FreeBSD или OpenBSD систем, то проверить наличие нужно именно "clang".


Небольшое лирическое отступление про BSD

Если вы думаете, что про BSD системы в статье про Lazarus я упомянул исключительно ради красного словца, то вы ошиблись. Между прочим, в отличие от современных Linux'ов, не говоря уж про Windows, BSD системы чрезвычайно трепетно относятся к ресурсам компьютера. И если ваш компьютер не с "ух ты, зашибись!" какими характеристиками, то вместо того что-бы ставить какие-нибудь "легкие" Linux-дистрибутивы, я бы посоветовал поставить BSD и тогда у вас не будет регулярных ситуаций, когда впору ногти изгрызть до самых локтей дожидаясь ответа от компьютера. Естественно под "BSD" я имею в виду что-то вроде Free- или OpenBSD, а вовсе не MacOS, которая мало ирго что требовательна к ресурсам, так ещё и весьма привередлива к конкретным установленным запчастям...


И я искренне надеюсь, что исходный код lazaus [1] вы тоже скачали и распаковали куда-нибудь в свой домашний каталог. Пускай это будет "~/progs/lazarus". В домашнем каталогк вам для компиляции права root не понадобятся, что очень удобно − невозможно будет случайно повредить что-нибудь системное...

Немного про графические библиотеки. Все современные дистрибутивы Linux, если конечно в них предусмотрен графический интерфейс, ставят комплект библиотек и для GTK, и для Qt по усолчанию. Потому что программ сейчас очень много и, условно говоря, половине требуется GTK, а половине Qt. Поэтому в обязательном порядке ставится и тот и другой комплект. С BSD системами всё с точностью наоборот, по крайней мере это касается наиболее распространённых Free- и OpenBSD. Здесь графические библиотеки надо ставить вручную.

4. Сборка в Linux

4.1 На основе графической библиотеки GTK

Несмотря на то, что GTK для Lazarus является графической библиотекой по умолчанию, с ней требуется наибольшее количество телодвижений. Поэтому после выплнения предварительной подготовки (согласно пункту 3), не торопитесь сразу же запускать "make".


Небольшое лирическое отступление про "просто make"

Просто "make" даст нам Lazarus только с малым джентльменским набором самых общеупотребительных компонентов. Если взглянуть на рис. 1, то можно увидеть, что даже закладка компонентов по работе с базами данных сиротливо пуста.


Рисунок 1. Вид Lazarus собранного с помощью make без дополнительных ключей

Более-менее полный набор компонентов в Lazarus даст нам запуск "make bigide". Но вот если не поработать предварительно с некоторыми библиотеками, в конце сборки мы обязательно увидим сообщения об ошибках, как на рис. 2.


Рисунок 2. При сборке не найдены библиотеки, хотя на самом деле они стоят

Самое смешное, что эти библиотеки в вашей системе, с вероятностью очень близкой к 100%, уже установлены. Почему же при сборке Lazarus компилятор их не увидел? Давайте разберёмся...

В таблице 1 представлены те библиотеки которые не нашёл компилятор:

Таблица 1. Библиотеки, которые не нашёл компилятор во время сборки Lazarus

Название выданное компиляторомРеальное название
-lgdk-x11-2.0libgdk-x11-2.0.so
-lgdk_pixbuf-2.0libgdk_pixbuf-2.0.so
-lgtk-x11-2.0libgtk-x11-2.0.so
-lgobject-2.0libgobject-2.0.so
-lglib-2.0libglib-2.0.so
-lgthread-2.0libgthread-2.0.so
-lgmodule-2.0libgmodule-2.0.so
-lpango-1.0libpango-1.0.so
-lpangocairo-1.0.solibpangocairo-1.0.so
-lcairolibcairo.so
-latk-1.0libatk-1.0.so
Возможно, но необязательно
-lX11
 
libX11.so

"libglib-2.0" расположена в каталоге "/lib64" если у вас 64-ёхразрядная ОС или в "/lib", если 32-ух. Все остальные библиотеки надо искать в "/usr/lib64 (/usr/lib)". У некоторых дистрибутивов эти библиотеки находятся во вложенных каталогах, например в дистрибутиве "ASTRA Linux" они лежат в "/lib/x86_64-linux-gnu" и "/usr/lib/x86_64-linux-gnu" соответственно.

Давайте зайдём в каталог "/lib64" (у меня система 64-ёхразрядна) и поищем "libglib-2.0.so", но не по полному названию, а по шаблону, как на рис. 3.


Рисунок 3. Ищем библиотеку libglib-2.0

И вот что мы там нашли. Библиотека "libglib-2.0.so" оказалась с "хвостом" ".0.5200.3" после ".so" (см. рис. 4):


Рисунок 4. Библиотека libglib-2.0 с "хвостом"

Это значит, что компилятор такие "хвосты" не любит. Обычно по этому поводу советуют ставить еще и "devel" версии библиотек. Если вы собираетесь писать GUI-программы на Си\Си++, то это в высшей степени полезный и единственно правильный совет. Однако я, к примеру, этого никогда не делал и добровольно делать не собираюсь. Как решить эту проблему, если не хочу ставить "devel"-пакеты? "Хвосты" библиотекам мы конечно же подрезать не будем (на всякий случай). Мне удалось узнать страшную тайну этих самых "devel"-пакетов − при своей установки, кроме добавления всяких нужных для сборки Си-программ файлов (типа "*.h", "*.a", "*.o" и т.п.), они ещё и делают безхвостый симлинк (символическую ссылку) рабочих библиотек. Так что мы тоже просто сделаем символическую ссылку с правильным названием (см. рис. 5) без всяких установок "devel"-пакетов:


Рисунок 5. Символическая ссылка на Библиотеку libglib-2.0 с правильным названием

По аналогии нужно провести эту манипуляцию со всеми остальными библиотеками из табл. 1. Кстати говоря это займёт меньше времени, чем поиск по репозиторию соответствующих "devel"-пакетов, а потом их установка. Особо оращаю ваше внимание, что симлинки можно сделать только с правами "root". После этого можно собирать Lazarus:

make bigide

Теперь всё должно пройти без ошибок (см. рис.6):


Рисунок 6. Сборка прошла без ошибок

В каталоге, где запускался "make bigide", появятся два исполняемых файла, которые нам как раз и нужны:

  • lazarus − это сам Lazarus и есть;
  • startlazarus − а это специальная запускающая программа. Если запустить её из консоли, то в ту же консоль она будет писать всё происходящие с Lazarus'ом события (см. рис. 7), что может быть весьма познавательно.


Рисунок 7. Можно наблюдать лог работы Lazarus в окне терминала

4.2. На основе графической библиотеки Qt

Несмотря на то, что графическая оболочка KDE, которая строится как раз на библиотеке Qt, весьма и весьма серьёзная штука, сборка Lazarus тут намного проще. Дело в том, что в отличие от варианта на GTK компилятор напрямую к библиотекам Qt не обращается, а работает через специальную библиотеку-прослойку "qt4pas" (возможно она будет называться "qt4pas5"). По умолчанию ни в одной ОС Linux она не устанавливается, поэтому её необходимо установить вручную из репозитория вашей ОС.

После установки "qt4pas" необходимо проверить в "/usr/lib (/usr/lib64)" есть ли у неё правильное имя, т.е. без хвоста после ".so". Некоторые ОС при установке делают симлинк (символическая ссылка) с правильным названием (например, ASTRA Linux), а некоторые не делают (например, Simple Linux), поэтому надо обязательно проверить и если симлинка нет, то сделать его с именем "libQt4Pas.so".


Рисунок 8. Не забыть сделать симлинк с правильным именем

Теперь можно компилировать:

make bigide LCL_PLATFORM=qt

Не могу сказать, чтобы Qt так уж кардинально поменял вид приложения (см. рис. 9), если только у вас не стоит какая-нибудь особо изысканая схема для KDE, но теперь ваши графические программы будут совершенно точно иметь KDE-шный вид.


Рисунок 9. Lazarus на основе Qt


Небольшое лирическое отступление по поводу "библиотечьих хвостов"

Не все Linux'ы проявляют такую щепетильность к библиотечным "хвостам", как описано выше. К примеру, "Calculate Linux" пользуется программой сборки не "make", а "gmake". Есть у неё, конечно, и "make", но это всего-лишь симлинк на "gmake". Так вот, сборка Lazarus в "Calculate Linux" спокойно проходит и без установки "devel"-пакетов и без ручного симлинкования "хвостатых" библиотек. Поскольку "calculate Linux" является наследницей "Gentoo Linux" я думаю, что и в "Gentoo Linux" такая же благостная ситуация со сборкой Lazarus.


5. Сборка в Windows на основе WinAPI

Пожалуй это будет самая короткая глава. Никаких особых подготовок к сборке здесь не нужно. Естественно, при непременном условии, что сборка будет производится на основе WinAPI. В каталоге с распакованым Lazarus нужно набрать:

make bigide

и я пока ещё ни разу не встречался с ситуацией, когда сборка завершилась бы с ошибкой.

Хотя нет, по поводу отсутсвия подготовки я, наверное, слегка погорячился. Дело в том, что в переменной "PATH" непременно должен присутствовать каталог, где расположен компилятор FreePascal:


Рисунок 10. каталог с компилятором FreePascal должен быть в переменной PATH

6. Для тех, кто не боится демонов. Lazarus + BSD

Несмотря на то, что про системы BSD усиленно распускают всякие ужасающие, прямо таки леденящие кровь слухи, всё это не более чем слухи. BSD вполне ничего себе системочка и доказательством тому служит MacOS, которая в своё время переехала на BSD и теперь сидит там довольная, как кот обожравшийся сметаны. Впрочем, про MacOS я говорить не буду, дабы не подвергнуть нечаянно себя и вас каким-нибудь антилицензионным санкциям.

Пожалуй пара мнений, что может быть правдой про BSD (опять же, исключая MacOS), это меньший уровень русификации по сравнению с Linux и меньший набор драйверов для устройств.

Несмотря на то, что самой популярной (после macOS естественно) BSD системой является FreeBSD, начать я хочу с OpenBSD. Дело в том, что в OpenBSD, в отличие от FreeBSD, графическая система "Xorg" ставится по умолчанию. Правда попытка собрать Lazarus в такой графической системе обречена на неудачу, т.к. отсутствуют и библиотеки GTK, и Qt. Вдобавок, в репозитории OpenBSD отсутствует пакет содержащий библиотеку "qt4pas", без чего даже с установленой системой Qt компиляция Lazarus не удасться.

Поэтому мы сделаем так:

  • В OpenBSD соберём Lazarus на основе библиотеки GTK, тем более что в последней, на момент написания статьи, версии OpenBSD 6.3 добавилась возможность установить сравнительно лёгкий рабочий стол "MATE", который написан на основе GTK. Как раз то, что нужно для Lazarus;
  • В FreeBSD мы соберём Lazarus на основе библиотеки Qt, т.к. в стандартном репозитории FreeBSD есть необходимая библиотека "qt4pas".

6.1 OpenBSD

Несмотря на то, что интерфейс установщика OpenBSD не графический, как в Linux'ах, и даже не псевдографический, как во FreeBSD, вопросы, которые он задаёт просты и понятны. В 99,99% случаев можно в качестве ответа просто жать клавишу "ENTER". Однако есть там один момент, на котором хочется остановится особо. Перед распаковкой архивов с системой, установщик задаёт вопрос, нужно ли запускать графическую систему при старте ОС (см. рис. 11, последние два вопроса).


Рисунок 11. Вопрос о судьбе графической системы

Здесь первый вопрос − нужно ли вообще, в принципе, запускать "X window", а второй − нужно ли это делать автоматически при загрузке ОС. Естественно, на первый принципиальный вопрос мы ответим согласием, а на второй − несогласием. Автоматический запуск мы разрешать не будем по причине того, что административные вопросы, типа настройка программ, установка пакетов, в графическом режиме совершенно не нуждаются. Поэтому запуск графики мы сделаем только для обычного пользователя и только после его залогинивания в систему. Вдобавок этот вопрос имеет, кроме практической подоплёки, ещё и чисто эстетическую. Посмотрите на рис. 12. Видок, прямо скажем, не очень. Здесь из терминала можно запускать разные графические программы, например браузер интернета, но вот реального облегчения работы, когда практически всё делается мышкой, а не набирается командами с клавиатуры, не будет. Автозапуск графики можно сделать потом, когда всё что нужно от администратора будет настроено, установлен радующий глаз рабочий стол и останется только чисто пользовательская работа.


Рисунок 12. Вид графической системы FreeBSD по умолчанию

В отличие от FreeBSD, где пакеты из интернета можно устанавливать сразу же после установки ОС, в OpenBSD сначала нужно указать сайт с точным путём к пакетам в специальной системной переменной "PKG_PATH", которая будет содержаться в файле профилей администратора:

echo "PKG_PATH=https://mirror.yandex.ru/openbsd/6.3/packages/amd64/" >> /root/.profile
cho "export PKG_PATH" >> /root/.profile

Вместо "amd64" вы можете поставить свой тип ОС. Так же как вместо версии "6.3" можно указать свой номер версии. Перезаходим в систему, чтобы "PKG_PATH" прочиталась из файла и теперь можно поставить текстовую оболочку "Mdnight commander", чтобы было удобнее управляться с административными делами в текстовом режиме:

pkg_add mc

Запускаем "mc" и приходим в ужас от его внешнего вида:


Рисунок 13. Вид "mc" сразу после установки

А вдобавок ещё и горячие клавиши F1 ... F9 не работают. Расстраиваться не стоит, просто поменяем тип терминала, который стоит по умолчанию (vt220) на более весёлый (wsvt25) в файле "/etc/ttys":


Рисунок 14. Файл /etc/ttys где нужно поменять тип терминала

Снова перезаходим в систему и вот теперь всё красиво и привычно:


Рисунок 15. Теперь "mc" более симпатичный

Следующий шаг − установка рабочего стола "MATE". Вот список пакетов, без которых совершенно точно не обойтись, всё остальное − на ваше усмотрение:

  • mate-desktop − основная часть "MATE" − рабочий стол;
  • mate-control-center − центр управления;
  • mate-media − чтобы можно было музыку послушать;
  • mate-menus − в том числе и стандартное меню типа "Пуск";
  • mate-notification-daemon − заведует системой сообщений для рабочего стола;
  • mate-panel − нижняя панелька, где появляются запущенные программы;
  • mate-session-manager
  • mate-settings-daemon
  • mate-terminal − терминал;
  • mate-themes − чтобы было красиво;
  • mate-utils − разные утилитки.

Если задаться совсем уж минимальным минимализмом, то вполне хватит только двух пакетов − "mate-desktop" и "mate-terminal", т.е. непосредственно рабочий стол с картинкой и терминал, где будем компилировать Lazarus и откуда будем запускать программы. Кствти говоря, в каталоге "lazarus/install" содержится ярлык для запуска Lazarus с рабочего стола. Но, на мой взгляд, это будет уж совсем тоскливое зрелище...

Самый свежий FreePascal в репозитории OpenBSD есть, так что установим его (а заодно и "gdb") стандартным способом:

pkg_add fpc gdb

А вот чего в пакетах нет, так это исходников FreePascal и самого Lazarus − ни готового, ни в исходниках. Поэтому ставим браузер, чтобы потом скачать недостающее с сайта разработчиков:

pkg_add firefox-i18n-ru mozilla-dicts-ru

Теперь приступаем к настройкам запуска "MATE". В каталоге пользователя создаём файл ".xinitrc", в который прописываем следующие заклинания:

  export LANG=ru_RU.UTF-8
  export LC_ALL=$LANG

  setxkbmap us,ru option grp:alt_shift_toggle

  exec mate-session

Первые две строчки − это русский язык и непременно в кодировке UTF-8, третья − раскладки клавиатуры и какими клавишами их переключать, последняя − собственно сам запуск "MATE". И добавим ещё в один файлик "/etc/rc.conf.local":

  pkg_scripts="dbus_daemon avahi_daemon"
  dbus_enable=YES

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

startx


Рисунок 16. MATE в OpenBSD и даже на русском языке

Русификация, как видно по рисунку, неполная. Но поскольку это самый первый выпуск OpenBSD с рабочим столом "MATE", то сильно придираться не будем. Тем более, что самое главное − русские буквы и русская раскладка клавиатуры − действует.

С рабочим окружением закончили, теперь можно приступать к сборке Lazarus'а. Здесь нас поджидает маленькая непонятка: команда "make" выдаёт, что буквально каждая строчка нашего Makefile это страшная и непоправимая ошибка (см. рис. 17).


Рисунок 17. Makefile с ошибкакми?

По народному рецепту − если ничего не получается, значит пора читать документацию − я внимательно прочитал файл "README.TXT". Там не очень заметно, но всё-таки написано, что для сборки в системах BSD нужно использовать "GNU make", а не просто "make". Оказывается в BSD-системах "просто make" − это "BSD make", который не тоже самое, что и "GNU make". Ну что ж, ставим дополнительный пакет:

pkg_add gmake

Далее набираю в командной строке (не забыв предварительно перейти в каталог с распакованным Lazarus):

gmake clean bigide

и толко наблюдая процесс сборки вспомнил, что не обрубил хвосты у билбиотек путём создания симлинков, что сам же и рекомендовал в пункте 4 про Linix. Однако, к моему большому удивлению, никаких жалоб на отсутствие библиотек не поступило. Держась левой рукой за сердце, дрожащей правой запускаю Lazarus. И Lazarus без вопросов запустился. Судя по рисунку он у меня собран именно в OpenBSD и никак иначе:


Рисунок 18. Lazarus в OpenBSD


Общие впечатления

На компьютере с 1 ГБ ОЗУ и процессором "Intel Core 2 Duo E6750", 2.6 ГГц, программы работают намного шустрее, это заметно даже невооружённым глазом, чем тот же компьютер с, к примеру, "Simple Linux". Поэтому для малохольных компьютеров, где когда-то стояла, Windows XP, замену лучше производить на BSD, а не на Linux. Linux более приятен глазу, но увы, даже без антивируса нынешние системы слишком уж тяжелы.

Заранее согласен, что возни с настройками здесь больше, чем в Linux, но ведь настройки делаются, в отличие от текущей работы, не каждый день, не так ли?


6.2 FreeBSD

FreeBSD более ласковая к пользователю система, чем OpenBSD. Она по количеству программ пожалуй не уступает Debian. Правда не все программы хранятся в виде бинарных пакетов, но все общераспространённые программы в бинарниках есть, в том числе и некоторое количество рабочих столов. Поскольку во FreeBSD мы решили использовать библиотеку Qt, то и рабочий стол нужно устанавливать именно на этой библиотеке. KDE (а уж Plasma и подавно) однозначно не подойдёт, т.к. на 1 ГБ памяти мого тестового компьютера можно будет ногти до локтей изгрызть, пока дождёшься результатов от такого в высшей степени продвинутого рабочего стола. К счастью, на базе Qt есть и лёгкие рабочие столы, например LXQT. Вот его мы на FreeBSD и поставим.

В отличие от OpenBSD, в FreeBSD путь к интернет-репозиторию текущей версии ситемы уже находится в файле конфигурации, поэтому сразу же после установки ОС можно приступать к установке пакетов. Опять же, в отличие от OpenBSD, все необходимые манипуляции (поиск, установка, удаление и т.п.) делаются единым пакетным менеджером "pkg". Однако при первом его запуске будет выдано сообщение о том, что система управления пакетами не установлена. И вопрос − нужно ли её устанавливать:


Рисунок 19. Запрос на установку пакетного менеджера

Вопрос не праздный. Исторически сложилось так, что во FreeBSD программы устанавливаются из исходников (в ихней терминологии − из портов). Однако сборка сложных программ из исходников − дело очень долгое, поэтому впоследствие появились пакеты с уже откомпилированными программами. Если согласились на установку пакетного менеджера, то больше подобных вопросов не будет. Довольно часто в конце установки выдаются дополнительные сообщения и рекомендации связанные с устанавливаемыми пакетами. Эти сообщения желательно читать крайне внимательно, т.к. там регулярно бывают дельные мысли. Доказательством этому служит то, что у меня случилось при установке FreePascal.

Окрылённый лёгкостью установки FreePascal в OpenBSD, я надеялся, что в FreeBSD будет так же и установка пройдёт одной командой.

pkg install fpc

Увы, оказалось, что в пакете "fpc" лежат только компилятор и кое-какие системные модули (см. рис. 20). Ни однодного дополнительного модуля больше не было.


Рисунок 20. Голый FreePascal

В рекомендациях, правда, мне посоветовали поставить "fpc-units", который уже впоследствии, после изучения описания портов, оказался мета-пакетом для дополнительных модулей. Поиски в репозитории показали, что FreePascal здесь разделён аж на 96 пакетов, т.е. каждый дополнительный модуль лежит в отдельном пакете. Нда, тут они переплюнуди даже Debian... Естественно встал вопрос, а как установить эту группу пакетов сразу, ведь кроме модулей потребуются и кое-что дополнительно. Поверхностное решение, типа как вывод имён файлов по маске с помощью "ls ./*" здесь не прошёл − никакие стандартные символы масок не помогали. Пришлось читать документацию. Оказалось, что как при поиске пакетов, так и при их установке можно применять "regexp". Выглядит это так:

pkg install -x "^fpc-*"

Т.е. мы устанавливаем пакеты, которые начинаются с смволов "fpc-", а звёздочка − это любые последующие символы. Причём именно начинаются и именно с чёрточкой, иначе он будут установлены все пакеты, где есть "fpc" в любом месте названия. Или с учётом рекомендаций FreeBSD после установки компилятора, можно сделать так:

pkg install fpc-units fpc-utils

Общий список пакетов, вместе с зависимостями, составил 289 штук. Естественно все те, что выходили за рамки 96 пакетов-модулей были библиотеками, на которые эти модули ссылались − клиентские части БД, звук, OpenGL, GTK, Qt, X11 и т.д. Вот только в этом великолепии оказалась ложка дёгтя − отсутствовала библиотека "qt4pas". Или мантейнеры про неё забыли, или посчитали, что и без неё всё будет хорошо. Ошибочка, однако, пришлось устанавливать её дополнительно, а заодно и "GNU make" без которог не обойтись:

pkg install qt4pas gmake

Теперь можно приступать к установке рабочего стола. Надо сказать, что напрасно я надеялся на то что предыдущая установка, заодно с библиотеками GTK, Qt и X11 поставит мне сервер "Xorg". Видимо опять мантейнеры посчитали, что графические библиотеки и графический сервер − это разных полей ягоды. Наученый предыдущим горьким опытом я сначала решил изучить пакеты в описании портов на официальном сайте [3] FreeBSD которые существуют там по этому поводу. И если с "Xorg" всё оказалось в порядке, то с "LXQT" − совсем нет. Под этим именем в стандартном репозитории существует только набор библиотек "lxqt", а вовсе не сам рабочий стол. Пришлось подключать дополнительный репозиторий.

Сначала нужно скачать файл сертификата:

fetch http://lxqt-freebsd.schmitz.computer/poudriere.cert

в каталог "/usr/local/etc/ssl/certs/". Если такого каталога нет, его нужно создать. Теперь можно подключать репозиторий. Для этого в файл "/usr/local/etc/pkg/repos/lxqt.conf" записываем такие заклинания:

lxqt: {
        url: "pkg+http://lxqt-freebsd.schmitz.computer/packages/${ABI}",
        mirror_type: "srv",
        enabled: yes,
        signature_type: "pubkey",
        pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
        priority: 100
}

Теперь можно устанавливать графический сервер, рабочий стол, а заодно и браузер:

pkg install xorg lxqt firefox

Добавляем в главный конфигурационный файл "/etc/rc.conf":

  dbus_enable="YES"
  hald_enable="YES"

Ещё в интернете рекомендуют добавить:

  moused_enable="YES"

правда у меня мышка в графическом режиме и так заработала. Теперь перезагружаемся, снова заходим под root'ом и запускаем "Xorg" для создания конфигурационного файла:

  Xorg -configure

после чего в каталоге "/root" появится файл "xorg.conf.new", который нужно скопировать в "/etc/X11" с именем "xorg.conf". В дальнейшем этот файл можно подкорректировать. Например, если на вашем компьютере установлена видеокарта "NVIDIA", то можно установить соответствующий драйвер, который есть в стандартном репозитории, и прописать это дело в "/etc/X11/xorg.conf" в секцию "Device", которая отвечает за видеокарту, в параметр "Driver".

Теперь перезаходим под обычным пользователем и запускаем "startx". Вот что в результате получается:


Рисунок 21. Рабочий стол LXQT

Так же как и рабочий стол "MATE" в OpenBSD, "LXQT" русифицирован не до конца. Однако, как и в предыдущем случае, русские буквы выводятся без проблем, раскладка клавтатуры переключается. Да и сам рабочий стол довольно шустрый несмотря на сильно куцые, по сегодняшним меркам, ресурсы компьютера. Теперь можно приступать к сборке Lazarus, если, конечно, вы его не забыли скачать:

gmake bigide LCL_PLATFORM=qt

и получаем Lazarus под FreeBSD:


Рисунок 22. Lazarus под FreeBSD

6.3 Пробуем на вкус "Солярку"

Если вы, как и я, любитель экзотики, то можно поработать в Lazarus на когда-то безумно популярной ОС "Solaris" (непременно вспоминая Станислава Лема). Конечно деньги на коммерчесткую версию мы тратить не будем, а возмём современную наследницу OpenSolaris - OpenIndiana Hipster [4] (далее я буду называть её просто Hipster).

Скачаный iso-образ Hipster представляет из себя Live-DVD, поэтому её можно использовать без установки, дабы испытать, можно ли ею пользоваться вообще. Установка системы так же производится из сеанса Live-DVD. Перед загрузкой Hipster спросит, какой язык использовать. Нужно обязательно выбрать "Русский" (он в списке под номером 19), в противном случае русификация уже установленой системы будет не в меру сложновата. А так с самого начала будет русский язык, что очень удобно.

Сразу предупреждаю, что как и Solaris, Hipster − система серьёзная, поэтому для минимальной графической рабочей станции она не сильно подходит. Оперативную память желательно иметь не менее 2 ГБ, но лучше 3 или 4, а уж дальше − на ваш выбор.

Русификация системы намного лучше, чем это было в Open- или FreeBSD (см. рис. 23).


Рисунок 23. Hipster (нынешняя OpenSolaris). Русификация хорошая

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

    pkg update

Без обновления вы мало что сможете найти в репозитории. При смене пользователя на "root" система вас сразу же попросит сменить пароль, причём к выбору пароля здесь относятся весьма серьёзно − должны быть и буквы и цифры.


Рисунок 24. Смена пароля и обновление паетной базы

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

    pkg serach fpc
    pkg serach freepascal

Увы нам всем, результаты поиска нулевые. Однако расстраиваться не стоит, FreePascal (а заодно и Lazarus) можно скачать с сайта разработчиков в подразделе "solaris". При установке с помощью скрипта "install.sh", который идёт в архиве, посыпались предупреждения, что метки времени файлов неправильные, однако на работоспособность "fpc" это не повлияло. Правда при попытке откомпилировать тестовую программу на FreePascal выяснилось, что в системе отсутствует компоновщик "gld". Это заставило подозревать, что в системе отсутствуют вообще какие-либо компиляторы, в частности "gcc". Так оно и оказалось. Устанавливаем:

    pkg install developer/gcc-7

Писать название пакета нужно именно в такой форме − нужно указывать подраздел, где находится пакет, ибо разные версии пакета могут быть в разных подразделах. И в случае "gcc" нужно указать версию компилятора, т.к. в репозитории содержится несколько версий "gcc".

Настоятельно рекоммендую, прежде чем устанавливать какую-либо программу, узнать информацию о том, в каком подразделе содержится нужный вам пакет с помощью "pkg search Пакет", т.к. не исключено, что пакеты с одним названием будут находиться в разных подразделах и отличаться каким-нибудь нюансом, а так же одно и то же название пакета может быть в нескольких версиях.

Вот теперь компиляция проходит успешно:


Рисунок 25. Компиляция и запуск тестовой программы FreePascal

Не забудьте установить "gdb":

    pkg install developer/debug/gdb

Теперь можно приступать к сборке Lazarus:

    gmake bigide

И вот что получилось:


Рисунок 25. Lazarus в Solaris/OpenIndiana

7. Заключение

Как видно, разработчики FreePascal и Lazarus − большие молодцы! Этими продуктами можно пользоваться даже в тех ОС, где они не планировались. Сборка Lazarus из исходников тоже не такая уж и сложная штука. Конечно, по сравнению с просто установкой готовой программы, это выглядит сложновато, но разработчик, который сам собирает свои программы, не должен испытывать по этому поводу никаких проблем.

BSD-системы несмотря на свою, казалось бы, неориентированость на простого пользователя, в плане сборки Lazarus оказываются куда проще Linux. Да и сделать на их основе простенькую графическую рабочую станцию, вовсе не проблема.

8. Ссылки

  1. Страница, откуда можно скачать исходный код Lazarus
  2. Дистрибутивы FreePascal на сайте разработчиков
  3. Поиск описаний пакетов и портов на сайте www.freebsd.org
  4. OpenIndiana Hipster − наследница OpenSolaris
Актуальные версии
FPC3.0.4release
Lazarus1.8release
MSE4.6release
fpGUI1.4.1release
наши спонсоры ;)