Данный файл или каталог отсутствует? Но файл существует!

Я скачал игру (Shank), но файл bin не запускается. Ошибка, которая отображается при попытке запустить исполняемый файл:

bash: ./shank-linux-120720110-1-bin: No such file or directory
231
задан 8 May 2012 в 05:56

8 ответов

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

Есть три случая, когда вы можете получить сообщение «Нет такого файла или каталога»:

  • Файл не существует. Я полагаю, вы проверили, что файл действительно существует (возможно, потому, что оболочка завершает его).
  • Файл с таким именем существует, но это висящая символическая ссылка.
  • Файл существует, и вы даже можете прочитать он (например, команда file shank-linux-120720110-1-bin отображает что-то вроде «ELF 32-bit LSB Execution…»), но когда вы пытаетесь его выполнить, вам говорят, что файл не существует.

Сообщение об ошибке в последнем случае, по общему признанию, сбивает с толку. Это говорит вам о том, что ключевой компонент среды выполнения, необходимый для запуска программы, отсутствует. К сожалению, канал, по которому сообщается об ошибке, имеет место только для кода ошибки, а не для этой дополнительной информации, что действительно виновата среда выполнения. Если вам нужна техническая версия этого объяснения, прочтите Получение сообщения «Не найдено» при запуске 32-битного двоичного файла в 64-битной системе .

Команда file будет рассказать вам, что это за двоичный файл. За некоторыми исключениями, вы можете запускать двоичный файл только для той архитектуры процессора, для которой предназначен ваш выпуск Ubuntu. Основным исключением является то, что вы можете запускать 32-битные (x86, также известные как IA32) двоичные файлы на 64-разрядных (amd64, также известных как x86_64) системах.

В Ubuntu до 11.04 для запуска 32-разрядных двоичных файлов на 64-разрядных системах bit, вам необходимо установить пакет ia32-libs Install ia32-libs.Возможно, вам потребуется установить дополнительные библиотеки (если вы это сделаете, вы получите явное сообщение об ошибке).

Поскольку в 11.10 (oneiric) была введена поддержка multiarch , вы все еще можете установить ia32-libs , но вы можете выбрать более тонкий подход, достаточно получить libc6-i386 Install libc6-i386 (плюс любую другую необходимую библиотеку).

272
ответ дан 22 November 2019 в 22:46

Biex tespandi fuq it-tweġiba @Gilles, hemm mill-inqas tliet xenarji li jirriżultaw f'dan l-iżball:

  1. Il-fajl ma jeżistix.
  2. Il-fajl jeżisti iżda huwa ħolqa simbolika li tiddendel.
  3. Il-fajl jeżisti (eż. fajl il-kmand jaħdem), li jwassal għal messaġġ ta 'żball li jista' jħawwad. Dan jista 'jfisser li hemm problema bil-loader.

Kategoriji ta' problemi tal-loader:

  1. Il-loader ta 'eżekutibbli ma jeżistix. Tista 'tiċċekkja dan billi tuża l-kmand tal-fajl u tara jekk il-loader jeżistix. Eż.

     file lmgrd
    lmgrd: ELF 64-bit LSB eżegwibbli, x86-64, verżjoni 1 (SYSV), marbut b'mod dinamiku, interpretu /lib64/ld-lsb-x86-64.so.3, għal GNU / Linux 2.6.18, imqaxxar
     

    Avviż interpretu /lib64/ld-lsb-x86-64.so.3; jekk dan il-fajl ma jeżistix, għandek bżonn tinstallah. Għal dan il-loader partikolari fis-16.04, ir-risposta kienet sudo apt-get install lsb .

  2. Kwistjonijiet bil-loader tal-iskript (ara din it-tweġiba ).

  3. Nieqsa libreriji maqsuma - uża ldd biex tivverifika jekk hemmx libreriji "mhux misjuba". Ara din it-tweġiba għal aktar informazzjoni.

Il-loader li ma jeżistix jista 'jkun minħabba diskrepanza ta' 32/64 bit jew xi raġuni oħra. Jista 'jkun hemm tipi oħra ta' żbalji tal-loader li ma nafx dwarhom.

8
ответ дан 22 November 2019 в 22:46

64-битные системы Ubuntu Multiarch

Следуйте этому ответу, только если в выводе файла имя-файла отображается:

file-name: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped

Для запуска 32-битного исполняемого файла в 64-битном многоархивная система Ubuntu, вам нужно добавить архитектуру i386 , а также установить libc6: i386 , libncurses5: i386 , libstdc ++ 6: i386 эти три пакета библиотеки.

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
./file-name
61
ответ дан 5 January 2021 в 23:42

Установив deb для 32-битной версии, я понял, что мне не хватает некоторых библиотек (в дополнение к ia32-libs и libc6). Сначала я решил эту проблему, дав следующую команду:

sudo apt-get install -f          

Затем я получил другую ошибку:

Message: SDL_GL_LoadLibrary 
Error: Failed loading libGL.so.1

Очевидно, эти библиотеки были правильно установлены. Не вдаваясь в подробности, пришлось вручную связывать библиотеки. Тогда я понял, что с помощью Synaptic можно было бы проще установить следующие пакеты:

libgl1-mesa-glx:i386
libgl1-mesa-dri: i386.

После этого следующей проблемой был черный экран во время игры, который я решил, заменив исполняемый файл в / Shank / bin следующим: http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar.bz2 .

Надеюсь, это будет кому-то полезно. Если вам нужна дополнительная помощь или подробности, свяжитесь со мной.

4
ответ дан 5 January 2021 в 23:42

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

В Windows разделителем строк является CRLF ( \ r \ n ), тогда как в Linux это LF ( \ n ). В моем случае это произошло из-за работы в Windows и загрузки на сервер Unix для выполнения.

0
ответ дан 5 January 2021 в 23:42

Вот расшифровка, показывающая немного больше о природе проблемы, и как ее исправить, начиная с Ubuntu 16.04. Обратите внимание, что хотя file сообщает "динамически связанный", ldd сообщает "не динамический исполняемый файл".

$ ./myprogram
bash: myprogram: No such file or directory

$ file myprogram
myprogram: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped

$ ldd myprogram
    not a dynamic executable

Как только вы установите libc6:i386, все начинает улучшаться...

$ sudo apt-get install libc6:i386 # the initial fix
...

$ ldd myprogram
    linux-gate.so.1 =>  (0xf77fd000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7626000)
    /lib/ld-linux.so.2 (0x56578000)

$ ./myprogram
myprogram: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

Для завершения работы вам может понадобиться определить и установить дополнительные библиотеки по одной...

$ sudo apt-get install libstdc++6:i386 ## may require various additional libs

$ ./myprogram
... works correctly ...

Я не знаю, существует ли систематический способ определения правильных библиотек для установки. Есть небольшая догадка, сопоставляющая сообщения об ошибках с именами пакетов (tab completion help).

5
ответ дан 5 January 2021 в 23:42

Google переместил меня на эту страницу. Моя проблема была отдаленно связана с названием этой ветки, поэтому я публикую ее здесь для будущих посетителей, таких как я:

Это одна из самых странных проблем:

$ ls -lh
ls: cannot access .~dataprep.ipynb: No such file or directory
-????????? ? ?      ?           ?            ? .~dataprep.ipynb
-rw------- 1 tgowda mygroup 475K Jun 12 15:59 dataprep.ipynb

Я вижу, что файл . ~ Dataprep .ipynb тут же с некоторыми странными разрешениями ?? . Я просто хотел избавиться от этого испорченного файла. Команда rm не смогла удалить его. Команда mv не смогла его переместить.

А потом ...

$ python
>>> from pathlib import Path
>>> list(Path('.').glob("*.ipynb"))
[PosixPath('.~dataprep.ipynb'), PosixPath('dataprep.ipynb')]
>>> p = list(Path('.').glob("*.ipynb"))[0]
>>> p
PosixPath('.~dataprep.ipynb')
>>> p.unlink()
>>> list(Path('.').glob("*.ipynb"))
[PosixPath('dataprep.ipynb')]

И вот как я смог победить его.

1
ответ дан 5 January 2021 в 23:42

Как написано в https://askubuntu.com/a/1035037/676490

sudo apt-get install lsb

решил проблему

1
ответ дан 5 January 2021 в 23:42

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

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