LinuxForum.Fans
Тема

Грустная история о не поднятом сервере.

Автор: MikaBi 18 сообщений 2358 просмотров
#371974

Приветствую уважаемое Linux сообщество. Обычно я пытаюсь решить любую проблему сам, с помощью гугл, бессонных ночей и упрямства, но тут я просто сдаюсь и прошу о помощи. В общем дернул меня черт попытаться поднять сервер старой игры Battlefield 1942. Что у меня было:

VPS c Ubuntu 12.04.3 x64 на борту.
Установочный файл сервера игры bf1942_lnxded-1.6-rc2.run
Поскольку игра уже довольно старая, найти много данных не удалось, но все те немногие источники в один голос утверждают, что это и есть нужный файл.

Устанавливал по гайду от сюда http://wiki.slavka.kiev.ua/index.php/Games/Battlefield/Battlefield_1942 для тех, кто не любит ходить по мутным ссылкам, в трех словах расскажу, там всё детски просто:

./bf1942_lnxded-1.6-rc2.run

соглашаемся с EULA
выбираем путь для установки и собственно всё.

Тут у меня возникли первые расхождения с гайдом, по идее я должен был увидеть Installation complete. Так и случилось, но прежде я заметил это - ./license.sh: 55: test: -a: unexpected operator
Как я не рылся, но найти этого файла не смог, по этому решил двигаться дальше. Затем я настроил конфиг сервера, который вряд ли вызывал мою главную проблему, там имя сервера, IP, порт и всякая игровая лабуда- частота смены карт и прочее, не буду забивать вам голову.
Еще пожалуй скажу о файлах в директории сервера, в дальнейшем, как я понимаю в них и возникнет проблема, вот они:
start.sh
fixinstall.sh
bf1942_lnxded.static
bf1942_lnxded.dynamic

после первой попытки запуска появляется еще и симлинк bf1942_lnxded


Наступает момент истины. Перехожу в директорию с сервером, запускаю ./start.sh пока даже без screen. Консоль ожидаемо ругнулась error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
Установил библиотеку aptitude install libstdc++5 и попробовал опять запустить. Собственно на этом всё, появляется сообщение ./start.sh: using statically linked binary и более ничего не происходит, вернуться в консоль можно только ctrl+c . Решил попробовать разобраться что же это за волшебный start.sh а там вот такое (прошу прощения за портянку):

text
MYSYS=`uname`

if [ x"$MYSYS" != x"Linux" ]; then cat << _EOM_ The start.sh shell script only works when running Linux. For help with running the server on your platform ($MYSYS), please see the various threads at the

official beta forum: [url]http://bf1942.lightcubed.com/forum[/url] .

For FreeBSD, follow these steps: - Enable Linux binary compatibility - Symbolically link from bf1942_lnxded.static to bf1942_lnxded - Replace start.sh in the documentation with bf1942_lnxded _EOM_ exit 1; fi

# remove old symbolic link rm -f bf1942_lnxded

# use ldd to look for 'not found' errors if ldd bf1942_lnxded.dynamic 2>&1 | grep -q -i not\ found; then echo "$0: using statically linked binary"; ln -s bf1942_lnxded.static bf1942_lnxded; else echo "$0: using dynamically linked binary"; ln -s bf1942_lnxded.dynamic bf1942_lnxded; fi

# launch binary exec ./bf1942_lnxded $@

Поскольку я новичок из новичков, то понял только, что скрипт проверяет систему и в случае если это не линукс должен сообщить "не трогать start.sh" вообще, и рассказать, что в случае FreeBSD сделать симлинк. В общем, вот и все, что я могу рассказать.
Про статические и динамические библиотеки читал, но так и не понял какое отношение они имеют к моей ситуации. Если кому-то не лень будет копаться в этом хаосе, может быть подскажете чего-нибудь? Спасибо.

#371998

А что говорит

text
$ ldd bf1942_lnxded.dynamic

?

"MikaBi" написал:
и более ничего не происходит, вернуться в консоль можно только ctrl+c

А может так и должно?

#372000

Нет, так не должно быть. Там куча информации должно появиться о процессе запуска.

А вот это уже теплее, я правильно понимаю?

linux-gate.so.1 => (0xf77b5000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf77a5000)
libncurses.so.5 => /lib/i386-linux-gnu/libncurses.so.5 (0xf7783000)
libstdc++.so.5 => not found
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7756000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7738000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf771d000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7573000)
/lib/ld-linux.so.2 (0xf77b6000)
libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xf7553000)

UPD. Но ведь я ставил либу эту. Вот сейчас попытка:

text
aptitude install libstdc++5
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 82 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.
#372001

Вам нужна libstdc++5:i386, полагаю. https://help.ubuntu.com/community/MultiArch

#372005
yars написал:
Вам нужна libstdc++5:i386, полагаю. https://help.ubuntu.com/community/MultiArch

У меня он стоит, но для х64 архитектуры

text
Package: libstdc++5
State: installed
Automatically installed: no
Multi-Arch: same
Version: 1:3.3.6-25ubuntu1
Priority: optional
Section: universe/libs
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64

Спасибо за ссылку, там нашел этот пакет libstdc++5_3.3.6-25ubuntu4_i386.deb , скачал, но ставиться он категорически не желает по крайней мере так sudo aptitude install libstdc++5 , говорит, что всё уже есть. Я видимо совсем одервенел уже, но как установить конкретно вот этот скачанный пакет? Может как-то просто руками унести из него в /usr/lib/i386-linux-gnu то, что мне нужно?

#372006

Нет, надо добавить архитектуру i386, обновить список пакетов и поставить этот пакет для i386 почти как обычно.
https://wiki.debian.org/Multiarch/HOWTO
UPD: нужен ia32-libs.

#372007

Удивительно, но я сделал это) Кстати, сохраняю ваши ссылки- крайне полезные.

К сожалению, итог неутешительный, все либы в сборе, результат тот же (

text
 ldd bf1942_lnxded.dynamic
        linux-gate.so.1 =>  (0xf7723000)
        libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7713000)
        libncurses.so.5 => /lib/i386-linux-gnu/libncurses.so.5 (0xf76f1000)
        libstdc++.so.5 => /usr/lib/i386-linux-gnu/libstdc++.so.5 (0xf7636000)
        libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf760a000)
        libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf75ec000)
        libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf75d1000)
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7427000)
        /lib/ld-linux.so.2 (0xf7724000)
        libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xf7407000)
root@craftwith:/usr/games/bf1942# ./start.sh                                             
     ./start.sh: using dynamically linked binary
#372009

Ну, если это сервер, логично предположить, что он успешно запускается. Скрипт, показанный вами, сделан для того, чтобы выбирать автоматически между статически и динамически собранными вариантами проги. Если вывода после "using ..." нет, и скрипт не завершается, а как будто чего-то ждет, есть три варианта: либо он действительно чего-то ждет, например, подключения клиента, либо он завис, либо не настроен. У проги должен быть лог, посмотрите в каталоге /var/log/.

#372012
yars написал:
Ну, если это сервер, логично предположить, что он успешно запускается. Скрипт, показанный вами, сделан для того, чтобы выбирать автоматически между статически и динамически собранными вариантами проги. Если вывода после "using ..." нет, и скрипт не завершается, а как будто чего-то ждет, есть три варианта: либо он действительно чего-то ждет, например, подключения клиента, либо он завис, либо не настроен. У проги должен быть лог, посмотрите в каталоге /var/log/.

Что ж, попробуем предположить, что он действительно работает, хотя в гайдах пишут, что можно запускаться с параметрами, один из них это +statusMonitor 1, что, как я подозреваю должно наверное выводить некую статистику запуска. Ну да ладно, это все домыслы. Если он действительно работает, то теперь у меня другая проблема. Сервер висит на 14567 UDP порту, но IP моего VPS:14567 упорно не пингуется, я как мог открыл порт сначала так iptables -I INPUT -p udp -m udp --dport 14567 -j ACCEPT , потом для верности, ибо все равно не пингуется, вот так ufw allow 14567/udp . С сетевыми настройками - это вообще моя погибель) Подскажите, как мне наверняка открыть порт и проверить это?

UPD. Лог в стандартной папке не нашел почему-то...

#372038

А не пробовали запускать его скриптом, указанном в мануале?

Показать
[console]#!/bin/sh
. /etc/rc.subr
name="bf1942"
rcvar=${name}_enable
: ${bf1942_chdir="/data/games/bf1942"}
bf1942_user=${bf1942_user:-"games"}
command="${bf1942_chdir}/bf1942_lnxded"
command_args="> /dev/null &"
start_postcmd="bf1942_poststart"
stop_postcmd="bf1942_poststop"
bf1942_poststart()
bf1942_poststop()
{
/usr/bin/killall "${name}"
}
: ${bf1942_enable="YES"}
run_rc_command "$1"[/console]

Попробуйте еще как тут http://sysops.ie/blog/installing-bf1942-server-on-linux/

#372042

"MikaBi" написал:
Если кому-то не лень будет копаться в этом хаосе, может быть подскажете чего-нибудь? Спасибо.
переустановить пробовали? Я бы попробовал.
Пожалуйста.
#372043
"MikaBi" написал:
Но ведь я ставил либу эту. Вот сейчас попытка:

aptitude install libstdc++5
No packages will be installed, upgraded, or removed.

НЕТ такого пакета.

если бы он был, то вам бы написало "уже установлено", а вам пишут НЕТ.

#372045

drBatty, внимание на сообщение 5.

#372061

"yars" написал:
drBatty, внимание на сообщение 5.
там какой-то бред и умные мысли ТСа не в тему.
#372065
"drBatty" написал:
если бы он был, то вам бы написало "уже установлено", а вам пишут НЕТ.

Всякое бывает.

#372270

РЕШЕНО

Спасибо, господа :)



Итак, проблема была отчасти в отсутствующей библиотеке libstdc++.so.5 , а отчасти в моём характере) Вчера, когда я с помощью вас нашел ошибку и установил недостающую библиотеку, я не заметил, что надпись при запуске немного изменилась и стала такой using dynamically linked binary. Я не обратил на это внимание, привычно вырубал процесс ctrl+c и шел дальше думать и советоваться с вами. А зря. В последний раз я запустил процесс в screen, выключил терминал у ушел спать. Сегодня screen -r и вижу то, что вы видите на скриншоте. Оказывается с добавленной библиотекой оно работало, просто я не дождался :) В любом случае хорошо, что я сюда пришел за советом- набрался бесценного опыта. Огромное всем спасибо.

p.s. Если кому-то захочется поиграть- милости прошу. Сам клиент игры бесплатно раздаётся в Origin вот тут.

#372291

"verg" написал:
Всякое бывает.
это глючные ПМы. Точнее их обёртки.
Войдите или зарегистрируйтесь, чтобы ответить.