Как вижу, полного мана по установке trinity на FreeBSD пока нет, ниже попробую это исправить.
Действия проводились на FreeBSD 7.2 stable В первую чередь нам понадобиться mysql сервер и клиент:
Code
cd /usr/ports/databases/mysql51-server/ && make install clean
cd /usr/ports/databases/mysql51-client/
В принципе, все должно будет неплохо работать и с конфигом по умолчанию, но если вы намереваетесь использовать русские имена персов, не забудьте в my.cnf в разделе [client] и [mysqld] добавить:
default-character-set=utf8 т.к. по умолчанию из порта мускуль собирается с "default-character-set=latin1", и если не прописать utf8 - вместо имён будет "?????????"
Установка 6ой версии пока не рекомендуется по ряду причин, в частности
т.к. при использовании поля типа "varchar(255)" начинаются траблы с праймари кеем
Кроме того, частично не совпадает синтаксис запросов, возможно, при установки trinity core это и не всплывет, но на других проектах приведет к проблемам (на моем опыте это был форум SMF)
Для запуска сервера в screen режиме нужно поставить сам скрин:
Code
cd /usr/ports/sysutils/screen/ && make install clean
Для компиляции я использую gmake, потому, если у вас его нет, ставим из портов:
Code
cd /usr/ports/devel/gmake/ && make install clean
Исходники мы будем выкачивать при помощи Mercurial
Code
cd /usr/ports/devel/mercurial/ && make install clean
Для сборки openssl и АСЕ может понадобиться последний libtool
Code
cd /usr/ports/devel/libtool22/ && make install clean
Кроме того, для сборки будет нужен openssl
Code
cd /usr/ports/security/openssl/ && make install clean
И...тысяча чертей, АСЕ, версии 5.7.5 Чтобы его установить нам нужно взять вот этот патч
и вот этот архив
Содержимым архива заменяем содержимое каталога /usr/ports/devel/ace
далее пробуем сделать make, система выкачает и распакует архив с исходниками и начнет сборку (вдруг нам повезет!), если удача повернулась тылом и выдала ошибку, касаемо pthread, накатываем патч
Code
cd /usr/ports/devel/ace/work
patch < путь к вышеуказанному патчу/compa_freebsd7.patch
Вероятнее всего спросит, какие файлы патчить: указываем ему полный путь: /usr/ports/devel/ace/work/ACE_wrappers/ace/OS_NS_signal.inl
и
/usr/ports/devel/ace/work/ACE_wrappers/ace/OS_NS_netdb.inl
повторяем
Code
cd /usr/ports/devel/ace/
make install
Если все в порядке, после этих действий выходим из под рута.
Идем в свой домашний каталог, создаем там каталог для исходников, заходим в него и запускаем (исходники для версии 3.2.2а, на момент написания)
Code
hg clone https://trinitycore.googlecode.com/hg/
Ждем, пока они выкачаются
После заходим в каталог исходников и запускаем оттуда скрипт такого вида, параметры конфигурации нужно подобрать под свою систему:
Code
mkdir build
cd build
cmake ../ -DPREFIX=/opt/mangos/trinity/hg/release \
-DCMAKE_C_FLAGS="-O2" \
-DCMAKE_CXX_FLAGS="-O2" -DDO_DEBUG=0 -DDO_SCRIPTS=true \
-DCMAKE_DFD_SETSIZE=4096 -DLARGE_CELL=0 -DSHORT_SLEEP=1 \
-DCMAKE_C_FLAGS="-march=prescott -m64 -D_LARGEFILE_SOURCE \
-D_FILE_OFFSET_BITS=64 -O2 -pipe -pipe -msse3 -fomit-frame-pointer \
-ffast-math -fno-strength-reduce -fno-strict-aliasing -frename-registers"
#cd build
#gmake install
Стоит заметить, что строчки после cmake определяют параметры конфигурации сборки для вашей системы, параметры эти на всех никсах одинаковые, так что можем невозбранно утащить их из мана для сборки на linuxе Правда при том, что openssl и ACE у нас установлены в системные директории, нам не нужно указывать конфигуратору где их искать, и строки
Code
-DACE_LIBRARY=~/.sys/lib/libACE.so -DACE_INCLUDE_DIR=~/.sys/include/ -DSSLLIB=~/.sys/lib/libssl.so
мы выбрасываем Вероятно вы заметили отличие в О3/О2 - эти параметры отвечают за степень оптимизации, причем стабильной считается О2, будем собирать с ней.
Этот скрипт после конфигурации сразу же начнет сборку, если вам это не нужно, комментируем последние две строчки.
Результат наших трудов будет сохранен в каталог, указанный в -DPREFIX=
Проверяем этот каталог, если видим там папку bin с 2мя файлами trinity-core и trinity-realm, можно себя поздравить.
Стандартные конфиги лежат в etc/редактируем их под себя.
Для удобства запуска в папку с бинарниками можно бросить вот такие скрипты:
core.sh:
Code
#!/bin/sh
while true ; do
servlog='путь к логу сервера, указанный в конфиге, включая имя файла лога';
outpath='путь к папке, в которую будем сохранять крашлог';
date=`date "+%Y-%m-%d_%H:%M:%S"`;
echo "Server CRASHED !!! Start Bugreport System." >> $outpatch$date.txt;
echo "Server.log Log FILE Last 30 Lines:" >> $outpatch$date.txt;
cat $servlog | tail -n 30 >> $outpath$date.txt;
echo "" >> $outpatch$date.txt;
echo "END bugtracker system." >> $outpatch$date.txt;
/путь к бинарникам/bin/trinity-core -c ../etc/trinitycore.conf #указывает расположение файла конфигурации
done
Т.К. Риалм сервер падает в разы меньше и по более очевидным причинамм, столь страшный скрипт для него не нужен.
realm.sh:
Code
#!/bin/sh
while true ; do
echo `date` ", Realm daemon crashed and restarted." >> /путь куда сохранять краш лог/realmcrash.log
/путь к бинарникам/bin/trinity-realm -c ../etc/trinityrealm.conf
done
start.sh:
Code
screen -AmdS world /путь к скрипту/core.sh
screen -AmdS realm /путь к скрипту/realm.sh
start.sh готов к тому, чтобы занести его, например в /etc/rc.d
тогда он будет автоматом запускать тринити после старта сервера.
Скрипты core.sh и realm.sh - авторестарт в случае падения.
core.sh записывает последние 30 строк из лога сервера в указанную папку
В составлении мана помогли отзывы по сборке АСЕ, ман сборке под линукс, и старые маны по мангосу. Взято с trinity-core.ru
Автор Sammael