Предварительно хочу сказать, что данная заметка является непосредственным продолжением «Что такое Free Pascal?», а не «Hello, World!»
Очевидно, чтобы использовать Free Pascal, первым делом нам надо откуда-то его взять и установить на свой компьютер. Для этого нужно зайти на официальный сайт в раздел «Download» [1] и выбрать дистрибутив для своей системы. Далее следовать инструкциям на сайте. Для разных систем предусмотрены различные адекватные системы установки (на врезке показан установщик для Win32), в том числе deb- и rpm-пакеты для распространенных дистрибутивов Linux, dmg-образ для Mac OS X и т.д.
Таким образом вы получите последний стабильный релиз. Пользователям Linux имеет смысл предварительно выяснить, нет ли пакета
fpc
в репозиториях родного дистрибутива… Скорее всего он там найдется, но далеко не факт, что свежей версии1.
Версии
Ветвь | Версия | SVN |
---|---|---|
стабильная | 2.4.4 | нет |
2.4.5 → 2.4.6 | [fixes_2_4] |
|
бета | 2.5.1 → 2.6.0 | [fixes_2_6] |
нестабильная | 2.7.1 → 2.8.0 (?) | [trunk] |
Чтобы не возникало недопонимания и путаницы, давайте сразу определимся с версиями. Во-первых, разработка Free Pascal делится на две ветви — стабильную и нестабильную. Внешнее отличие между ними — вторая цифра версии — четная для стабильной ветви и нечетная для нестабильной соответственно. Нестабильная предназначена для тех, кто хочет поучаствовать в разработке, нуждается в наиновейших возможностях, или просто любит эксперименты. Во-вторых, третья цифра версии четная для официальных релизов, и нечетная для всего остального. Все остальное здесь — это и нестабильная ветка, и текущие, еще не вошедшие в релиз, исправления в стабильной. Постепенно исправления накапливаются, тестируются и попадают в следующий стабильный релиз, вторая цифра номера которого увеличивается на два. Это общепринятая, хоть и не обязательная практика для свободных проектов, так что у пользователей, например, Linux такая схема нумерации не должна вызвать затруднений.
В некоторые периоды времени (например, сейчас, когда я все это пишу) существует не две, а три ветви разработки: третья — это бета следующего мажорного релиза, т.е. релиза, который отличается от предыдущего не только исправлениями, но и новым функционалом (и, как минимум, второй цифрой в номере). На врезке (табл. 1) показана сегодняшняя2 ситуация. Понимать ее следует так — если вы сейчас тем или иным образом, о которых мы поговорим чуть ниже, получите с официального сайта дистрибутив Free Pascal, он может быть одной из следующих версий:
- 2.4.4
-
— стабильный релиз, берется с основной страницы скачивания, рекомендуется для реальной работы, а так же для начального знакомства с компилятором.
- 2.4.5
-
— исправления к стабильному релизу. В дальнейшем эта версия должна превратиться в релиз 2.4.6 (если не получится так, что 2.6.0 выйдет раньше). Рекомендуется в том случае, если вам важны именно эти исправления. Шансов, что в данной версии что-то поломано относительно релиза, немного, поскольку никакая новая функциональность сюда не вносится — только исправление ошибок, но тем не менее, полностью исключить такую возможность нельзя. Можно сказать, что эта версия для тех, кто активно пользуется багтрекером [2].
- 2.5.1
-
— то же самое, что 2.6.0-rc1, если вы понимаете, о чем я. То есть — это готовящийся к выходу релиз 2.6.0. Внесение новой функциональности сюда также заморожено, идет доводка и тестирование. Однако от 2.4.x он отличается именно новыми возможностями. Рекомендуется… дождаться релиза, судя по всему. Взять эту версию можно только с SVN, в отличие от всех остальных.
- 2.7.1
-
— нестабильная ветка, разработка будущих версий. Я не могу с уверенностью сказать, что это — готовящийся релиз 2.8.0, поскольку а) разработчики могут решить выпустить после 2.6 сразу 3.0, если количественно и качественно он покажется слишком новым (или просто так захотят), и б) некоторые функции, уже работающие, но недостаточно стабильные, могут не войти в следующий релиз, а остаться в дальнейшей разработке надолго. Рекомендуется тем, кто хочет сам принять участие в разработке, кто любит эксперименты и не боится трудностей. Поскольку сюда постоянно добавляется новый функционал, ни о какой стабильности речи и быть не может.
Что еще можно сказать о версиях? Во-первых, когда вы это будете читать, номера версий могут быть уже другими, тогда как общий принцип нумерации, скорее всего, сохранится. Во-вторых, бо́льшую часть времени предрелизной ветви не существует, есть только стабильная и нестабильная (2.4.x и 2.7.1 на данный момент).
Lazarus
Что касается проекта Lazarus, он еще не дошел до стадии первого релиза… Впрочем, общие принципы нумерации те же, только стабильность (относительная) определяется по третьей цифре номера, а не по второй. Сейчас последний релиз — 0.9.303, ветка исправлений к нему имеет номер версии 0.9.30.1, а ветка разработки — 0.9.31.
Поскольку разработка ведется очень активно и, в то же время, постоянно оказывается, что чего-то не хватает, я бы, пожалуй, все-таки советовал использовать во всех случаях самую свежую версию из ветки разработки. Но ни в коем случае не настаиваю.
Где взять?
Из репозитория своего родного дистрибутива Linux
Для этого нужно пользоваться именно этой операционной системой, кроме того, в дистрибутиве должен присутствовать пакет
fpc
. Устанавливается штатными средствами дистрибутива.
Плюсы — версия протестирована не только разработчиками, но и мейнтейнерами дистрибутива, будет автоматически обновляться при обновлении системы, не должно возникнуть никаких проблем с зависимостями. Минусы — версия, скорее всего, будет несколько отставать от последнего релиза с сайта.
Последний релиз с официального сайта
Идем на страницу загрузки Free Pascal [1] или Lazarus [3], выбираем свою платформу, далее действуем по инструкциям.
Плюсы — последняя стабильная версия, предусмотрены наиболее популярные форматы пакетов под основные платформы (т.е., скорее всего проблем с зависимостями тоже не будет). Минус — по сравнению с предыдущим вариантом — за обновлениями придется следить самостоятельно.
Снапшот (ночная сборка) с официального сайта
Пусть проклянут меня пуристы, но адекватного русского термина для перевода английского «snapshot» лично я не знаю. Это сборка, сделанная в какой-то момент времени (как правило, ночью в автоматическом режиме, впрочем, что считать ночью для проекта, разработчики которого располагаются в самых разных часовых поясах — тот еще вопрос) из текущих исходников. Вообще говоря, работоспособность такой сборки никто не обещает, хотя случаи, когда что-то не работает, довольно редки.
Чтобы загрузить снапшот версии исправлений или текущей нестабильной версии (см. выше о версиях), следует отправиться
на страницу разработки [4] на официальном сайте — там даются ссылки на соответствующие архивы с исходниками,
или же на ftp-сервер [5], в подкаталоги snapshot/fixes
и snapshot/trunk
соответственно — за бинарными
сборками под свою платформу. Снапшоты Lazarus брать на соответствующей странице его сайта [6]. Архив
с бинарниками следует распаковать в соответствии с правилами своей операционной системы, прописать нужные переменные среды
и т.д. Архив же с исходниками — распаковать и скомпилировать… Впрочем, чуть ниже мы еще поговорим, что делать с исходниками.
Плюсы — самая свежая версия. Минусы — не факт, что работает, устанавливать нужно вручную, понимая, как и что там делается.
Текущие исходники с SVN
SVN — Subversion — централизованная система контроля версий. В настоящее время управление исходниками Free Pascal производится именно в ней. Это одна из наиболее популярных систем контроля версий вообще и самая популярная среди централизованных. Программа-клиент SVN существует практически для всех более-менее распространенных платформ.
Инструкция по получению с SVN исходников Free Pascal находится на уже упоминавшейся странице разработки [4]. Собственно, даже не знакомый с SVN человек может воспользоваться одной из команд, показанных ниже. Впрочем, документацию по Subversion [7] почитать все равно не помешает.
Преимущество этого способа в максимальной оперативности, даже по сравнению с предыдущим. Кроме того, можно переключаться
между ревизиями кода, например, для поиска ошибки. Еще один плюс — в дальнейшем при обновлении не нужно будет качать все
исходники, достаточно командой svn update
вытянуть только то, что реально изменилось.
В настоящее время все более популярны становятся не централизованные, а распределенные системы контроля версий… Для тех, кто, как и я, предпочитает Git [8], могу порекомендовать использовать дополнение git-svn [9], предназначенное для работы через локальный git-репозиторий с удаленным svn-репозиторием. Очень удобно.
В этом случае нужно использовать команду git svn clone
вместо svn checkout
и git svn rebase
вместо svn update
.
Установка
Как я уже говорил, в случае релиза установка не составит каких-либо сложностей — дистрибутив уже упакован под соответствующие системы вместе с рабочими настройками по-умолчанию. Другой случай — бинарный снапшот. Взятый с ftp архив нужно распаковать куда-то и отследить некоторые моменты:
-
Переменная среды
PATH
должна содержать путь к исполняемым файлам Free Pascal — подкаталог./bin
или./bin/<arch>-<os>
в каталоге установки.- Кроме того, под Linux следует также убедиться, что
PATH
содержит путь к исполняемому файлуppc386
(ppcx64
etc.), который располагается в./lib/fpc/<версия>
. А лучше всего сделать на него симлинк в./bin
.
- Кроме того, под Linux следует также убедиться, что
-
Должен быть установлен (и находиться через
PATH
) пакет BinUtils [10]. -
Следует правильно указать пути к модулям (они находятся в подкаталогах каталога установки
./lib/fpc/<версия>/units/<arch>-<os>/*
или./units/<arch>-<os>/*
) в конфигурационном файлеfpc.cfg
, который компилятор будет искать в нижеследующем порядке.-
Под Linux и другими unix-подобными ОС:
- Домашний каталог (в этом случае ищется скрытый файл с точкой —
.fpc.cfg
); - Каталог, указанный в переменной окружения
PPC_CONFIG_PATH
; - В каталоге
etc
рядом с каталогом компилятора — если, например, компилятор размещен в/usr/local/bin
, тоfpc.cfg
будет искаться в/usr/local/etc
; - В каталоге
/etc
.
- Домашний каталог (в этом случае ищется скрытый файл с точкой —
-
Под всеми прочими ОС:
- Каталог, указанный в переменной окружения
PPC_CONFIG_PATH
; - Каталог компилятора.
- Каталог, указанный в переменной окружения
Сами пути к модулям в файле выглядят примерно так (мой рабочий вариант):
-
где /home/iws/opt/fpc
— собственно каталог, куда установлен Free Pascal, а загадочные выражения $fpcversion
и $fpctarget
—
специальные макросы, которые разворачиваются в соответствующие значения (у меня это получается 2.7.1
и x86_64-linux
соответственно).
Ну, и нам осталось понять, что же делать с исходниками, если мы решили скачать именно их, или воспользоваться SVN…
И первое, что нам придется сделать — это установить бинарную версию, поскольку Free Pascal написан на Free Pascal.
Важно: это должна быть последняя стабильная версия, или снапшот того же времени, что и исходники — снапшот даже
суточной давности может не подойти (а может и подойти, это уж как повезет). Понятно, что со стабильной будет проще.
Впрочем, зато для некоторых систем (а именно — для DOS и Windows) можно скачать с ftp-сервера [5] только
базовый набор — файл base_w32_vXY.zip
или base_go32_vXY.zip
, находящийся рядом с соответствующим бинарным снапшотом.
Если бинарный компилятор корректно установлен, то достаточно в каталоге исходников выполнить две команды: make build
и
затем make install
. Впрочем, должен отметить существенный недостаток данного способа — факт инсталляции нигде
не фиксируется и выполнить обратное действие, т.е. — корректную отмену установки — не получится. Поэтому лучше выбрать
для установки какое-то отдельное место, которое легко очистить и указать его, скомандовав make install PREFIX=‹путь›
.
Собственно, как можно догадаться из вышеизложенного, я использую make install PREFIX=$HOME/opt/fpc
.
Замечу, что для беспроблемной сборки из исходников необходимо иметь установленный GNU Make [11], которого
на не-unix системах может и не оказаться. Более того, если под Windows у вас установлены какие-то системы разработки,
такие как Delphi или Visual Studio, то может быть вызван make.exe
из их поставки, а он не совсем совместим. Соответственно,
нужно установить GNU Make и вызывать именно его (например, указав полный путь к исполняемому файлу make.exe
).
Что касается Lazarus, то во-первых, не стоит его инсталлировать куда-либо в системные каталоги — поскольку
в процессе обычной работы с ним его весьма вероятно придется пересобирать, имеет смысл оставить его там, где
у пользователя есть полный доступ на запись файлов. Во-вторых, компилировать его лучше командой make bigide
,
которая сразу соберет и установит в IDE компоненты основных пакетов. В-третьих, для его полноценной работы требуются
исходники компилятора (точнее RTL), путь к ним вероятнее всего придется указать при первом запуске. При установке Lazarus
через релизный установщик, или из снапшота, скорее всего, обо всем этом думать не придется — он попросту устанавливает
с собой все необходимые части Free Pascal, а вот при сборке из исходников — нужно учитывать.
В завершение этой заметки опишу свою собственную конфигурацию.
-
У меня установлен пакет fpc из дерева портежей (основного репозитория) Gentoo. Это, соответственно, стабильный релиз (не самый последний, но близко к нему).
-
По адресу
$HOME/opt/src/freepascal
находится git-репозиторий с текущими исходниками, получаемыми посредствомgit-svn
. -
В каталог
$HOME/opt/fpc
установлен Free Pascal, собранный из этих исходников. Каталог с исполняемыми файлами$HOME/opt/fpc/bin
добавлен в переменную средыPATH
, причем в начало, чтобыfpc
оттуда находился до того, который установлен средствами Gentoo. В этом каталоге создан симлинк на исполняемый файл$HOME/opt/fpc/lib/fpc/2.7.1/ppcx64
. -
Файл конфигурации
fpc.cfg
расположен в каталоге$HOME/opt/fpc/etc
. Этот каталог прописан в переменной средыPPC_CONFIG_PATH
. -
И, наконец, Lazarus расположен в каталоге
$HOME/opt/src/lazarus
, опять же — в виде git-репозитория с привязкой черезgit-svn
.
Есть еще некоторые нюансы, но они уже не относятся к установке и начальной настройке.
Ссылки
[1] Страница дистрибутивов http://freepascal.org/download.var [en]
[2] Free Pascal / Lazarus bugtracker http://mantis.freepascal.org/ [en]
[3] Дистрибутивы Lazarus http://sf.net/projects/lazarus/files/ [en]
[4] Страница разработки http://freepascal.org/develop.var [en]
[5] Официальный ftp-сервер ftp://ftp.freepascal.org/pub/
[6] Снапшоты Lazarus http://www.hu.freepascal.org/lazarus/ [en]
[7] Apache Subversion Documentation http://subversion.apache.org/docs/ [en]
[8] Git — Fast Version Control System http://git-scm.com/ [en]
[9] git-svn(1) Manual Page http://schacon.github.com/git/git-svn.html [en]
[10] GNU Binutils http://www.gnu.org/software/binutils/ [en]
[11] GNU Make http://www.gnu.org/s/make/ [en]