LINUX.ORG.RU

No such file or directory

 , ,


0

1
$ ls -l icecat
-rwxr-xr-x 1 user users 199800 May 29 2019 icecat
$ ./icecat
bash: ./icecat: No such file or directory

Это про что?



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

Тупо символ в другой раскладке в имени может быть. Файловые менеджеры его видят? Если перетащить с ФМ в терминал файл и потом интер?

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

Потом интер? У меня нет утилиты file, поэтому не могу показатьчто это бинарник. Как видите, ls его видит. Перетаскивать на другие разделы пробовал — не помогло.

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

Файловый менеджер есть какой нибудь? mc например видит он его?

anonymous
()
Ответ на: комментарий от jhonathan

перетащить имел ввиду с окна фм в окно эмулятора терминала а потом нажать интер в терминале

anonymous
()

Что это за файл? Что пишет:

file ./icecat

Или это был вопрос на смекалку? Типа:

#!/usr/bin/sh
echo "bash: ./icecat: No such file or directory"
# а теперь угадайте как это у меня так получилось!

anonymous
()

Раздел, на котором лежит этот файл, точно смонтирован без noexec?

mord0d ★★★★★
()

Какой-то библиотеки не хватает, с которой этот icecat слинкован. Посмотри, что покажет ldd icecat.

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

Без библиотеки он запустится и тут же упадёт.

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

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

Попробуй переименовать например в 12 и глянь свойства файла в mc

anonymous
()
Ответ на: комментарий от mord0d

Если бы библиотеки не хватало, бинарь высрал бы трейс и упал в сегфолт. Или просто упал бы в сегфолт.

Какой дичайший бред.

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

При статической линковке и отсутствующей библиотеке программа даже не начнёт исполняться.

Не распространяй дезинформацию.

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

Да ну нахрен эти кривые системы. Попросил поставить libstdcxx5, а он сказал что нет какого-то nix-support/libc-ldflags-before.

Ухожу на Dragora.

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

При статической линковке и отсутствующей библиотеке программа даже не начнёт исполняться.

точно статической?

Keltir
()
Ответ на: комментарий от jhonathan

man nix-build. Ну либо задуматься, зачем тебе вообще NixOS. Или же задуматься, зачем тебе ставить протухший софт.

sudopacman ★★★★★
()

Это про попытку запустить на NixOS неопакеченное под NixOS.

t184256 ★★★★★
()

Я таки воспроизвёл

bash: ./icecat: No such file or directory

на ArchLinux )

Удаляем /usr/lib64/ld-linux-x86-64.so.2 (который ссылка на ld-2.33.so) и получаем такое сообщение )

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

точно статической?

А, ну да, май бэд. Я имел в виду связывание в рантайме и во время компиляции, конечно. Работать в пятницу после работы очень вредно.

E ★★★
()

Сторонний бинарник пытаешься запустить? Так нельзя.

quantum-troll ★★★★★
()

Такая ошибка бывает при попытке запустить 32-битный бинарник на 64-битной системе, на которой не установлен 32-битный glibc.

Kron4ek ★★★★★
()

Вообще это позор, что в 2021 году в линуксе выводится настолько обскурное сообщение, когда не удается найти либу, с которой слинкован запускаемый бинарь.

Если он собран для FHS дистра, попробуй steam-run, авось зависимостей стима ему хватит.

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

Я уже арч поставил. Попробовал три свободных дристра — все не захотели загружаться. Наверное у меня слишком проприетарная система.

jhonathan
() автор топика

В NixOS нет динамического линковщика в /usr/lib или /lib (вообще этих директорий нет), а glibc требует явно указывать местоположение ld в ELF. Есть несколько вариантов решения:

  1. Использовать пакет icecat-bin из nixpkgs, возможно подсунув ему твой бинарник, и тогда туда будут вpatchelf-ены правильные пути до ld и библиотек (*);
  2. Самому руками поработать patchelf-ом и прописать нужные пути;
  3. Использовать обертку которая подсунет линковщик и библиотеки, например steam-run;
  4. Запускать в контейнере с обычным линуксовым юзерлендом внутри, и пробрасывать X11/wayland и звук.

(*): использовать примерно так: nix-shell -p 'icecat-bin.overrideAttrs (_: { src = ./my-icecat-tarball.tar.gz; })', это даст тебе шелл в котором должен быть icecat в $PATH.

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