LINUX.ORG.RU

Файла нет, хотя он есть... что это значит?

 


0

1
$ /icarix/bin/leafpad
bash: /icarix/bin/leafpad: Нет такого файла или каталога

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/icarix/bin

$ ls /icarix/bin/leafpad
/icarix/bin/leafpad

$ ls -l /icarix/bin/leafpad
-rwxr-xr-x 1 lab lab 110116 дек 10  2015 /icarix/bin/leafpad

$ file /icarix/bin/leafpad
/icarix/bin/leafpad: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=e605e9afe8bced675c6da5ff5eb217007afe9ef9, stripped

Существует, исполняемый, почему его «нет» ?



Последнее исправление: xaizek (всего исправлений: 3)

У тебя 64-битный дистрибутив? Установи тогда 32-битный glibc, это исправит ошибку.

Kron4ek ★★★★★
()
Ответ на: комментарий от icarus

Неформатированые посты смотрю по диагонали, да.

Artamudo ★★★★
()

библиотек не хватает

anonymous
()

interpreter /lib/ld-linux.so.2

Скорее всего нет этого файла. В коде ошибки (ENOENT видимо) просто не уточняется, к какому именно файлу она относится, ну а баш думает что ошибка может касаться только того файла который ты запускаешь, вот и пишет так. Как уже выше предположили, скорее всего этот файл есть в пакете с 32-битным glibc.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Всё верно, спасибо. Учту что баш может приврать иногда)

icarus
() автор топика
Ответ на: комментарий от icarus

Просто странно что он пишет «нет файла»

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

Так ругается на ld-linux.so обычно. Например, нет 32-битного на 64-битной системе. Или, например, в NixOS так же ругается на неродную ему 64-битную. Давеча игрался с binfmt_misc - там тоже можно получить такое сообщение, если неверно указать интерпретатор.

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

Toxo2 ★★★★
()
15 января 2022 г.
Ответ на: комментарий от Toxo2

/lib/ld-linux.so.2: cannot open `/lib/ld-linux.so.2’ (No such file or directory)

Да, что-то мне его совсем не хватает, к тому же оказывается я на дебиане ) . На рпм бы сам нашёл наверно, а тут что-то всё как-то не так. Подскажите apt-get install … как дальше?

icarus
() автор топика
Ответ на: комментарий от fegipat

Говорит: Следующие НОВЫЕ пакеты будут установлены: libc6-amd64-cross libc6-i386-amd64-cross libc6-i386-cross libc6-i386-x32-cross libc6-x32-cross

и вроде как установил, а файла как не было так и нет $ file /lib/ld-linux.so.2 /lib/ld-linux.so.2: cannot open `/lib/ld-linux.so.2’ (No such file or directory)

icarus
() автор топика
Ответ на: комментарий от icarus

Нужно установить libc6:i386. Если не устанавливается, то нужно перед установкой выполнить от рут:

dpkg --add-architecture i386
apt-get update
Kron4ek ★★★★★
()
Ответ на: комментарий от Kron4ek

Да ) Заработали 32-эльфы

А что это было когда я запустил apt-get install libc6-i386 ?

Интересный этот апт. Если напишешь что-то не то, Yum обыкновенно посылает лесом, а вот апт соглашается, начинает суетиться, очень многословно что-то делать. Только хрен его знает что..

Вот что это было?

apt-get install libc6-i386

Заметьте, выбирается «libc6-i386-ppc64-cross» для регулярного выражения «libc6-i386.» Заметьте, выбирается «libc6-i386-mipsn32-cross» для регулярного выражения «libc6-i386.» Заметьте, выбирается «libc6-i386-x32-cross» для регулярного выражения «libc6-i386.» Заметьте, выбирается «libc6-i386-amd64-dcv1» для регулярного выражения «libc6-i386.»

итд.

icarus
() автор топика
Ответ на: комментарий от icarus

Это ты кросс-компилятор установил, он 64-битный. libc:i386 же – это именно что 32-битная версия библиотеки.

Интересный этот апт.

Вот поэтому Линус на "федоре", а Грег – на "арче".

Korchevatel ★★★★★
()
Последнее исправление: Korchevatel (всего исправлений: 1)

На самом деле создаётся новый процесс bash или чего-то ещё и этот процесс возвращает из exec определённый код (числовой) ошибки, вызвавший процесс интерпретирует этот код как «нет такого файла» Может ошибка в чём-то другом, надо, предположительно, запустить трассировку и посмотреть, какой код ошибки вернёт екзек и самому его интерпретировать, ну это так, мысли вслух

А, понял, это он ругался, что нет файла библиотеки, наверно, а не твоего файла, в любом случае, в трассировке ты бы увидел, какой файл именно нет возможности открыть

IvanR ★★★
()
Последнее исправление: IvanR (всего исправлений: 1)
Ответ на: комментарий от icarus

Трассировка не покажет, какого файла нет, покажет только код возврата, а так, straceэто я от бессонницы написал

IvanR ★★★
()
Последнее исправление: IvanR (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.