На альте такие вещи реализовываются через различные связки: Framework + PostgreSQL, FPC + Firebird (superserver / portable). Поскольку речь идёт о создании простой программы с базой (ибо Firebird хоть и хорош для хранения больших данных, у него есть «приколы» при работе со связями и отображениями; хранимые процедуры, конечно, это круто, но без корректного механизма отображений и связей это тот ещё геморрой — ждать подтверждение каждой транзакции / записи не прикольно). Связка Ananas + Firebird / MySQL / PostgreSQL (нужное дополнить) не подходит по следующим причинам:
- Громоздкость приложения во время выполнения, даже если речь идёт о нескольких справочниках с формами.
- Сбойность самой платформы даже при простом добавлении данных в справочник.
- Необходимость шаманства с подключением базы чуть ли не при каждом запуске.
- Некорректно описанный внутренний язык бизнес-приложений — отсутствуют примеры, неудобочитаемый синопсис.
- Тяжёлая переносимость бизнес-платформы между рабочими станциями.
В итоге выбор остановился на связке Lua + SQLite3. Поскольку всё происходило в Alt Linux 7.0, с интерпретатором пришлось помучиться.
- Во-первых, в наличии была только версия 5.1.4.
- Во-вторых, указанная версия версия состояла только из интерпретатора и базовых библиотек. Ни о каком-либо luarocks или luasql речь просто не шла. Окей, вызов принят.
Для сборки компиллятора будут нужны следующие пакеты:
Не стоит бояться этого списка пакетов, поскольку в реале всё устанавливается одной командой:
apt-get install libsqlite3-devel glib-devel libsqlite3-devel-static libxcb-devel zlib-devel sqlite libreadline-devel libreadline-devel-static libgcov4.7-devel gcc4.7 glib -y
Здесь наиболее необходимы gcc, readline, libxcb, libsqlite3, curl и все -devel- пакеты. Без них исходники будут тормозить сборку на каждом шаге.
apt-cache search имя_программы
Команда подумает и выдаст вам имена пакетов с кучей наименований. Дальше вы выбираете и устанавливаете пакеты вышеуказанным способом. Внимание! Все указанные в статье операции выполняются в консоли с правами суперпользователя!
С сайта lua.org берём tar — архив с исходниками (lua-5.3.2.tar.gz) и архив с бинарниками(luabinaries.sourceforge.net). Либо берём бинарники и выполняем в консоли следующий скрипт:
curl -R -O http://www.lua.org/ftp/lua-5.3.2.tar.gz
tar zxf lua-5.3.2.tar.gz
cd lua-5.3.2
make linux test
make linux install
В итоге в папке lua-5.3.2 находятся две: doc и src. Заходим в src и смотрим файлы lua и luac. Это интерпретаторы языка, с которыми мы произведём одно извращение. В консоли нужно набрать следующую команду:
rpm -ql lua5
В выводе смотрим местоположение файлов. Чаще всего это /usr/bin. Копируем туда файлы lua и luac из папки src. Затем заходим в архив с бинарниками, видим папку include и ВСЕ находящиеся в ней файлы копируем в папку /usr/local/include (либо в любую иную, которую укажет luarocks при ошибке компилляции).
Теперь идём на keplerproject.github.io/luarocks/releases/ — здесь забираем архив luarocks-2.3.0.tar.gz. Извлекаем его в каталог и заходим с консоли. Выполняем поочерёдно следующую последовательность команд:
./configure
make
make build
make install
Эта последовательность необходима для того, чтобы luarocks не устанавливался, как «камень»("rocks"), а записывался, как библиотека в системе. Теперь заходим на luarocks.org и в верхней строке поиска вводим "luasql". Жмём на газ. В появившемся окне выбираем ссылку на "LuaSQL-SQLite3" (LuaSQL-SQLite3).
По аналогии с появившейся в статье командой набираем в консоли:
luarocks-5.3 install luasql-sqlite3
Почему luarocks-5.3? Ранее мы подменили стандартный интерпретатор с версии 5.1 до версии 5.3 и вполне логично для совместимости библиотек использовать установку модулей более высокой версии. В консоли выполняем команды:
lua
driver = require "luasql.sqlite3"
Если после этих команд интерпретатор lua выдал приглашение ">", то вы верно подготовили среду разработки:
![image](https://habrastorage.org/files/fa5/876/f1e/fa5876f1e9404c329e00a66892a86756.png)
P.S. Маленькая просьба — если хотите передать замечание по этому циклу статей, прошу предварительно прочитать статью «Разработка микро-учётной системы на lua, часть вторая. Постановка задачи», в которой я указываю условия разработки программы и функции, которые на неё возлагаются. Учитывайте это.
Комментарии (6)
mgyk
25.05.2016 00:27pip install hererocks hererocks install lua5.3 export PATH="$PWD/lua53/bin:$PATH"
https://github.com/mpeterv/hererocks
valis
30.05.2016 07:03Как заядлый гик скажу Вам — LUA это классный, компактный язык. Он поддерживает функциональную парадигму, отлично ладит с библиотеками на C и легок в изучении. В общем все что нужно для разработки автоматизации на базе встраиваемых систем и пр.
Но, как бизнес аналитик и архитектор могу Вам с твердостью заявить:
У Вас чисто «админский» подход к решению задач — используете то что по Вашему «круто»! Я не буду перечислять и доказывать глупость выбора данной технологии, но вряд-ли кто-то захочет написать учетную систему на LUAhantenellotf
30.05.2016 13:44Читайте «Разработка микро-учётной системы на lua, часть вторая. Постановка задачи». Там указаны требования, спецификации и список задач, решаемых этими скриптами. На такую узкоспециализированную область накручивать монстров класса Construction ERP (Парус, 1С и иже) мне нафиг не сдалось. Причины выбора компактных систем разработки я указал уже в данной статье.
justabaka
Не надо так делать в пакетном дистрибутиве. Собирайте пакеты или хотя бы складируйте подобный софт где-нибудь в /opt через тот же --prefix, например.
hantenellotf
Уточните конкретнее. Здесь речь идёт о сборке двух Lua — модулей из исходных кодов. После установки в бинарный каталог они не копируются системой, я просто подменяю два базовых файла из общего пакета.
Alt Linux использует пакетную базу RPM.
З.Ы. Использование префикса было возможно в luarocks, но сборка с параметром версии 5.3 не вносило никакого эффекта.