Приветствую уважаемое 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 а там вот такое (прошу прощения за портянку):
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 сделать симлинк. В общем, вот и все, что я могу рассказать.
Про статические и динамические библиотеки читал, но так и не понял какое отношение они имеют к моей ситуации. Если кому-то не лень будет копаться в этом хаосе, может быть подскажете чего-нибудь? Спасибо.
