Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Технические вопросы по PtokaX _ Сборка хаба PtokaX 0.4.1.2 с поддержкой Lua и luasocket в ОС Solaris 10 x86

Автор: Gatsu 1.2.2012, 12:05

Сборка хаба PtokaX 0.4.1.2 с поддержкой Lua и luasocket в ОС Solaris 10 x86

Необходимые условия для нормальной сборки:
- установленная (можно и в виртуальной машине) ОС Solaris 10 10/09 s10x_u8wos_08a X86 и выше (комплект ПО "Entire Group Plus OEM");
- комплект исходников PtokaX и сопутствующих библиотек;
- правильно указанные пути к утилитам сборки.


1. Загрузка исходников

Найти в Google следующие архивы:
0.4.1.2-nix-src.gz
tinyxml_2_6_2.tar.gz
lua-5.1.4.tar.gz
luasocket-2.0.2.tar.gz
compat-5.1r5.tar.gz


2. Размещение исходников в каталоге для сборки

Создан каталог - /export/home/username/compile/

Архивы скопированы:
/export/home/username/compile/0.4.1.2-nix-src.gz
/export/home/username/compile/tinyxml_2_6_2.tar.gz
/export/home/username/compile/lua-5.1.4.tar.gz
/export/home/username/compile/luasocket-2.0.2.tar.gz
/export/home/username/compile/compat-5.1r5.tar.gz


3. Распаковка

Архивы распакованы в каталоги:
/export/home/username/compile/PtokaX
/export/home/username/compile/tinyxml
/export/home/username/compile/lua-5.1.4
/export/home/username/compile/luasocket-2.0.2
/export/home/username/compile/compat-5.1r5


4. Перемещение каталогов для подготовки к сборке

Код
    mv /export/home/username/compile/tinyxml /export/home/username/compile/PtokaX/
    mv /export/home/username/compile/compat-5.1r5 /export/home/username/compile/luasocket-2.0.2/



5. Редактирование makefile в каталогах Lua и PtokaX

Код
vi /export/home/username/compile/lua-5.1.4/src/Makefile


В строке 115 производится добавление параметров "-lsocket" и "-lresolv"

Код
solaris:
    $(MAKE) all MYCFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN" MYLIBS="-lsocket -lresolv -lrt -ldl"


Код
vi /export/home/username/compile/PtokaX/makefile


В строке 42 производится добавление параметров "-lsocket", "-lresolv" и "-lnsl"
при этом "-llua5.1" заменяется на "-llua"

Код
    $(CXX) -lpthread -lz -lrt -lsocket -lresolv -llua -lnsl -o PtokaX \


В строке 48 производится добавление библиотеки liblua.a ("/usr/local/lib/liblua.a")

Код
    $(CURDIR)/tinyxml/tinyxml.a /usr/local/lib/liblua.a



6. Создание сборочного скрипта (с учетом того, что "/usr/local" основной каталог для установки Lua и luasocket)

Код
    vi /export/home/username/compile/mk.sh


Код
#!/bin/sh

LD_LIBRARY_PATH=/usr/sfw/lib:/usr/local/lib:/usr/ccs/lib
export LD_LIBRARY_PATH

PATH=$PATH:/usr/sfw/bin:/usr/local/bin:/usr/ccs/bin:/usr/ucb
export PATH

cd lua-5.1.4
gmake clean
gmake solaris
gmake solaris install
cd ..

cd luasocket-2.0.2
gmake clean
gmake
gmake install
cd ..

cd PtokaX
cd tinyxml
gmake clean
gmake
cd ..
gmake clean
gmake


Запуск сборочного скрипта.

Сборка завершена.

PtokaX собран в каталоге "/export/home/username/compile/PtokaX"

Действия по конфигурированию PtokaX для использования выполнены согласно документации разработчика PtokaX.


7. Проверка работы luasocket скриптом ls.lua

Код
cat ls.lua


Код
socket = require("socket")
print(socket._VERSION)


После запуска PtokaX в консоль выдается сообщение о работе luasocket

Код
LuaSocket 2.0.2
PtokaX DC Hub 0.4.1.2 running...


Все вышеописанное справедливо и при сборке PtokaX 0.4.2.0

Собранный PtokaX работает на Solaris 10 x86 dchub://city-hub.ru


Для работы с MySQL из PtokaX, используя Lua требуется сборка библиотеки luasql-mysql

MySQL должен быть уже установлен (Шпаргалку по установке mysql в ОС Solaris 10 из пакетов взятых на sunfreeware.com я написал тут http://mydc.ru/r/?http://www.sunhelp.ru/forum/viewtopic.php?t=1162/)

Исходники для сборки luasql-mysql

Найти в Google и загрузить следующий архив:
luasql-2.1.1.tar.gz

так же потребуется (загружен ранее)
compat-5.1r5.tar.gz

Архивы скопированы:

/export/home/username/compile/luasql-2.1.1.tar.gz
/export/home/username/compile/compat-5.1r5.tar.gz

Архивы распакованы в каталоги:

/export/home/username/compile/luasql-2.1.1
/export/home/username/compile/compat-5.1r5

Вносятся изменения в конфигурационные файлы:

/export/home/username/compile/luasql-2.1.1/config

Отредактировать так как показано ниже:

Пример файла config
# Driver (leave uncommented ONLY the line with the name of the driver)
T= mysql
#T= oci8
#T= odbc
#T= postgres
#T= sqlite
#T=sqlite3

# Installation directories

# Default prefix
PREFIX = /usr/local

# System's libraries directory (where binary libraries are installed)
LUA_LIBDIR= $(PREFIX)/lib

# System's lua directory (where Lua libraries are installed)
LUA_DIR= $(PREFIX)/share

# Lua includes directory
LUA_INC= $(PREFIX)/include

# Lua version number (first and second digits of target version)
LUA_VERSION_NUM= 501

# OS dependent
LIB_OPTION= -shared -llua #for Linux
#LIB_OPTION= -bundle -undefined dynamic_lookup #for MacOS X

LIBNAME= $T.so
COMPAT_DIR= ../compat-5.1r5

# Compilation parameters
# Driver specific
######## MySQL
DRIVER_LIBS= -L/usr/local/mysql/lib/mysql -lmysqlclient -lz
DRIVER_INCS= -I/usr/local/mysql/include/mysql
######## Oracle OCI8
#DRIVER_LIBS= -L/home/oracle/OraHome1/lib -lz -lclntsh
#DRIVER_INCS= -I/home/oracle/OraHome1/rdbms/demo -I/home/oracle/OraHome1/rdbms/public
######## PostgreSQL
#DRIVER_LIBS= -L/usr/local/pgsql/lib -lpq
#DRIVER_INCS= -I/usr/local/pgsql/include
######## SQLite
#DRIVER_LIBS= -lsqlite
#DRIVER_INCS=
######## SQLite3
#DRIVER_LIBS= -L/opt/local/lib -lsqlite3
#DRIVER_INCS= -I/opt/local/include
######## ODBC
#DRIVER_LIBS= -L/usr/local/lib -lodbc
#DRIVER_INCS= -DUNIXODBC -I/usr/local/include

WARN= -Wall -Wmissing-prototypes -Wmissing-declarations -ansi -pedantic
INCS= -I$(LUA_INC)
CFLAGS= -fPIC -O2 $(WARN) -I$(COMPAT_DIR) $(DRIVER_INCS) $(INCS) $(DEFS)
CC= gcc

# $Id: config,v 1.8 2007/10/27 22:55:27 carregal Exp $


Кратко о внесенных в файл config изменениях:

Выбран mysql

Изменены пути к библиотекам

В переменную "LIB_OPTION= -shared #for Linux" добавлен параметр "-llua"

Выбран драйвер mysql и указаны пути к его библиотекам в 60-61 строках:

Код
DRIVER_LIBS= -L/usr/local/mysql/lib/mysql -lmysqlclient -lz
DRIVER_INCS= -I/usr/local/mysql/include/mysql


В переменную "CFLAGS= -O2 $(WARN) -I$(COMPAT_DIR) $(DRIVER_INCS) $(INCS) $(DEFS)" добавлен параметр "-fPIC"

Далее отредактировать файл:
/export/home/username/compile/luasql-2.1.1/Makefile

В 26 строке изменения должны быть такими:
Код
src/$(LIBNAME): $(OBJS)
    MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) -o $@ $(LIB_OPTION) $(OBJS) $(DRIVER_LIBS)
    export MACOSX_DEPLOYMENT_TARGET

К МАКОС(и) отношения не имеет в случае сборки на Солярис, но как переменная участвует в процессе сборки.

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

Код
LD_LIBRARY_PATH=/usr/sfw/lib:/usr/local/lib:/usr/ccs/lib:/usr/local/mysql/lib/mysql
export LD_LIBRARY_PATH

PATH=$PATH:/usr/sfw/bin:/usr/local/bin:/usr/ccs/bin:/usr/ucb
export PATH


Далее сборка:

Код
cd luasql-2.1.1
gmake clean
gmake
gmake install


Библиотека "mysql.so" установлена в каталог "/usr/local/lib/luasql"

Проверить работу "libqsl-mysql" можно командой "lua /export/home/username/compile/luasql-2.1.1/tests/test.lua" с параметрами.

Автор: mariner 1.2.2012, 18:04

У меня тока один вопрос - как вас на соляру занесло. Брендовое санковское железо?

Автор: Gatsu 1.2.2012, 18:35

Цитата(mariner @ 1.2.2012, 19:04) *
У меня тока один вопрос - как вас на соляру занесло. Брендовое санковское железо?


Начал с брэндового на Sparc. Теперь на х86.
С 2005 года на Солярке и сижу.
Как серверная платформа устраивает.
Для десктопа админа - Opensolaris.

Насчет сборки скажу, что пакеты Lua собранные сообществами не поддерживают luasocket
Поэтому описал свой удачный опыт сборки.
Тем более, что виндовый сервер с хабом навернулся из-за атаки извне... Ну и пришлось на Солярке пересобрать PtokaX с нужными опциями.

Автор: mariner 1.2.2012, 19:31

Цитата
Теперь на х86.

ну не знаю. На x86 систем хватает, а вот на спархках да, соляра рулит. Хотя она везде рулит.

Автор: Gatsu 1.2.2012, 19:41

Цитата(mariner @ 1.2.2012, 20:31) *
ну не знаю. На x86 систем хватает, а вот на спархках да, соляра рулит. Хотя она везде рулит.


К сожалению на Спарке PtokaX не работает.
Спарки еще есть в запасе, правда 1998 года выпуска, но на них спокойно устанавливается и работает ОС Solaris 10

Однако, из-за особенности архитектуры процессоров Спарк, которая не учтена разработчиками PtokaX, заставить работать PtokaX на Спарке мне не удалось.
Вот обсуждение по сборке PtokaX на Спарк, в котором я делился опытом...
http://mydc.ru/r/?http://sunhelp.ru/forum/viewtopic.php?p=8648

Но тогда я не собирался использовать PtokaX на Solaris x86 и не заботился о поддержке luasocket

Автор: mariner 1.2.2012, 19:52

ясно. Хех, я помнится срался с автором птоки по аналогичному вопросу, как у вас описано в той теме. Сам же собирал птоку на power, arm и mips, но на linux-платформе

Автор: KT315 2.2.2012, 19:41

Спасибо, так же подходит для Solaris 11 x86

Автор: Gatsu 2.2.2012, 19:49

Цитата(KT315 @ 2.2.2012, 20:41) *
Спасибо, так же подходит для Solaris 11 x86


Да. Проверял на OpenSolaris x86 06.2009
Забыл об этом упомянуть.