Я пытаюсь установить выделенный сервер Arma 2 OA на виртуальную машину Virtualbox, чтобы я мог тестировать свои собственные миссии в среде «песочницы» таким образом, чтобы я мог перенести их на другой компьютер в моей сети. (Другой компьютер работает под управлением виртуальной машины, но это машина с Windows, и я не хотел возиться с его установкой). Ему нужно как минимум 2, а лучше 4 ГБ оперативной памяти, поэтому я решил установить версию ubuntu для AMD64. 13.10, чтобы начать.
' Как вы запускаете 32-битную программу на 64-битной версии Ubuntu? ' уже объяснили, как установить 32-битное программное обеспечение через apt-get и / или dpkg, но это не так применить в этом случае.
Сервер предлагается в виде сжатой загрузки на сайте BI Studio, разработчика игр Arma. Его инструкции по установке, очевидно, немного устарели с современным уровнем техники. (вероятно, потому что состояние было обновлено совсем недавно :)) В нем говорится, что я должен установить ia32-libs, который сейчас, видимо, устарел. Теперь мне нужно выяснить, как правильно установить пакеты, чтобы убедиться, что они будут работать.
Мой уровень опыта подобен начинающему-промежуточному, когда речь заходит об этих вопросах. Я установил много пакетов, хотя apt-get; Я решил проблемы с зависимостями в прошлом; Я не установил много программного обеспечения без использования менеджеров пакетов. Я могу справиться с основной административной работой, такой как редактирование файлов conf и прочее.
Я только что попытался установить его, не устанавливая ia32-libs через apt-get, но установив gcc, чтобы получить libs в конце концов. Я считаю, что gcc будет включать файлы для кодирования обратной совместимости, а в linux все библиотеки (насколько я могу судить) установлены на системном уровне в /libs
. Пока что похоже на запуск. (Я могу подключиться к игровому серверу через мой внутриигровой сетевой браузер, чтобы он общался). Я не уверен, что при запуске программы игрового сервера происходит какая-либо проверка зависимостей, поэтому у меня осталось несколько вопросов:
Это, главным образом зависит от программного обеспечения и как это было записано. В таких случаях я пошел бы для 32-разрядного Debian (при наличии) двоичный файл или скомпилированный двоичный файл на 32 бита. Это было уже объяснено в моем ответе, Как Вы запускаете 32-разрядную программу на 64-разрядной версии Ubuntu? и продемонстрировал даже выполнение 64-разрядной версии 32-разрядной системы (который был невозможен несколько лет назад). На самом деле легче запустить приложения на 32 бита в системах на 64 бита.
Обычно при выполнении двоичного файла, он сообщит Вам о недостающих библиотеках, которые можно посмотреть в репозиториях.
13.10 ловит какие-либо вызовы к ia32libs библиотекам и переводит вызовы в правильный код amd64?
Нет. Разработчики должны сделать это. Система только показывает библиотеки с помощью Компоновщика GNU ld
. Если программное обеспечение пытается пользоваться библиотеками "твердого кода", то необходимо обмануть его и указать на них на правильные библиотеки. Современное, правильно написанное программное обеспечение, не нуждайтесь в этом.
Если это работает, который означает, что все необходимые библиотеки были загружены правильно, или есть ли изменение его отказывающий позже, когда библиотека, которая была необходима, отсутствует, в конце концов?
Если это работает, прекрасно. Через библиотеки загружаются в начале исполняемого файла, и без них (т.е. некоторые из них отсутствуют), он не запустится, но даже если они присутствуют, не, во все вызовы заходят, запускаются поэтому, возможно, определенный призыв к определенной функции изменил способ, которым он ведет себя, и приложение не поддерживает это, ведя к катастрофическому отказу. Это - угловые сценарии случаев, но они возможны, Таким образом, Вы, вероятно, заметите, имеет ли это несовместимости с более новыми библиотеками. Однако это - другая проблема в целом. Для фиксации этого, необходимо будет или адаптироваться к новым библиотекам или уже понизить установленный.
Действительно ли необходимо сделать обходное решение, такое как установка gcc?
gcc
компилятор. Только если Вы скомпилируете код с помощью C или C++, необходимо установить его. Другим случаям, возможно, понадобится обходное решение, но я уже не видел "двоичного файла" (скомпилированный исполняемый файл) нуждающийся в gcc
компилятор для выполнения.
Как я узнаю, какие библиотеки я, возможно, должен был бы запустить это программное обеспечение? (или любая другая часть 32-разрядного программного обеспечения, которое не предлагается через диспетчер пакетов),
Является немного жестоким, но если в инструкциях не говорится точно, в каких библиотеках Вы нуждаетесь или используете ld-linux.so --list
команда. Пример:
$ /lib64/ld-linux-x86-64.so.2 --list /bin/bash
linux-vdso.so.1 => (0x00007fffd479f000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f0d39138000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0d38f34000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0d38b6a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0d3937f000
( ldd
двоичный файл обеспечивает тот же вывод благодаря @ubfan),
Как видете, bash
linux-vdso использования, libtinfo.so, libdl.so и libc.so. Если те библиотеки корректны затем bash
довольно ими. Это для связанных двоичных файлов dinamicaly. Можно использовать --verify
вместо этого, чтобы проверить, связан ли двоичный файл действительно динамично.
Затем Вы берете название библиотек, позволяет, говорят, что libtinfo.so.5, который оно включало в пакеты:
File Packages
/lib/i386-linux-gnu/libtinfo.so.5 libtinfo5 [not amd64]
/lib/x86_64-linux-gnu/libtinfo.so.5 libtinfo5 [not i386]
/lib32/libtinfo.so.5 lib32tinfo5 [not i386]
/lib64/libtinfo.so.5 lib64tinfo5 [not amd64]
/usr/lib/debug/libtinfo.so.5 libtinfo5-dbg
/usr/libx32/libtinfo.so.5 libx32tinfo5
Так, мы просто должны установить корректный пакет для архитектуры двоичного файла (если это - 32 бита, добавить :i386
к названию пакета, 64-разрядного :amd64
) и мы будем хороши для движения.
Иглы, чтобы сказать, выполнить двоичные файлы на 64 бита в 32-разрядной платформе, Ваш ЦП должен составить способные 64 бита (большинство систем с 2008 и позже) и скорее всего потребуют установленного ядра на 64 бита.