Как запустить программное обеспечение, которое не предлагается через менеджеры пакетов, для которого требуется ia32-libs

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

  • Собирает ли 13.10 какие-либо вызовы библиотек ia32libs и переводит ли вызовы в нужный код на amd64?
  • Если он запускается, означает ли это, что все необходимые библиотеки были загружены правильно, или есть вероятность его сбоя в дальнейшем, когда необходимая библиотека все-таки отсутствует?
  • Нужно ли делать обходной путь, такой как установка gcc? (вместе с его библиотеками i386)
  • Как узнать, какие библиотеки мне могут понадобиться для запуска этого программного обеспечения? (или любое другое 32-битное программное обеспечение, которое не предлагается через менеджер пакетов)

  • 2
    задан 13 April 2017 в 15:24

    1 ответ

    Это, главным образом зависит от программного обеспечения и как это было записано. В таких случаях я пошел бы для 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 бита.

    3
    ответ дан 13 April 2017 в 15:24

    Другие вопросы по тегам:

    Похожие вопросы: