Автор: ShadoWx 1.2.2012, 16:59
С версии 2.3.6 "RusHub" поддерживает возможность использования posix capabilities.
Выражаясь простым языком - можно запускать хаб на 411 порту и не использовать перенаправления при помощи IPTABLES.
Шаг 1.
В этой теме мы с вами скомпилируем хаб, поддерживающий эту возможность.
Нам понадобятся следующие пакеты в системе:
1. libcap-dev
2. autotools-dev
3. automake
4. libtinyxml-dev
Все эти пакеты необходимо установить при помощи команды:
Код
sudo apt-get install название_пакета
Если у вас нет установленного хаба, то загружаем его из svn:
Код
svn co https://rushub.svn.sourceforge.net/svnroot/rushub/trunk/ /локальный/путь/куда/загружаем/
Далее переходим в папку с хабом, в моем случае это:
/home/shadowx/rushub/rushub/
Шаг 2.Вводим команды по очереди:
1.
Код
autoreconf -i
2.
Код
./configure --enable-caps
3.
Код
make
4.
Код
make clean
5.
make На 5 этапе начнется сборка хабаШаг 3.Теперь нам необходимо добавить 2 строки в файл настроек RusHub'а:
Код
<Item Name="sUserName">shadowx</Item>
<Item Name="sGroupName">shadowx</Item>
где shadowx - имя пользователя от кого мы запускаем хаб.Теперь в /etc/init.d/rushub записываем следующее содержимое:
Код
#!/bin/sh
### BEGIN INIT INFO
# Provides: rushub
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by rushub.
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME="RusHub"
PATH_DAEMON="/home/shadowx/rushub_bin"
DAEMON="$PATH_DAEMON/$NAME"
PATH_DAEMON_CFG="$PATH_DAEMON/RusHub.xml"
PIDF="$PATH_DAEMON/rushub.pid"
ARGS="-c $PATH_DAEMON_CFG"
USER="root"
start() {
echo -n "Запуск $NAME: "
start-stop-daemon --start --chuid $USER --make-pidfile "$PIDF" --pidfile "$PIDF" --name $NAME --background --startas $DAEMON -- $ARGS
echo "готово."
}
stop() {
echo -n "Остановка $NAME: "
start-stop-daemon --chuid $USER --stop --pidfile "$PIDF" --name $NAME --retry=TERM/5/KILL/10
rm "$PIDF"
echo "готово."
}
restart() {
stop
sleep 2
start
}
if [ ! -x "$DAEMON" ]
then
echo "отсутствует файл для запуска $DAEMON"
exit 0
fi
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
if [ -f "$PIDF" ];
then
PID=$(cat $PIDF)
if [ `ps auwx|grep $NAME|grep $PID|grep -v -c grep` = 1 ]
then
echo "процесс $NAME работает [pid: $PID]."
exit 0
fi
echo "процесс $NAME не запущен."
exit 3
fi
echo "процесс $NAME не запущен."
exit 3
;;
*)
echo "Использование {start|status|stop|restart}"
exit 1
;;
esac
exit 0
Шаг 4.Теперь необходимо накатить небольшой патч на lua-плагин, чтобы хаб запустился после установки:
shared_tinyxml.zip ( 615 байт )
: 14Как накатывать:
1. перейти в папку с lua-плагином cd rushub/lua_plugin
2. patch -p4 < shared_tinyxml.patch
Шаг 5.1. Установить порт для хаба в настройках 411
2. sudo service rushub restart
У меня все запустилось успешно.
Спасибо mariner'у за наставления на пусть истинный
Автор: Setuper 1.2.2012, 17:10
На самом деле вместо патча можно это дело в autoconf заделать
Код
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif // HAVE_CONFIG_H
#if HAVE_TINYXML_H
#include <tinyxml.h>
#else
#include "tinyxml/tinyxml.h"
#endif // HAVE_TINYXML_H
в config.h:
Код
#define HAVE_TINYXML_H 1
Автор: Setuper 1.2.2012, 17:19
Не ну так более правильно сделать. LuaPlugin.cpp я подправил. Однако не знаю достаточно ли будет указать в config.h: #define HAVE_TINYXML_H 1
Или же нужно будет ещё где-то определить HAVE_CONFIG_H
Хотя луа плагин ну нас же не собирается при помощи autotools :(
Автор: ShadoWx 1.2.2012, 17:19
Цитата(Setuper @ 1.2.2012, 18:17)
Не ну так более правильно сделать. LuaPlugin.cpp я подправил. Однако не знаю достаточно ли будет указать в config.h: #define HAVE_TINYXML_H 1
Или же нужно будет ещё где-то определить HAVE_CONFIG_H
делал так как описывал, все прекрасно завелось, Коля обещал просмотреть и выявить косяки в моем описании
Илья, вопрос к тебе, а после обновления на новые релизы строчки из конфига не будут удаляться ??
Автор: mariner 1.2.2012, 18:32
Коля посомтрел и поправил. Я думаю autotools и для lua_plugin сделаю
Автор: CrazyKiller 1.2.2012, 21:22
Есть проше http://mydc.ru/index.html?showtopic=4949&view=findpost&p=39923
в 2 клика как говоритса )))
Работает уже давно у меня так, по сей день, не от Рута а от пользователя
но за такой мануал как у вас, тоже интересно
Спасибо
Автор: mariner 1.2.2012, 21:39
Алсо, я предпочитаю все-таки ставить когда этот код внутри софтины. Удобнее плюс опять же. он не тянет, а плюсов "к карме" накидывает. Хотелось бы только чтобы сетапер сообщал о том, когда еще файлы добавляет в дерево исходников, а то вот был релиз, в котором autotool-сборка не работала. Сегодня поправил это в svn.
Автор: Setuper 1.2.2012, 22:10
Ок.
Ну а вообще, релизы все находятся в tags, и релизные ветки вообще говоря можно также править на svn при необходимости.
Автор: mariner 1.2.2012, 22:46
да не вопрос. Буду подпиливать по мере необходимости.