Я хотел поиграть с моими друзьями в одиночку на собственном сервере Unturned на VPS моих друзей с Debian 7. Я установил его в соответствии с инструкциями, но когда я запускаю сервер, это появляется.
Пожалуйста, помогите, спасибо
Я хотел поиграть с моими друзьями в одиночку на собственном сервере Unturned на VPS моих друзей с Debian 7. Я установил его в соответствии с инструкциями, но когда я запускаю сервер, это появляется.
Пожалуйста, помогите, спасибо
Библиотека GNU libc
в Debian Wheezy слишком старая, чтобы запустить нужную вам программу.
Эта широко используемая стандартная библиотека C, GNU libc
(для краткости "glibc"), старается поддерживать обратную совместимость со старыми приложениями, в то же время продвигаясь вперед с точки зрения реализованных функций.
Чтобы сделать это возможным, он версии своих "символов".
Символы - это имена функций и переменных, которые библиотека "экспортирует" - делает доступными программный код, который "связывает" библиотеку.
Каждая новая версия библиотеки GNU libc
которая получает определенные изменения в экспортируемых символах, получает конкретную запись в таблице символов, идентифицирующую конкретную версию этой библиотеки. Вы можете думать об этом как о "дескрипторе" определенного гарантированного набора функций, предоставляемого этой библиотекой.
Это делается прозрачно компилятором, который связывает код скомпилированной программы с glibc.
Какой бы компилятор не использовался для компиляции и компоновки вашей программы, он работал в системе, в которой был установлен glibc 2.15, и поэтому получающаяся программа теперь "хочет" glibc 2.15 или выше.
Теперь посмотрим, какая версия glibc у моего Debian Jessie (8.0):
$ apt-cache policy libc6
libc6:
Installed: 2.19-18+deb8u4
Candidate: 2.19-18+deb8u4
Version table:
*** 2.19-18+deb8u4 0
500 http://http.debian.net/debian/ jessie/main amd64 Packages
...
Но если мы посмотрим на то, что есть в Wheezy, то увидим, что он 2.13 - два выпуска "до" версии, в которой нуждается ваша программа.
Если перестройка этой программы невозможна (я считаю, что это не так), у вас есть только два варианта:
Каким-то образом привязать новый glibc к системе и заставить программу "увидеть" его.
Теоретически, должна быть возможность создать более новый glibc, настроив его в процессе таким образом, чтобы он устанавливался в нестандартном месте - например, в /opt/glibcX.Y
или что-то в этом роде.
Имея более новую доступную версию glibc, вы можете использовать стандартную "хитрость", чтобы заставить вашу программу использовать нестандартную библиотеку: переменную среды LD_PRELOAD
. Что-то вроде этого:
$ LD_PRELOAD=/opt/glibcX.Y/libc6.so ./myprogram
Обновите вашу установку Debian.
Если вы не слишком увлекаетесь созданием вещей и работой с низкоуровневыми механизмами, второй вариант, вероятно, является более простым способом решения данной проблемы.