Запустите 32-разрядную программу на 64-разрядной Ubuntu без sudo

Существует 32-разрядная программа, что я должен работать на 64-разрядной Ubuntu. Когда я пытаюсь выполнить его, у меня есть следующая ошибка:

программа: ошибка, в то время как загрузка совместно использовала библиотеки: libncurses.so.5: не может открыть файл общего объекта: Никакой такой файл или каталог

При использовании моих персональных ПК мне удалось решить эту проблему при помощи следующих команд:

sudo dpkg --add-architecture i386 
sudo apt-get update 
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

Однако я теперь должен запустить эту программу на другом ПК, на котором я не могу иметь sudo прав. Я сделал поиск Google для решения этой проблемы, но ничто не нашел окончательным.

Таким образом, мой вопрос: есть ли какой-либо способ для меня запустить 32-разрядную программу на 64-разрядной Ubuntu (14.04 LTS) без какой-либо команды sudo?

Редактирование: программа, которую я пытаюсь использовать, является ProFit V3.1

Редактирование для @EliahKagan: результаты требуемых команд: На целевой машине:

$ lsb_release -a
lsb_release : command not found

$ apt-cache policy libc6
apt-cache : command not found

$ file /lib/x86_64-linux-gnu/libc-*
/lib/x86_64-linux-gnu/libc-*: cannot open `/lib/x86_64-linux-gnu/libc-*' (No such file or directory)

Учитывая эти результаты, я не уверен, что должен также дать результаты на своей машине...? На моей машине:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5
LTS Release: 14.04
Codename: trusty
$ apt-cache policy libc6
libc6:
  Installed: 2.19-0ubuntu6.9
  Candidate: 2.19-0ubuntu6.9 [...]
$ file /lib/x86_64-linux-gnu/libc-*
/lib/x86_64-linux-gnu/libc-2.19.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs) [...]
0
задан 3 January 2017 в 15:16

2 ответа

Исходный код ProFit 3.1 доступен, официально и бесплатно. Таким образом вместо того, чтобы пытаться выполнить предварительно созданный 32-разрядный двоичный файл в 64-разрядной системе, которой не установили поддержку библиотеки для него, я рекомендую создать ее из источника как 64-разрядная программа.

Одна опция состоит в том, чтобы создать его в Вашей системе, где можно легко установить что-либо необходимое для сборки, и принести скомпилированный двоичный файл к другой системе, где Вы также хотите выполнить его.

  1. Удостоверьтесь своя собственная система (тот, на котором Вы действительно имеете административные права), актуально, затем установите некоторые инструменты, которые полезны для компиляции программного обеспечения:

    sudo apt update && sudo apt upgrade
    sudo apt install build-essential libncurses5-dev
    

    libncurses5-dev пакет предоставляет заголовочные файлы одной из библиотек эта программа потребности. Другие кажутся всем быть зависимостями build-essential (который дает Вам некоторые удобные утилиты также, как make, и компилятор, если Вы еще не установлены).

    Вы упомянули libstdc++6 в Вашем вопросе. Пакет, который предоставил бы заголовочные файлы той библиотеке, libstdc++6-4.7-dev. Однако ProFit, кажется, на самом деле не использует libstdc++6. Таким образом, Вам не придется установить ту деталь -dev пакет.

  2. Загрузите архив исходного кода для ProFit. Это - названный файл profit.tar.gz.

  3. Распакуйте архив исходного кода и войдите src подкаталог того, где это было распаковано:

    tar xf profit.tar.gz
    cd ProFitV3.1/src
    
  4. Дополнительно, создать резервную копию Makefile прежде, чем изменить его:

    cp Makefile Makefile.orig
    
  5. Как рекомендуется в официальных инструкциях по сборке, открытых Makefile в текстовом редакторе по Вашему выбору (nano и vim будет работать, как будет графический редактор), и не прокомментируйте строки, которые включают поддержку readline.

    Открыть файл в nano:

    nano -w Makefile
    

    Найдите эти строки:

    #READLINE    = -DREADLINE_SUPPORT
    #READLINELIB = -lreadline -lcurses
    

    Это строки 9 и 10. Для некомментария их удалите продвижение # от каждого так они похожи на это вместо этого:

    READLINE    = -DREADLINE_SUPPORT
    READLINELIB = -lreadline -lcurses
    

    Сохраните файл и выйдите из текстового редактора. (Выходы Ctrl+X nano, и Вам предложат сохранить Ваши изменения.)

  6. Создайте программу путем выполнения просто:

    make
    

    Вы будете видеть некоторые предупреждения компилятора, но не должно быть никаких ошибок. (Если существуют ошибки, то мы должны будем выяснить то, что пошло не так, как надо.)

  7. Исполняемый файл называют profit должен теперь существовать в текущем каталоге. Попытайтесь выполнить его, чтобы видеть, работает ли это:

    ./profit
    

    Это работало на меня. (Как Вы, вероятно, знаете, можно затем работать quit выходить назад к оболочке.)

    ek@Io:~/src/ProFitV3.1/src$ ./profit
    
                      PPPPP                FFFFFF ii   tt
                      PP  PP               FF          tt
                      PP  PP rrrrr   oooo  FF     ii  ttttt
                      PPPPP  rr  rr oo  oo FFFF   ii   tt
                      PP     rr     oo  oo FF     ii   tt
                      PP     rr     oo  oo FF     ii   tt
                      PP     rr      oooo  FF      ii   ttt
    
                          Protein Least Squares Fitting
    
                                   Version 3.1
    
          Copyright (c) Dr. Andrew C.R. Martin, SciTech Software 1992-2009
                  Copyright (c) Dr. Craig T. Porter, UCL 2008-2009
    
    ProFit>quit
    ek@Io:~/src/ProFitV3.1/src$
    
  8. Вернитесь к родительскому каталогу каталога ProFit верхнего уровня (т.е. каталог, который содержит каталог, где Вы распаковали .tar.gz архив). Создайте новый архив. Этот включает файлы, созданные из сборки.

    cd ../..
    tar cJvf ProFitV3.1.tar.xz ProFitV3.1/
    

    tarлуг Ваша сборка гарантирует, что, неважно, как Вы передаете его другой системе, разумные полномочия (включая исполняемые полномочия на profit двоичный файл), сохраняются.

    xz сжатие является совершенно дополнительным, все же. Вы могли удалить J флаг (и .xz расширение).

  9. Копия ProFitV3.1.tar.xz, который Вы просто создали к другой системе, в которой Вы хотите использовать ProFit (система, в которой Вы не администратор).

    Как лучше всего сделать, это зависит от Вас, обеспечиваются доступ к другой системе, и Вы, вероятно, уже знаете лучший способ. Но один путь scp:

    scp ProFit3.1.tar.xz remote-username@remote-hostname:

    Это копирует файл в Ваш корневой каталог на другой машине. (Не забывайте двоеточие в конце.) необходимо будет ввести пароль, если основанная на ключе аутентификация не была настроена. Конечно, это только работает, если у Вас есть доступ через SSH.

  10. В другой системе Ubuntu распакуйте архив, cd к местоположению profit исполняемый файл и попытка, выполняющая его:

    tar xf ProFitV3.1.tar.xz
    cd ProFitV3.1/src
    ./profit
    

    Это работало на меня. Однако я протестировал это с двумя системами Ubuntu 16.04. У меня не было шанса протестировать его с Ubuntu 14.04.

  11. Выполните любую необходимую конфигурацию, как установка HOMEDIR и DATADIR переменные среды и, дополнительно, помещая исполняемый файл в другой каталог. Это покрыто Установкой под подобными UNIX операционными системами в инструкциях по установке ProFit.

    Можно поместить export команды, как показано в тех инструкциях, в .profile файл в Вашем корневом каталоге. Они будут установлены для последующих логинов. Существуют также другие методы для установки переменных среды в расчете на пользователя, и Вы не должны быть администратором, чтобы сделать их. Однако, если Вы принимаете решение использовать метод, где Вы редактируете .pam_environment, необходимо быть очень осторожными; хотя это не будет влиять ни на каких других пользователей в системе, синтаксической ошибке в Вашем .pam_environment файл будет препятствовать тому, чтобы Вы вошли в систему, и Вы могли бы нуждаться в помощи администратора для отмены ошибки.

ProFit имеет очень немного зависимостей, по сравнению с большей частью программного обеспечения. Таким образом, я ожидаю, что это будет работать. (Это работало на меня.) Сообщите мне, как это идет.

1
ответ дан 7 November 2019 в 05:24

Проблема не в том, чтобы запустить 32-битный двоичный файл на 64-битной платформе, которая является ретро-совместимой.

Проблема заключается в установке новой общесистемной библиотеки, для которой у вас недостаточно прав.

Возможно, вы захотите найти версию вашего бинарного файла, которая не требует общих библиотек, но в комплекте с каждой необходимой библиотекой.

РЕДАКТИРОВАТЬ:

Если в этой системе установлены debootstrap и schroot, возможно, вы захотите войти в подпапку вашего дома и стать пользователем root в этой новой системе.

Это позволило бы иметь корневые привилегии в этой «виртуальной среде».

Пояснения о том, как этого добиться, можно найти здесь: http://www.binarytides.com/setup-chroot- убунт-Debootstrap /

2
ответ дан 7 November 2019 в 05:24

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

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