Как я ставил транковый fpc и lazarus на Debian 7.6 x32

(заметка написана 7.10.2014 и перенесена сюда исключительно "на память")


Поставил в виртуалке свежий Дебиан с диска и приступил. Выражаю признательность за помощь и множество полезных советов Алексею Лагунову aka alexs (он же автор порта под Lazarus известного набора компонентов rxlib)

Update: с недавнего времени появилась исключительно удобная утилита fpcupdeluxe, которая позволяет легко и непринужденно получать любую версию компилятора и Лазаруса любой конфигурации, в т.ч. и с кросскомпиляцией. Мало того, все сборки Лазаруса получаются портабельными и создаются в одном каталоге со "своей" версией компилятора. Исключительно рекомендую!

1. Установка необходимых библиотек
ставим следующие пакеты (очередность установки желательно соблюсти)
  • x11proto-print-dev (в стандартной поставке отсутствует, скачать можно отсюда)
  • build-essential (включает в себя пакеты: binutils, dpkg-dev, fakeroot, g++, gcc, libalgorithm-diff-perl, libalgorithm-diff-xs-perl, libalgorithm-merge-perl, libc-dev-bin, libc6-dev, libdpkg-perl, libfile-fcntllock-perl, libitm1, libstdc++-dev, linux-libc-dev, make, manpages-dev)
  • libx11-dev
  • libxp6
  • libgdk-pixbuf2.0-dev
  • libpango1.0-dev
  • libgtk2.0-dev
  • gdb
  • subversion (svn-клиент)
  • libxp-dev

В терминале:
качаем недостающий пакет x11proto-print-dev
$ wget http://ftp.ru.debian.org/debian/pool/main/x/x11proto-print/x11proto-print-dev_1.0.5-2_all.deb

ставим его
$ sudo dpkg -i x11proto-print-dev_1.0.5-2_all.deb

ставим остальные пакеты скопом (одной строкой)
$ sudo apt-get install build-essential libx11-dev libxp6 libxp6-dbg libgdk-pixbuf2.0-dev libpango1.0-dev libgtk2.0-dev libxp-dev gdb

Примечание_1: пакет с отладчиком gdb у меня почему-то не встал, пришлось ставить его отдельно.

Примечание_2: если пакеты не ставятся через командную строку, что можно это сделать посредством менеджера пакетов Synaptic, вызвав его в терминале
# gksudo synaptic

Примечание_3: на Debian 9 из установки следует исключить пакеты libxp6, libxp6-dbg и libxp-dev, при этом добавить пакет libgl1-mesa-dev (иначе после установки некоторых компонент, использующих библиотеку LibGL.so,  Lazarus при пересборке выдает невнятную ошибку компиляции). Таким образом, на  Debian 9 установке необходимых пакетов будет выглядеть примерно так:
$ sudo apt-get install build-essential libx11-dev libgdk-pixbuf2.0-dev libpango1.0-dev libgtk2.0-dev gdb libgl1-mesa-dev
 
Важное замечание: пакеты из "примечания_3" необходимо также ставить, если вы собираетесь устанавливать Лазарус при помощи fpcupdeluxe!

2. Установка стабильной версии компилятора (для i386/amd64)

1) качаем сорцы (на момент последней правки статьи текущим стабильным релизом компилятора была версия 3.2.2, но по прошествии времени версии обновляются, поэтому актуальную версию компилятора и его сорцов всегда смотрите здесь(для i386)  или здесь (для amd64))

для i386
$ wget
https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20i386%20DEB/Lazarus%203.0RC1/fpc-src_3.2.2-210709_i386.deb

и ставим его
$ sudo dpkg -i fpc-src_3.2.2-210709_i386.deb

2) затем качаем сам компилятор
$ wget https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20i386%20DEB/Lazarus%203.0RC1/fpc-laz_3.2.2-210709_i386.deb
ставим и его
sudo dpkg -i fpc-laz_3.2.2-210709_i386.deb

соответственно для amd64
$ wget https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%203.0RC1/fpc-src_3.2.2-210709_amd64.deb
$ sudo dpkg -i fpc-src_3.2.2-210709_amd64.deb 
$ wget https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%203.0RC1/fpc-laz_3.2.2-210709_amd64.deb

$ sudo dpkg -i fpc-laz_3.2.2-210709_amd64.deb

Получаем в результате такое сообщение в терминале
Running on linux
Write permission in /etc.
Writing sample configuration file to /etc/fpc.cfg
Writing sample configuration file to /usr/lib/fpc/3.0.4/ide/text/fp.cfg
Writing sample configuration file to /usr/lib/fpc/3.0.4/ide/text/fp.ini
Writing sample configuration file to /etc/fppkg.cfg
Writing sample configuration file to /etc/fppkg/default

 
Update(4.12.2017): если стабильная версия компилятора уже вышла, а окончательного релиза Lazarus'a до сих пор нет (а значит, нет и deb-пакетов), то можно скачать tar-архив отсюда, распаковать его в любую папку и запустить находящийся там install.sh. Это будет выглядеть примерно так (я скачал fpc 3.0.4 х32)
leyba@deb9:~/Downloads/fpc-3.0.4.i386-linux$ sudo ./install.sh
This shell script will attempt to install the Free Pascal Compiler
version 3.0.4 with the items you select
Install prefix (/usr or /usr/local) [/usr] :

Можно установить его локально, можно системно (в квадратных скобках умолчательное значение). Жмем "Enter"
Install prefix (/usr or /usr/local) [/usr] :
Installing compiler and RTL for i386-linux...
Installing rtl packages...
Installing rtl-console
<skiped>
Installing unicode
Install Textmode IDE (Y/n) ?

Отвечаем Y(Yes) на вопросе об установке справки, демок и т.д. В конце инсталлятор выдаст
Running on linux
Write permission in /etc.
Writing sample configuration file to /etc/fpc.cfg
Saved old "fpc.cfg" to "fpc.bak"
Writing sample configuration file to /usr/lib/fpc/3.0.4/ide/text/fp.cfg
Writing sample configuration file to /usr/lib/fpc/3.0.4/ide/text/fp.ini
Writing sample configuration file to /etc/fppkg.cfg
Saved old "fppkg.cfg" to "fppkg.bak"
Writing sample configuration file to /etc/fppkg/default
Saved old "default" to "default.bak"
End of installation.
Теперь можно переходить к установке транков (не забывайте корректировать в командной строке параметры соответственно версии компилятора).

3. Установка последних (транковых) версий fpc и lazarus.

Чтобы не искать их по диску, складываем все в одну папку (например development) в домашней директории:

создаем ее
$ mkdir ~/development

переходим в нее
$ cd development

ставим git-клиента 
$ sudo apt install git

качаем последний транк fpc (будет автоматически создана папка fpc_trunk)
$ git clone https://gitlab.com/freepascal.org/fpc/source

и транк Лазаря  (будет автоматически создана папка  lazarus_trunk)
$ git clone https://gitlab.com/freepascal.org/lazarus/lazarus

Update1:  если нужна ревизия определенного номера компилятора или лазаруса, то то сначала качаем полный исходный код, затем переходим в папку, например, с Лазарусом
$ cd lazarus

Потом смотрим историю изменений с хешами (в команде ниже выводится последние 10) коммитов
$ git log --pretty=oneline --max-count=10

17768091e5a858f423437d44147b7ae6be747c92 (HEAD -> main, origin/main, origin/HEAD) Jedi code format: Improved align of compiler conditional directives. Issue #40539
7cdecac78342448c8c07caba4e6c66370fde77b3 Jedi code format: improved fake unit generator. Related to issue #40538
8a98df0369d88367cc080ab5ede35ed95a2c69cc Jedi code format: Fix memory leak.
27d50a74a8d1b9754788cdb0c9e324b258d06fc6 Debugger: Assembler view, don't ctrl-jump when clicking gutter for changing breakpoint.
bacefb51aeba1be609d807ae38164acfff461b60 LazDebuggerFp: Fixed line number for exceptions.
18eae18d531aa85aca046ef1ca5a7888a0cf6a17 * Make it usable on HighDPI
e38a298110f206bdc09ebef88a3fc05e886a9754 codetools: fixed SetApplicationTitleStatement for Application as param
a50a1e18b5407bc5966c3e3970acc0c72b6ccd14 LazDebuggerFp: fixed uninitialized result
7922a7908797ef2ea1dc746e4156951d7ec408d5 Cocoa: trigger CM_MOUSEMOVE when the APP Deactive
07d0ca37e22aa195faa0c65d86a9b98f0301db70 Opkman: Chinese translation update by ACTom, merge request !238

И переключаемся на нужный коммит (достаточно ввести первые 7 символов кэша)
$ git checkout a50a1e1

Подробнее об этом можно почитать здесь и здесь

Компилируем и устанавливаем новый fcp: переходим в каталог с новым компилятором, удаляем ссылки на старый компилятор, собираем и ставим новый компилятор
$ cd fpc_trunk

чистим "старые" откомпилированные ресурсы (если транк fpc апдейтится. Кстати, про эту команду и ее опции неплохо написано здесь)
$ make clean

если устанавливаем новый транк компилятора взамен предыдущего, лучше предусмотрительно удалить его сорцы 
$ sudo rm -Rfv /usr/lib/fpc/3.3.1

и удалить симлинк от предыдущей установки в папке с бинарниками

для i386
$ sudo rm -Rfv /usr/bin/ppc386

для amd64
$ sudo rm -Rfv /usr/bin/ppcx64

для i386
собираем сорцы транка (не забываем про номер актуальной версии, которую мы теперь скачали, и меняем циферки по мере необходимости), используя компилятор стабильной версии (который мы установили ранее)
$ make all OPT='-gl' PP=/usr/lib/fpc/3.2.2/ppc386 OVERRIDEVERSIONCHECK=1

ставим новый компилятор (установится сюда /usr/lib/fpc/3.3.1 - версия транка может меняться) с использованием ресурсов готового компилятора 3.2.2
$ sudo make install INSTALL_PREFIX=/usr PP=/usr/lib/fpc/3.0.4/ppc386 OVERRIDEVERSIONCHECK=1

добавляем симлинк в папке с бинарниками на транковый компилятор (Лазарус будет искать его именно там)
$ sudo ln -sf /usr/lib/fpc/3.3.1/ppc386 /usr/bin/ppc386

соответственно для amd64
$ make all OPT='-gl' PP=/usr/lib/fpc/3.0.4/ppcx64 OVERRIDEVERSIONCHECK=1
$ sudo make install INSTALL_PREFIX=/usr PP=/usr/lib/fpc/3.0.4/ppcx64 OVERRIDEVERSIONCHECK=1

$ sudo ln -sf /usr/lib/fpc/3.3.1/ppcx64 /usr/bin/ppcx64

"перегоняем" сорцы транка из домашней папки в системную (все сорцы будут здесь /usr/share/src/fpc-3.3.1/fpc)

Update 2: если компилятор переустанавливается, то эту папку необходимо сначала удалить
$ sudo rm -Rfv /usr/share/src/fpc-3.3.1/fpc/
$ sudo make install sourceinstall PREFIX=/usr

задаем симлинк для Лазаруса, где ему искать сорцы компилятора (для компиляции собственных ресурсов)
$ sudo ln -sf /usr/share/src/fpc-3.3.1/fpc /usr/share/fpcsrc

переопределяем конфигурационный файл с /etc/fpc.cgf на /usr/lib/fpc/3.3.1/samplecfg
$ /usr/lib/fpc/3.3.1/samplecfg /usr/lib/fpc/3.0.4 /etc

Update 3: строго говоря, сорцы можно оставить в папке со скачанной ревизией fpc (т.е. не применять команду sudo make install sourceinstall PREFIX=/usr). Необходимо лишь будет поправить пути в симлинке для Лазаря и конфига с
usr/share/src/fpc-3.3.1/fpc на ~/development/fpc_trunk/ соответственно

для i386
все то же самое, только при компиляции бинарников указывается ppc386
Компилируем и устанавливаем новый Lazarus: переходим в каталог с транковым Лазарем, собираем и устанавливаем его
$ cd ~/development/lazarus_trunk
$ make clean (только, если ранее установленный каталог был обновлен)
$ make
$ make bigide

Update 4: я предпочитаю сам выбирать, где среда будет хранить свои настройки. Для этого необходимо в корневую папку с лазарусом положить файл lazarus.cfg со следующим содержанием
--primary-config-path=/<полный абсолютный путь к папке с настройками>/<папка с настройками>

Таким образом можно иметь на одной машине несколько версий среды,  каждая из которых будет иметь свой каталог настроек.

Update 5: чтобы ускорить процесс, описанный по ссылке выше создадим программно конфигурационный файл Лазаря:
$ echo '--primary-config-path=~/development/lazarus_trunk/_config' > lazarus.cfg

и папку для настроек среды:
$ mkdir ~/development/lazarus_trunk/_config

После окончания сборки идем в папку с транком лазаруса и запускаем startlazarus

Популярные сообщения из этого блога

Мемориальные заметки для Lazarus

Как я устанавливал Firebird 3 на Debian 8