File or directory does not exist как исправить

Каждый пользователь, рано или поздно сталкивается с определенными проблемами в своей операционной системе Linux. Это может быть просто неправильное использование команд или их непонимание, так и такие серьезные ошибки Linux, как отсутствие драйверов, неработоспособность сервисов зависание системы и так далее.

Эта статья ориентирована в первую очередь на новичков, которые не знают, что делать когда их будут поджидать проблемы linux, мы дадим общую концепцию и попытаемся показать в какую сторону двигаться дальше. Мы рассмотрим исправление ошибок в linux как простых, так и более сложных. Но давайте сначала определим, какие проблемы linux будем рассматривать, разобьем их на категории:

  • Проблемы с командами в терминале
  • Проблемы с программами
  • Проблемы с драйверами и ядром
  • Проблемы с графической оболочкой
  • Проблемы с диском и файловой системой

Все это мы рассмотрим ниже, но сначала общее введение и немного теории.

Linux очень сильно отличается от WIndows, это заметно также при возникновении проблем Linux. Вот допустим, произошла ошибка в программе Windows, она полностью закрывается или выдает непонятное число с кодом ошибки и все, вы можете только догадываться или использовать поиск Google, чтобы понять что произошло. Но в Linux все совсем по-другому. Здесь каждая программа создает лог файлы, в которых мы можем при достаточном знании английского или даже без него, выяснить, что произошло. Более того, если программу запускать из терминала, то все ошибки linux и предупреждения мы увидим прямо в окне терминала. и сразу можно понять что нужно делать.

Причем вы сможете понять что произошло, даже не зная английского. Главным признаком ошибки есть слово ERROR (ошибка) или WARNING (предупреждение). Рассмотрим самые частые сообщения об ошибках:

  • Permission Denied – нет доступа, означает что у программы нет полномочий доступа к определенному файлу или ресурсу.
  • File or Directory does not exist – файл или каталог не существует
  • No such file or Directory – нет такого файла или каталога
  • Not Found – Не найдено, файл или ресурс не обнаружен
  • Connection Refused – соединение сброшено, значит, что сервис к которому мы должны подключиться не запущен
  • is empty – означает, что папка или нужный файл пуст
  • Syntax Error – ошибка синтаксиса, обычно значит, что в конфигурационном файле или введенной команде допущена ошибка.
  • Fail to load – ошибка загрузки, означает что система не может загрузить определенный ресурс, модуль или библиотеку (fail to load library) обычно также система сообщает почему она не может загрузить, permission denied или no such file и т д.

Сообщения об ошибках, кроме терминала, мы можем найти в различных лог файлах, все они находятся в папке /var/log, мы рассматривали за какие программы отвечают определенные файлы в статье просмотр логов linux. Теперь же мы подробнее рассмотрим где и что искать если linux выдает ошибку.

Проблемы с командами в терминале

Обычно проблемы с командами в терминале возникают не из-за ошибки linux или потому, что разработчики что-то недоработали, а потому, что вы ввели что-то неправильно или предали не те что нужно опции.

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

Также довольно частой ошибкой при выполнении команд есть неиспользование команды sudo перед самой командой для предоставления ей прав суперпользователя. В таких случаях вы обычно получаете ошибку Permission Denied или просто уведомление, что не удалось открыть тот или иной файл или ресурс: can not open …, can not read … и так далее.

Если файла, которого вы передали в параметрах не существует, то вам будет об этом сказано соответствующим сообщением. Сообщения могут быть и более специфичные, в зависимости от ошибки, но в конце концов, вы можете воспользоваться переводчиком Google, чтобы понять смысл того, что хочет система.

Очень распространенной среди новичков ошибкой, есть no such file or directory при попытке выполнить файл, скачанный из интернета. Сразу кажется что это бред, ведь файл существует, но на самом деле оболочка ищет только файлы с флагом исполняемый, а поэтому пока вы не установите этот флаг для файла, он для оболочки существовать не будет.

Проблемы в программах

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

В терминале программа, скорее всего, покажет почему она не работает. Также у многих программ поддерживается опция -v или –verbose. Вы можете попробовать использовать эту опцию, если первый запуск в терминале ничего не дал. Далее, когда уже есть сообщение об ошибке, вы можете попытаться исправить его сами, если поняли в чем дело или попытаться найти решение на формуме, скорее всего, другие пользователи уже решили вашу проблему. Но если нет, вы можете создать новую тему и описать там свою ошибку. Но без вывода программы в терминале вам вряд ли помогут.

Многие ошибки системы linux, связанные с графической оболочкой вы можете найти в файле ~/.xsession-errors в вашей домашней директории. Если оболочка работает медленно, зависает или не работают другие программы, но в других логах причин этому нет, возможно, ответ находится именно в этом файле.

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

$ sudo systemctl status имя_сервиса

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

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

Проблемы с драйверами и ядром

Проблемы с драйверами, модулями ядра или прошивками могут вызвать много неприятностей во время загрузки системы. Это может быть просто медленная загрузка системы, неработоспособность определенных устройств  неправильная работа видео или полная невозможность запустить графическую подсистему. Исправление ошибок Linux начинается с просмотра логов.

Вы можете посмотреть все сообщения ядра с момента начала загрузки, выполнив команду чтобы узнать какую linux выдает ошибку:

sudo dmesg

Чтобы иметь возможность удобно листать вывод можно выполнить:

sudo dmesg | less

Или сразу выбрать все ошибки:

sudo dmesg | grep error

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

Проблемы с графической оболочкой

Когда проблемы linux касаются графической оболочки, то решить их новичкам не так уж просто. Больше всего потому что доступен только терминал. Графическая оболочка может просто зависнуть или вовсе не запускаться, например, после обновления.

При проблемах с графической оболочкой вы можете всегда переключиться в режим терминала с помощью сочетания клавиш Ctrl+Alt+F1. Далее, вам нужно ввести логин и пароль, затем можете вводить команды терминала.

Посмотреть логи графической оболочки вы можете в том же файле ~/.xsession-erros.

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

Проблемы с диском и файловой системой

Самая частая проблема с диском у новичков – это переполнение диска. Если под диск выделить очень мало места, то он переполнится и система не сможет создавать даже временные файлы, а это приведет к тому что все если не зависнет, то, по крайней мере, не сможет нормально работать.

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

Выводы

Теперь исправление ошибок Linux будет для вас немного проще. Ошибки системы linux довольно сложная тема и этой информации явно мало, если у вас остались вопросы или есть предложения по улучшению статьи пишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Listen to this article

Каждый пользователь, рано или поздно сталкивается с определенными проблемами в своей операционной системе Linux. Это может быть просто неправильное использование команд или их непонимание, так и такие серьезные ошибки Linux, как отсутствие драйверов, неработоспособность сервисов зависание системы и так далее. Linux очень сильно отличается от WIndows, это заметно также при возникновении проблем Linux. Вот допустим, произошла ошибка в программе Windows, она полностью закрывается или выдает непонятное число с кодом ошибки и все, вы можете только догадываться или использовать поиск Google, чтобы понять что произошло. Но в Linux все совсем по-другому.

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

Причем вы сможете понять что произошло, даже не зная английского. Главным признаком ошибки есть слово ERROR (ошибка) или WARNING (предупреждение). Рассмотрим самые частые сообщения об ошибках:

  • Permission Denied — нет доступа, означает что у программы нет полномочий доступа к определенному файлу или ресурсу.
  • File or Directory does not exist — файл или каталог не существует
  • No such file or Directory — нет такого файла или каталога
  • Not Found — Не найдено, файл или ресурс не обнаружен
  • Connection Refused — соединение сброшено, значит, что сервис к которому мы должны подключиться не запущен
  • is empty — означает, что папка или нужный файл пуст
  • Syntax Error — ошибка синтаксиса, обычно значит, что в конфигурационном файле или введенной команде допущена ошибка.
  • Fail to load — ошибка загрузки, означает что система не может загрузить определенный ресурс, модуль или библиотеку (fail to load library) обычно также система сообщает почему она не может загрузить, permission denied или no such file и т д.

Сообщения об ошибках, кроме терминала, мы можем найти в различных лог файлах, все они находятся в папке /var/log, мы рассматривали за какие программы отвечают определенные файлы в статье просмотр логов linux. Теперь же мы подробнее рассмотрим где и что искать если linux выдает ошибку.


Монтирование NTFS раздела от Windows 10 в Linux

Ошибка:

Windows is hibernated, refused to mount.
Failed to mount ‘/dev/sda2’: Операция не позволена
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully (no hibernation or fast restarting), or mount the volume
read-only with the ‘ro’ mount option.

Решение:

sudo mount -t ntfs-3g -o remove_hiberfile /dev/sda2 /mnt

Ошибка:

The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Failed to mount ‘/dev/sdb5’: Operation not permitted
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully (no hibernation or fast restarting), or mount the volume
read-only with the ‘ro’ mount option.

Решение:

sudo ntfsfix /dev/sda3

Отключение режима гибернации в винде

powercfg /h off


Нет места, но место есть.

Проблема: ПО пишет, что закончилось место на диске, при этом df -h показывает, что место все-таки есть.

Решение: Надо проверить свободный айноды. df -hTi. Возможно их забили мелкие файлы.


Команда смены владельца и группы владельцев для директории и всех поддиректорий с файлами

sudo chown -R user:group /home/user/dir/


FTP сервер на Ubuntu server

Установить
sudo apt-get install vsftpd

Добавить нового пользователя, если надо
sudo adduser ftpuser
sudo adduser ftpuser ftp —disabled-login

Правим конфигурацию
sudo nano /etc/vsftpd.conf

Если надо анонимный доступ
anonymous_enable=Yes

чтение и правка файлов
local_enable=YES
write_enable=YES

Ограничить домашним каталогом. Создаем список пользователй
sudo nano /etc/vsftpd.chroot_list

пишем туда юзеров по одному на строчку
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

папка входа по умоланию
local_root=/var/www

Права на файлы
#002 — 775; 022 — 755
local_umask=002

рестарт
sudo service vsftpd restart

Если права на файлы раздаются не верно~
nano /home/ftpuser/.profile

Раскомментируем строчку
umask 002


Расширить диск виртуальной машины KVM и VirtualBox

на хост-машине

1)KVM
sudo qemu-img resize /home/vm/disk.img +10G

2)VirtualBox
«C:Program FilesOracleVirtualBoxVBoxManage.exe» modifyhd D:vboxxubuntu.vdi —resize 25000

на вируалке
sudo apt-get install gparted
sudo swapoff /dev/vda5
sudo -X gparted


авторизация SSH без пароля

на своей машине
ssh-keygen -t rsa

в папке /home/имя пользователя/.ssh/id_rsa и id_rsa.pub появятся ключи
копируем на сервер

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]_host

на сервере
chmod 600 ~/.ssh/authorized_keys


Firefox средняя кнопка мыши не работает как прокрутка

Решение: Правка — > Настройка — > Дополнительные — > Общие — > Использовать автоматическую прокрутку


Проброс портов iptables

Обозначения

$EXT_R_IP — внешний IP роутера
$LOCAL_IP — внутренний «фэйковый» адрес машины, которую надо «выкидывать» наружу
$PORT1 — Порт, на который будут заходить извне и попадать на локальную машину
$PORT2 — Порт, который «выбрасывается» наружу(например, 80 — http, либо 21 — ftp)

На роутере говорим следующие команды(от рута)
iptables -t nat -A PREROUTING -i eth0 -p tcp -d $EXT_R_IP —dport $PORT1 -j DNAT —to-destination $LOCAL_IP:$PORT2
iptables -A FORWARD -i eth0 -d $LOCAL_IP -p tcp —dport $PORT2 -j ACCEPT


Примонтировать флешку Ubuntu Linux

service srv1cv83 stop
sudo dpkg -l | more | grep 1c
sudo dpkg -r 1c-enterprise83-ws
sudo dpkg -r 1c-enterprise83-server
sudo dpkg -r 1c-enterprise83-common

dpkg -i 1c-enterprise83-common_8.3.6-2390_amd64.deb
dpkg -i 1c-enterprise83-server_8.3.6-2390_amd64.deb
dpkg -i 1c-enterprise83-ws_8.3.6-2390_amd64.deb

sudo reboot


Google Chrome не предлагает сохранить пароли

Если Google Chrome не предлагает сохранить пароли и не использует автозаполнение, то причина может быть в том, что эти опции отключены в настройках. Для их включения перейдите во вкладку chrome://settings/, либо в меню выберите пункт «Настройки»:

На открывшейся странице в разделе «Автозаполнение» выберите пункт «Пароли»:

В открывшемся окне включите две опции:

  • Предлагать сохранение паролей
  • Автоматический вход (Автоматически входить на сайты с помощью сохраненного имени пользователя и пароля. Когда функция отключена, эти данные нужно вводить при каждом входе)

После этого автоматический вход и сохранение пароли должны начать работать.


Google Chrome не сохраняет пароли, хотя предлагает их сохранить

Эта ситуация более нестандартная, она может встречаться на различных операционных системах: в моём случае это Chromium на Linux, но сообщали также об аналогичной проблеме для Google Chrome на MacOS.

Признаки:

  1. После входа на веб-сайт, браузер, как обычно, предлагает сохранить пароль
  2. Я нажимаю на кнопку «Сохранить»
  3. Chrome не показывает никакие ошибки
  4. Но пароль не сохраняется: а) он не вводится автоматически при следующем заходе на сайт; б) пароль не отображается во вкладке chrome://settings/passwords

Решение следующиее:

1. Выйдите из Chrome

2. Перейдите в директорию, где Chrome хранит данные пользователя — внутри домашней папки, в директории, зависящей от операционной системы:

  • MacOS: ~/Library/Application Support/Google/Chrome
  • Linux (Chrome): ~/.config/google-chrome
  • Linux (Chromium): ~/.config/chromium
  • Windows: %UserProfile%AppDataLocalGoogleChromeUser Data

3. От туда перейдите в директорию с именем Default, если вы хотите исправить ваш главный профиль, или в Profile 1 или Profile 2 и т. д. Если вы хотите починить один из дополнительных профилей.

4. Удалите файлы Login DataLogin Data-journal и Login Data 2-journal.

5. Повторите для других профилей, если необходимо.

После этого у меняв вновь включилось сохранение паролей.

Обратите внимание, что если у вас включена автоматическая синхронизация, то вы не потеряете сохранённые ранее пароли.


1. Удаление временных файлов

Файлы в папке /tmp/ будут удалены в любом случае при следующей перезагрузки системы. То есть с одной стороны их можно удалить достаточно безболезненно:

НО: может быть нарушена работа программ, которые запущены в настоящее время и которые сохранили какие-то данные в папку /tmp/.

2. Удаление файлов кэширования

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

Для удаления кэша шрифтов:

1

sudo rm -rf /var/cache/fontconfig/

Для удаления кэша установочных пакетов (на Debian, Linux Mint, Ubuntu, Kali Linux и их производных):

1

sudo rm -rf /var/cache/apt/

Для удаления кэша установочных пакетов (на Arch Linux, BlackArch и их производных):

1

sudo rm -rf /var/cache/pacman/

Удаление кэша справочных страниц:

1

sudo rm -rf /var/cache/man/

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

3. Удаление логов (журналов)

В этой папке (/var/log/) можно удалить практически все файлы, но старайтесь сохранить структуру папок, поскольку некоторые приложения после удаления здесь папки не в состоянии создать её второй раз…

На веб-серверах могут разрастись слишком сильно журналы веб-сервера.

Для удаления логов Apache на Debian, Linux Mint, Ubuntu, Kali Linux и их производных:

1

sudo rm -rf /var/log/apache2/*

Для удаления логов Apache на Arch Linux, BlackArch и их производных:

1

sudo rm -rf /var/log/httpd/*

Чтобы сервер начал создавать новые файлы журналов и записывать в них, нужно перезапустить службу веб-сервера.

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

4. Очистите корзину

Этот совет больше для настольных систем. Файлы, которые вы удалили в графическом интерфейсе рабочего стола, попадают в папку ~/.local/share/Trash/files/, вы можете проанализировать их и при желании удалить (второй раз):

1

ncdu ~/.local/share/Trash/files/

5. Удаление ненужных файлов исходного кода заголовков ядра

Следующее актуально только для Debian, Linux Mint, Ubuntu, Kali Linux и их производных. Проверьте папку /usr/src/, там будут подпапки вида linux-headers- — большинство из них можно удалить — оставьте только ту, номер которой соответствует текущему ядру системы — обычно это самый последний номер выпуска.

6. Удаление осиротевших пакетов

На Debian, Linux Mint, Ubuntu, Kali Linux и их производных удалить ненужные пакеты можно следующим образом:

7. Очистка журналов systemd

Со временем, в некоторых системах логи системы начинают занимать гигабайты на жёстком диске. Просмотреть журналы и освободить место вы можете с помощью команды journalctl

Чтобы увидеть, сколько место занимают журналы, выполните:

Чтобы удалить все записи, оставив только записей на 100 мегабайт, выполните:

1

journalctl --vacuum-size=100M

Либо для удаления всех записей в системном журнале, старше одной недели:

1

journalctl --vacuum-time=1weeks

8. Проанализируйте файлы Docker

Не удаляйте безумно файлы Docker. Я привожу пример этой директории только по той причине, что она привлекла моё внимание из-за просто фантасмагоричного размера — и это при том, что я Docker’ом фактически не пользуюсь — буквально несколько раз попробовал, чтобы увидеть, что это такое.

Самой большой папкой является /var/lib/docker/overlay2/. Для анализа занимаемого места на диске выполните:

1

sudo ncdu /var/lib/docker/


Как исправить «No route to host» SSH в Linux

Если сервер работает на RHEL/CentOS/Fedora, то нужно использовать команду firewall-cmd, чтобы открыть 22 порт (или другой порт, который вы настроили для использования с SSH):

1

2

firewall-cmd --permanent --add-port=22/tcp

firewall-cmd --reload

Если сервер работает на Debian/Ubuntu, то нужно использовать команду UFW, чтобы открыть 22 порт (или другой порт, который вы настроили для использования с SSH) следующим образом:

1

2

sudo ufw allow 22/tcp

sudo ufw reload

Теперь попробуйте вновь подключиться к удалённому серверу по SSH:

Проблема должна исчезнуть.


Ошибки «E: Не удалось получить доступ к файлу блокировки /var/lib/apt/lists/lock — open (11: Resource temporarily unavailable)» и «E: Невозможно заблокировать каталог /var/lib/apt/lists/»

возникает примерно следующая ошибка:

1

2

3

4

5

sudo apt update && sudo apt dist-upgrade -y

[sudo] password for mial:

Чтение списков пакетов… Готово

E: Не удалось получить доступ к файлу блокировки /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)

E: Невозможно заблокировать каталог /var/lib/apt/lists/

Если в этой ситуации удалить файлы-блокировщики (/var/lib/apt/lists/lock), как это иногда советуют, то в результате фоновый процесс apt преждевременно завершит свою работу, либо вы запустите второй экземпляр apt – оба эти варианта приведут к проблемам с пакетами, и, вероятнее всего, при последующей попытке использовать apt система предложит вам запустить программу с ключом —f:

Правильный способ исправить ошибку

Чтобы увидеть, какие службы apt присутствуют в системе, выполните команду:

1

systemctl list-unit-files | grep apt

Следующая команда выведет только список служб apt, которые добавлены в автоматическую загрузку:

1

systemctl list-unit-files | grep enabled | grep apt

Службы apt-daily-upgrade.timer и apt-daily.timer, чтобы отключить их автоматический запуск при старте системы, выполните команды:

1

2

sudo systemctl disable apt-daily-upgrade.timer

sudo systemctl disable apt-daily.timer


Как обновить Linux в командной строке

С одной стороны, отключение автоматических обновлений и скачивание новых файлов пакетов навсегда избавит вас от ошибки «E: Невозможно заблокировать каталог /var/lib/apt/lists/» и других подобных, но при этом вам нужно будет самостоятельно выполнять обновление и очистку пакетов.

Для полного обновления системы выполняйте:

1

sudo apt update && sudo apt full-upgrade -y

А для очистки пакетов используются команды:

1

2

sudo apt autoremove -y

sudo apt clean -y


Не работает буфер обмена с гостевой ОС Linux

В этом случае как суперпользователь выполните команды:

1

2

killall VBoxClient

VBoxClient-all

Если это не помогло, а особенно если у вас возникает ошибка:

1

/usr/bin/VBoxClient-all: 26: /usr/bin/VBoxClient-all: notify-send:<span id="more-419"></span> not found

тогда установите пакет:

1

sudo apt-get install virtualbox-guest-x11

а затем запустите клиент VirtualBox

Бывают ситуации, что буфер обмена с гостевой ОС работал, но в какой-то момент перестал. Это может происходить, например, после обновления ядра. В этой ситуации также поможет установка пакета virtualbox-guest-x11 и запуск службы VBoxClient-all.

Источник: https://losst.ru/ и https://7d3.ru/ и https://zalinux.ru/


Если Вам понравилась статья — поделитесь с друзьями

2 617 просмотров

Отказ от ответственности: Автор или издатель не публиковали эту статью для вредоносных целей. Вся размещенная информация была взята из открытых источников и представлена исключительно в ознакомительных целях а также не несет призыва к действию. Создано лишь в образовательных и развлекательных целях. Вся информация направлена на то, чтобы уберечь читателей от противозаконных действий. Все причиненные возможные убытки посетитель берет на себя. Автор проделывает все действия лишь на собственном оборудовании и в собственной сети. Не повторяйте ничего из прочитанного в реальной жизни. | Так же, если вы являетесь правообладателем размещенного на страницах портала материала, просьба написать нам через контактную форму жалобу на удаление определенной страницы, а также ознакомиться с инструкцией для правообладателей материалов. Спасибо за понимание.

Если вам понравились материалы сайта, вы можете поддержать проект финансово, переведя некоторую сумму с банковской карты, счёта мобильного телефона или из кошелька ЮMoney.

49912:1163776537

Наверняка библиотеки какому-то бинарнику не хватает. Воспользуйтесь ldd, чтобы узнать, какому.

Если ты говоришь, что это скрипт, то сделай:

Там должно быть что-то вроде:

И вот этого «/usr/bin/shell» он, видимо, найти не может.

И вот этого «/usr/bin/shell» он, видимо, найти не может.

самый распространённый случай: виндовый перевод стоки (lfcr) в конце этой первой строки.

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

27654: 644875474

При обновлении Дебиана меняются пути к интерпретаторам? Если только ТС что-то своё устанавливал.

p

Тебя по фотографии не лечили никогда?

Может скрипт запускается, в процессе пытается запустить что-то не существующее и на этом завершает работу.

Всем спасибо, особенно xsectorx, за мысль о «file». До меня доперло лишь сейчас, что мой скрипт работает, а сам бинарник собран под старое ядро. Хотя ошибка «файл не существует» несколько не на те мысли наводит. Придется скачать/собрать новый ADB.

Уберите пробелы в названиях папок и файлов.

111506:869939704

сам бинарник собран под старое ядро. Хотя ошибка «файл не существует» несколько не на те мысли наводит.

ну а что ей писать, если нет нужного файла?

111506:869939704

Уберите пробелы в названиях папок и файлов.

Источник

Содержание

  1. «No such file or directory» error when executing a binary
  2. 8 Answers 8
  3. Not the answer you’re looking for? Browse other questions tagged linux or ask your own question.
  4. Linked
  5. Related
  6. Hot Network Questions
  7. Subscribe to RSS
  8. Try to run the following command
  9. Исправление ошибок Linux
  10. Решение проблем Linux
  11. Проблемы с командами в терминале
  12. Проблемы в программах
  13. Проблемы с драйверами и ядром
  14. Проблемы с графической оболочкой
  15. Проблемы с диском и файловой системой
  16. Выводы
  17. No such file or directory при выполнении элементарного скрипта
  18. 1 ответ 1
  19. Всё ещё ищете ответ? Посмотрите другие вопросы с метками ubuntu bash или задайте свой вопрос.
  20. Связанные
  21. Похожие
  22. Подписаться на ленту

«No such file or directory» error when executing a binary

I was installing a binary Linux application on Ubuntu 9.10 x86_64. The app shipped with an old version of gzip (1.2.4), that was compiled for a much older kernel:

I wasn’t able to execute this program. If I tried, this happened:

ldd was similarly unhappy with this binary:

I’m curious: What’s the most likely source of this problem? A corrupted file? Or a binary incompatibility due to being built for a much older ?

8 Answers 8

I was missing the /lib/ld-linux.so.2 file, which is needed to run 32-bit apps. The Ubuntu package that has this file is libc6-i386.

Old question, but hopefully this’ll help someone else.

In my case I was using a toolchain on Ubuntu 12.04 that was built on Ubuntu 10.04 (requires GCC 4.1 to build). As most of the libraries have moved to multiarch dirs, it couldn’t find ld.so. So, make a symlink for it.

Check required path:

If you’re on 32bit, it’ll be i386-linux-gnu and not x86_64-linux-gnu.

You get this error when you try to run a 32-bit build on your 64-bit Linux.

Also contrast what file had to say on the binary you tried (ie: 32-bit) with what you get for your /bin/gzip :

which is what I get on Ubuntu 9.10 for amd64 aka x86_64.

Edit: Your expanded post shows that as the readelf output also reflects a 32-bit build.

I think you’re x86-64 install does not have the i386 runtime linker. The ENOENT is probably due to the OS looking for something like /lib/ld.so.1 or similar. This is typically part of the 32-bit glibc runtime, and while I’m not directly familiar with Ubuntu, I would assume they have some sort of 32-bit compatibility package to install. Fortunately gzip only depends on the C library, so that’s probably all you’ll need to install.

0j3I9

I also had problems because my program interpreter was /lib/ld-linux.so.2 however it was on an embedded device, so I solved the problem by asking gcc to use ls-uClibc instead as follows:

Well another possible cause of this can be simple line break at end of each line and shebang line If you have been coding in windows IDE its possible that windows has added its own line break at the end of each line and when you try to run it on linux the line break cause problems

Not the answer you’re looking for? Browse other questions tagged linux or ask your own question.

Linked

Hot Network Questions

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.10.29.40598

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Здравствуйте, уважаемые. Скачал btsync (у меня arm, по ссылке Linux ARM тут), положил в /usr/bin и не могу запустить:

Как так и что с этим делать?

P.S. Тоже самое происходит, если переместить исполняемый файл, например, в домашний каталог.

P.S.S. Debian Jessie, вот такая железка.

99493: 213807979

chmod +x точно не поможет?

99493: 213807979

35131:302565968

apparmor, selinux, noexec?

69351: 600545653

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

12963: 629122306

p

105962:959150243

В общем, похоже-таки несовместимость архитектур. Придётся пересобирать из исходников. Источник: http://otvety.google.ru/otvety/thread?tid=1e74bf1617bdb4b6

p

55099:150010057

p

Try to run the following command

I had the same issue on Cubieboard.

Try to run the following command:

p

На Debian 7.6.0 (Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux) столкнулся с той же проблемой. Для запуска 32-битного приложения может потребоваться пакет ia32-libs-i386. Дебиан по умолчанию не дает его установить из-за зависимостей. Решается таким образом:

Источник

Исправление ошибок Linux

Каждый пользователь, рано или поздно сталкивается с определенными проблемами в своей операционной системе Linux. Это может быть просто неправильное использование команд или их непонимание, так и такие серьезные ошибки Linux, как отсутствие драйверов, неработоспособность сервисов зависание системы и так далее.

Эта статья ориентирована в первую очередь на новичков, которые не знают, что делать когда их будут поджидать проблемы linux, мы дадим общую концепцию и попытаемся показать в какую сторону двигаться дальше. Мы рассмотрим исправление ошибок в linux как простых, так и более сложных. Но давайте сначала определим, какие проблемы linux будем рассматривать, разобьем их на категории:

Все это мы рассмотрим ниже, но сначала общее введение и немного теории.

Решение проблем Linux

Linux очень сильно отличается от WIndows, это заметно также при возникновении проблем Linux. Вот допустим, произошла ошибка в программе Windows, она полностью закрывается или выдает непонятное число с кодом ошибки и все, вы можете только догадываться или использовать поиск Google, чтобы понять что произошло. Но в Linux все совсем по-другому. Здесь каждая программа создает лог файлы, в которых мы можем при достаточном знании английского или даже без него, выяснить, что произошло. Более того, если программу запускать из терминала, то все ошибки linux и предупреждения мы увидим прямо в окне терминала. и сразу можно понять что нужно делать.

Причем вы сможете понять что произошло, даже не зная английского. Главным признаком ошибки есть слово ERROR (ошибка) или WARNING (предупреждение). Рассмотрим самые частые сообщения об ошибках:

Сообщения об ошибках, кроме терминала, мы можем найти в различных лог файлах, все они находятся в папке /var/log, мы рассматривали за какие программы отвечают определенные файлы в статье просмотр логов linux. Теперь же мы подробнее рассмотрим где и что искать если linux выдает ошибку.

Проблемы с командами в терминале

Обычно проблемы с командами в терминале возникают не из-за ошибки linux или потому, что разработчики что-то недоработали, а потому, что вы ввели что-то неправильно или предали не те что нужно опции.

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

Если файла, которого вы передали в параметрах не существует, то вам будет об этом сказано соответствующим сообщением. Сообщения могут быть и более специфичные, в зависимости от ошибки, но в конце концов, вы можете воспользоваться переводчиком Google, чтобы понять смысл того, что хочет система.

Очень распространенной среди новичков ошибкой, есть no such file or directory при попытке выполнить файл, скачанный из интернета. Сразу кажется что это бред, ведь файл существует, но на самом деле оболочка ищет только файлы с флагом исполняемый, а поэтому пока вы не установите этот флаг для файла, он для оболочки существовать не будет.

Проблемы в программах

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

Многие ошибки системы linux, связанные с графической оболочкой вы можете найти в файле

/.xsession-errors в вашей домашней директории. Если оболочка работает медленно, зависает или не работают другие программы, но в других логах причин этому нет, возможно, ответ находится именно в этом файле.

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

$ sudo systemctl status имя_сервиса

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

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

Проблемы с драйверами и ядром

Проблемы с драйверами, модулями ядра или прошивками могут вызвать много неприятностей во время загрузки системы. Это может быть просто медленная загрузка системы, неработоспособность определенных устройств неправильная работа видео или полная невозможность запустить графическую подсистему. Исправление ошибок Linux начинается с просмотра логов.

Вы можете посмотреть все сообщения ядра с момента начала загрузки, выполнив команду чтобы узнать какую linux выдает ошибку:

Чтобы иметь возможность удобно листать вывод можно выполнить:

Или сразу выбрать все ошибки:

sudo dmesg | grep error

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

Проблемы с графической оболочкой

Когда проблемы linux касаются графической оболочки, то решить их новичкам не так уж просто. Больше всего потому что доступен только терминал. Графическая оболочка может просто зависнуть или вовсе не запускаться, например, после обновления.

При проблемах с графической оболочкой вы можете всегда переключиться в режим терминала с помощью сочетания клавиш Ctrl+Alt+F1. Далее, вам нужно ввести логин и пароль, затем можете вводить команды терминала.

Посмотреть логи графической оболочки вы можете в том же файле

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

Проблемы с диском и файловой системой

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

Выводы

Теперь исправление ошибок Linux будет для вас немного проще. Ошибки системы linux довольно сложная тема и этой информации явно мало, если у вас остались вопросы или есть предложения по улучшению статьи пишите в комментариях!

Источник

под root выполняю скрипт fs.sh, находящийся в /var/

Помогите разобраться, почему скриптом не могу попасть в каталог, а если в консоли набрать cd / то прекрасно перехожу.

photo

1 ответ 1

содержимое вашего скрипта:

видно, что строки оканчиваются двумя символами: rn (cr+lf).

а должны заканчиваться одним символом r (cr).

преобразовать файл можно, например, с помощью программы dos2unix (в популярных дистрибутивах операционной системы gnu/linux обычно входит в одноимённый пакет):

photo

Всё ещё ищете ответ? Посмотрите другие вопросы с метками ubuntu bash или задайте свой вопрос.

Связанные

Похожие

Подписаться на ленту

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

дизайн сайта / логотип © 2022 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2022.10.29.40598

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

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

No such file or directory
Вероятно, вы пытались получить доступ к несуществующему файлу. Поскольку ввод/вывод в системе Unix не делает различий между файлами и каталогами, это сообщение об ошибке появляется везде. Вы получите его, если попытаетесь выполнить чтение несуществующего файла, или решите перейти в отсутствующий каталог, или попробуете записать файл в несуществующий каталог и так далее.

File exists
В данном случае вы, возможно, пытались создать файл, который уже существует. Это часто бывает, когда вы создаете каталог, имя которого уже занято каким-либо файлом.

Not a directory, Is a directory
Эти сообщения возникают, когда вы пытаетесь использовать файл в качестве каталога или каталог в качестве файла. Например, так:

$ touch a
$ touch a/b
touch: a/b: Not a directory

Обратите внимание на то, что сообщение об ошибке относится только к части a пути a/b. Когда вы столкнетесь с такой проблемой, вам потребуется время, чтобы отыскать компонент пути, с которым обращаются как с каталогом.

No space left on device
На вашем жестком диске закончилось свободное пространство.

Permission denied
Эта ошибка возникает, когда вы пытаетесь выполнить чтение или запись, указав файл или каталог, к которым вам не разрешен доступ (вы обладаете недостаточными правами). Эта ошибка говорит также о том, что вы пытаетесь запустить файл,для которого не установлен бит выполнения (даже если вы можете читать этот файл). Из раздела 2.17 вы больше узнаете о правах доступа.

Operation not permitted
Обычно такая ошибка возникает, когда вы пытаетесь завершить процесс, владельцем которого не являетесь.

Segmentation fault, Bus error
Суть ошибки сегментации состоит в том, что разработчик программы, которую вы только что запустили, где-то ошибся. Программа пыталась получить доступ к области памяти, к которой ей не разрешено обращаться, в результате операционная система завершила работу программы. Подобно ей, ошибка шины означает, что программа пыталась получить доступ к памяти не должным образом. Если вы получаете одну из этих ошибок, то, вероятно, вы передали на ввод программы какие-либо неожиданные для нее данные.

Каждый пользователь, рано или поздно сталкивается с определенными проблемами в своей операционной системе Linux. Это может быть просто неправильное использование команд или их непонимание, так и такие серьезные ошибки Linux, как отсутствие драйверов, неработоспособность сервисов зависание системы и так далее.

Эта статья ориентирована в первую очередь на новичков, которые не знают, что делать когда их будут поджидать проблемы linux, мы дадим общую концепцию и попытаемся показать в какую сторону двигаться дальше. Мы рассмотрим исправление ошибок в linux как простых, так и более сложных. Но давайте сначала определим, какие проблемы linux будем рассматривать, разобьем их на категории:

  • Проблемы с командами в терминале
  • Проблемы с программами
  • Проблемы с драйверами и ядром
  • Проблемы с графической оболочкой
  • Проблемы с диском и файловой системой

Все это мы рассмотрим ниже, но сначала общее введение и немного теории.

Linux очень сильно отличается от WIndows, это заметно также при возникновении проблем Linux. Вот допустим, произошла ошибка в программе Windows, она полностью закрывается или выдает непонятное число с кодом ошибки и все, вы можете только догадываться или использовать поиск Google, чтобы понять что произошло. Но в Linux все совсем по-другому. Здесь каждая программа создает лог файлы, в которых мы можем при достаточном знании английского или даже без него, выяснить, что произошло. Более того, если программу запускать из терминала, то все ошибки linux и предупреждения мы увидим прямо в окне терминала. и сразу можно понять что нужно делать.

Причем вы сможете понять что произошло, даже не зная английского. Главным признаком ошибки есть слово ERROR (ошибка) или WARNING (предупреждение). Рассмотрим самые частые сообщения об ошибках:

  • Permission Denied — нет доступа, означает что у программы нет полномочий доступа к определенному файлу или ресурсу.
  • File or Directory does not exist — файл или каталог не существует
  • No such file or Directory — нет такого файла или каталога
  • Not Found — Не найдено, файл или ресурс не обнаружен
  • Connection Refused — соединение сброшено, значит, что сервис к которому мы должны подключиться не запущен
  • is empty — означает, что папка или нужный файл пуст
  • Syntax Error — ошибка синтаксиса, обычно значит, что в конфигурационном файле или введенной команде допущена ошибка.
  • Fail to load — ошибка загрузки, означает что система не может загрузить определенный ресурс, модуль или библиотеку (fail to load library) обычно также система сообщает почему она не может загрузить, permission denied или no such file и т д.

Сообщения об ошибках, кроме терминала, мы можем найти в различных лог файлах, все они находятся в папке /var/log, мы рассматривали за какие программы отвечают определенные файлы в статье просмотр логов linux. Теперь же мы подробнее рассмотрим где и что искать если linux выдает ошибку.

Проблемы с командами в терминале

Обычно проблемы с командами в терминале возникают не из-за ошибки linux или потому, что разработчики что-то недоработали, а потому, что вы ввели что-то неправильно или предали не те что нужно опции.

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

Также довольно частой ошибкой при выполнении команд есть неиспользование команды sudo перед самой командой для предоставления ей прав суперпользователя. В таких случаях вы обычно получаете ошибку Permission Denied или просто уведомление, что не удалось открыть тот или иной файл или ресурс: can not open …, can not read … и так далее.

Если файла, которого вы передали в параметрах не существует, то вам будет об этом сказано соответствующим сообщением. Сообщения могут быть и более специфичные, в зависимости от ошибки, но в конце концов, вы можете воспользоваться переводчиком Google, чтобы понять смысл того, что хочет система.

Очень распространенной среди новичков ошибкой, есть no such file or directory при попытке выполнить файл, скачанный из интернета. Сразу кажется что это бред, ведь файл существует, но на самом деле оболочка ищет только файлы с флагом исполняемый, а поэтому пока вы не установите этот флаг для файла, он для оболочки существовать не будет.

Проблемы в программах

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

В терминале программа, скорее всего, покажет почему она не работает. Также у многих программ поддерживается опция -v или —verbose. Вы можете попробовать использовать эту опцию, если первый запуск в терминале ничего не дал. Далее, когда уже есть сообщение об ошибке, вы можете попытаться исправить его сами, если поняли в чем дело или попытаться найти решение на формуме, скорее всего, другие пользователи уже решили вашу проблему. Но если нет, вы можете создать новую тему и описать там свою ошибку. Но без вывода программы в терминале вам вряд ли помогут.

Многие ошибки системы linux, связанные с графической оболочкой вы можете найти в файле ~/.xsession-errors в вашей домашней директории. Если оболочка работает медленно, зависает или не работают другие программы, но в других логах причин этому нет, возможно, ответ находится именно в этом файле.

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

$ sudo systemctl status имя_сервиса

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

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

Проблемы с драйверами и ядром

Проблемы с драйверами, модулями ядра или прошивками могут вызвать много неприятностей во время загрузки системы. Это может быть просто медленная загрузка системы, неработоспособность определенных устройств  неправильная работа видео или полная невозможность запустить графическую подсистему. Исправление ошибок Linux начинается с просмотра логов.

Вы можете посмотреть все сообщения ядра с момента начала загрузки, выполнив команду чтобы узнать какую linux выдает ошибку:

sudo dmesg

Чтобы иметь возможность удобно листать вывод можно выполнить:

sudo dmesg | less

Или сразу выбрать все ошибки:

sudo dmesg | grep error

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

Проблемы с графической оболочкой

Когда проблемы linux касаются графической оболочки, то решить их новичкам не так уж просто. Больше всего потому что доступен только терминал. Графическая оболочка может просто зависнуть или вовсе не запускаться, например, после обновления.

При проблемах с графической оболочкой вы можете всегда переключиться в режим терминала с помощью сочетания клавиш Ctrl+Alt+F1. Далее, вам нужно ввести логин и пароль, затем можете вводить команды терминала.

Посмотреть логи графической оболочки вы можете в том же файле ~/.xsession-erros.

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

Проблемы с диском и файловой системой

Самая частая проблема с диском у новичков — это переполнение диска. Если под диск выделить очень мало места, то он переполнится и система не сможет создавать даже временные файлы, а это приведет к тому что все если не зависнет, то, по крайней мере, не сможет нормально работать.

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

Выводы

Теперь исправление ошибок Linux будет для вас немного проще. Ошибки системы linux довольно сложная тема и этой информации явно мало, если у вас остались вопросы или есть предложения по улучшению статьи пишите в комментариях!

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

I simply want to run an executable from the command line, ./arm-mingw32ce-g++, but then I get the error message,

bash: ./arm-mingw32ce-g++: No such file or directory

I’m running Ubuntu Linux 10.10. ls -l lists

-rwxr-xr-x 1 root root  433308 2010-10-16 21:32 arm-mingw32ce-g++

Using sudo (sudo ./arm-mingw32ce-g++) gives

sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory

I have no idea why the OS can’t even see the file when it’s there. Any thoughts?

asked Oct 16, 2010 at 14:00

Warpspace's user avatar

This error can mean that ./arm-mingw32ce-g++ doesn’t exist (but it does), or that it exists and is a dynamically linked executable recognized by the kernel but whose dynamic loader is not available. You can see what dynamic loader is required by running ldd /arm-mingw32ce-g++; anything marked not found is the dynamic loader or a library that you need to install.

If you’re trying to run a 32-bit binary on an amd64 installation:

  • Up to Ubuntu 11.04, install the package ia32-libs.
  • On Ubuntu 11.10, install ia32-libs-multiarch.
  • Starting with 12.04, install ia32-libs-multiarch, or select a reasonable set of :i386 packages in addition to the :amd64 packages.

answered Oct 16, 2010 at 14:25

Gilles 'SO- stop being evil''s user avatar

5

I faced this error when I was trying to build Selenium source on Ubuntu. The simple shell script with correct shebang was not able to run even after I had all pre-requisites covered.

file file-name # helped me in understanding that CRLF ending were present in the file.

I opened the file in Vim and I could see that just because I once edited this file on a Windows machine, it was in DOS format. I converted the file to Unix format with below command:

dos2unix filename # actually helped me and things were fine.

I hope that we should take care whenever we edit files across platforms we should take care for the file formats as well.

fantaghirocco's user avatar

answered Sep 23, 2015 at 9:29

Jitendra's user avatar

JitendraJitendra

6966 silver badges10 bronze badges

3

This error may also occur if trying to run a script and the shebang is misspelled. Make sure it reads #!/bin/sh, #!/bin/bash, or whichever interpreter you’re using.

answered Jan 27, 2014 at 20:24

Zoltán's user avatar

ZoltánZoltán

21.1k14 gold badges92 silver badges133 bronze badges

3

I had the same error message when trying to run a Python script — this was not @Warpspace’s intended use case (see other comments), but this was among the top hits to my search, so maybe somebody will find it useful.

In my case it was the DOS line endings (rn instead of n) that the shebang line (#!/usr/bin/env python) would trip over. A simple dos2unix myfile.py fixed it.

answered Feb 23, 2015 at 15:50

djlauk's user avatar

djlaukdjlauk

3,1191 gold badge12 silver badges12 bronze badges

1

I found my solution for my Ubuntu 18 here.

sudo dpkg --add-architecture i386

Then:

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

answered May 15, 2020 at 15:37

betontalpfa's user avatar

betontalpfabetontalpfa

3,3841 gold badge32 silver badges65 bronze badges

1

As mentioned by others, this is because the loader can’t be found, not your executable file. Unfortunately the message is not clear enough.

You can fix it by changing the loader that your executable uses, see my thorough answer in this other question: Multiple glibc libraries on a single host

Basically you have to find which loader it’s trying to use:

$ readelf -l arm-mingw32ce-g++ | grep interpreter
  [Requesting program interpreter: /lib/ld-linux.so.2]

Then find the right path for an equivalent loader, and change your executable to use the loader from the path that it really is:

$ ./patchelf --set-interpreter /path/to/newglibc/ld-linux.so.2 arm-mingw32ce-g++

You will probably need to set the path of the includes too, you will know if you want it or not after you try to run it. See all the details in that other thread.

answered Jul 11, 2019 at 21:52

msb's user avatar

msbmsb

3,7393 gold badges30 silver badges38 bronze badges

2

I got this error “No such file or directory” but it exists because my file was created in Windows and I tried to run it on Ubuntu and the file contained invalid 15r where ever a new line was there.
I just created a new file truncating unwanted stuff

sleep: invalid time interval ‘15r’
Try 'sleep --help' for more information.
script.sh: 5: script.sh: /opt/ag/cont: not found
script.sh: 6: script.sh: /opt/ag/cont: not found
root@Ubuntu14:/home/abc12/Desktop# vi script.sh 
root@Ubuntu14:/home/abc12/Desktop# od -c script.sh 
0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       b
0000020   a   s   h  r  n   w   g   e   t       h   t   t   p   :   /

0000400   :   4   1   2   0   /  r  n
0000410
root@Ubuntu14:/home/abc12/Desktop# tr -d \015 < script.sh > script.sh.fixed
root@Ubuntu14:/home/abc12/Desktop# od -c script.sh.fixed 
0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       b
0000020   a   s   h  n   w   g   e   t       h   t   t   p   :   /   /

0000400   /  n
0000402
root@Ubuntu14:/home/abc12/Desktop# sh -x script.sh.fixed 

answered Jan 14, 2016 at 15:09

likeGreen's user avatar

likeGreenlikeGreen

1,0071 gold badge19 silver badges38 bronze badges

I got the same error for a simple bash script that wouldn’t have 32/64-bit issues. This is possibly because the script you are trying to run has an error in it. This ubuntu forum post indicates that with normal script files you can add sh in front and you might get some debug output from it. e.g.

$ sudo sh arm-mingw32ce-g++

and see if you get any output.

In my case the actual problem was that the file that I was trying to execute was in Windows format rather than Linux.

answered Nov 27, 2013 at 14:58

icc97's user avatar

icc97icc97

11k8 gold badges72 silver badges88 bronze badges

Below command worked on 16.4 Ubuntu

This issue comes when your .sh file is corrupt or not formatted as per unix protocols.

dos2unix converts the .sh file to Unix format!

sudo apt-get install dos2unix -y
dos2unix test.sh
sudo chmod u+x test.sh 
sudo ./test.sh

answered Apr 20, 2018 at 9:27

Soumyaansh's user avatar

SoumyaanshSoumyaansh

8,5567 gold badges44 silver badges44 bronze badges

I had the same problem with a file that I’ve created on my mac.
If I try to run it in a shell with ./filename I got the file not found error message.
I think that something was wrong with the file.

what I’ve done:

open a ssh session to the server

cat filename
copy the output to the clipboard

rm filename
touch filename
vi filename
i for insert mode
paste the content from the clipboard
ESC to end insert mode
:wq!

This worked for me.

answered Oct 12, 2014 at 21:44

space's user avatar

spacespace

211 bronze badge

1

Added here for future reference (for users who might fall into the same case):
This error happens when working on Windows (which introduces extra characters because of different line separator than Linux system) and trying to run this script (with extra characters inserted) in Linux. The error message is misleading.

In Windows, the line separator is CRLF (rn) whereas in linux it is LF (n). This can be usually be chosen in text editor.

In my case, this happened due to working on Windows and uploading to Unix server for execution.

answered Jan 24, 2020 at 2:54

PALEN's user avatar

PALENPALEN

2,7542 gold badges23 silver badges24 bronze badges

1

I just had this issue in mingw32 bash. I had execuded node/npm from Program Files (x86)nodejs and then moved them into disabled directory (essentially removing them from path). I also had Program Filesnodejs (ie. 64bit version) in path, but only after the x86 version. After restarting the bash shell, the 64bit version of npm could be found. node worked correctly all the time (checked with node -v that changed when x86 version was moved).

I think bash -r would’ve worked instead of restarting bash: https://unix.stackexchange.com/a/5610

answered Jul 15, 2016 at 8:31

Pasi Savolainen's user avatar

Pasi SavolainenPasi Savolainen

2,4401 gold badge22 silver badges35 bronze badges

I had this issue and the reason was EOL in some editors such as Notepad++. You can check it in Edit menu/EOL conversion. Unix(LF) should be selected.
I hope it would be useful.

answered Sep 22, 2019 at 12:04

user3184564's user avatar

1

Hit this error trying to run terraform/terragrunt (Single go binary).

Using which terragrunt to find where executable was, got strange error when running it in local dir or with full path

bash: ./terragrunt: No such file or directory

Problem was that there was two installations of terragrunt, used brew uninstall terragrunt to remove one fixed it.

After removing the one, which terragrunt showed the new path /usr/bin/terragrunt everything worked fine.

answered Dec 14, 2020 at 20:46

Pieter's user avatar

PieterPieter

1,87917 silver badges17 bronze badges

For those encountering this error when running a java program, it’s possible that you’re trying to run a 64-bit java program using on a 32-bit linux operating system.

I only realised when I ran ldd on 64-bit java which reported:

ldd /usr/java/jdk1.8.0_05/bin/java

‘not a dynamic executable’

Whereas the old 32 bit java reported sensible results:

ldd /usr/java/jdk1.8.0_05/bin/java

answered Jan 22, 2022 at 7:52

keithphw's user avatar

keithphwkeithphw

3801 gold badge4 silver badges14 bronze badges

In a .sh script, each line MUST end with a single character – newline (LF or “n“).

Don’t make mistakes like me, because my text-editor of choice is Notepad++ in Win.
The default line ending in Win is “rn” (CR LF), and such ending is not standard for Linux shell scripts.

answered Dec 16, 2022 at 22:20

Bokili Production's user avatar

In my case, it turns out the file was a symlink:

$ cat deluge-gtk.lock
cat: deluge-gtk.lock: No such file or directory
$ file deluge-gtk.lock
deluge-gtk.lock: broken symbolic link to 32309

Misleading errors like this are fairly common on Linux. Related discussion: https://lwn.net/Articles/532771/

answered Nov 2, 2021 at 5:01

Navin's user avatar

NavinNavin

3,6462 gold badges28 silver badges52 bronze badges

Give it a try by changing the name of file or folder which is not showing in terminal/command prompt.

step1 : change the name of file or folder.
step2 : cd filename/foldername

answered Nov 21, 2021 at 19:10

SHACHI PRIYA's user avatar

2

For future readers, I had this issue when trying to launch a Django server using gunicorn. I was using AWS CodeBuild to build the virtual environment and run tests and using CodeDeploy to put the built artifacts onto the production server and launch the new version (all environments were Ubuntu 20.04). I had mistakenly thought that env/bin/... contained actual binaries of native libraries but that was not the case. It was just Python scripts with a shebang of the path to the Python interpreter on the build machine. In my case, the machine installing the packages and actually running the packages was different. To be more specific, all of the files in env/bin had the shebang #!/codebuild/output/src715682316/src/env/bin/python, so of course running env/bin/gunicorn on the production server would fail. The cryptic error message was when Ubuntu would tell me that env/bin/gunicorn didn’t exist as opposed to saying /codebuild/output/src715682316/src/env/bin/python didn’t exist. I was able to fix this problem by starting gunicorn using python3 env/bin/gunicorn instead of env/bin/gunicorn.

answered May 22, 2022 at 20:17

Badr B's user avatar

Badr BBadr B

9001 gold badge8 silver badges14 bronze badges

This: sed -i -e 's/r$//' FILE, could potentially fix your problem.

As many answers already have explained, this issue could be caused by line endings being rn in Windows and only n in Linux. A suggested approach was to use dos2unix. As far as I understand this is not standard on most Linux distributions, and in my case I could not install / use it.

Therefore I used the following approach, (mentioned in Bash script – “/bin/bash^M: bad interpreter: No such file or directory”), where you can use the sed command instead.

sed -i -e 's/r$//' FILE where you replace FILE with the name of your file, e.g. sed -i -e 's/r$//' myscript.sh

If you for some reason do not have sed installed but do not want to use dos2unix you can use the following to install sed:

sudo apt-get update
sudo apt-get install sed

answered Mar 30 at 13:38

darclander's user avatar

darclanderdarclander

1,5061 gold badge12 silver badges35 bronze badges

1

Yet another possible reason: the file is a binary linked dynamically against musl (most likely for alpine)

on debian system you will have to install

apt-get update -y && apt-get install -y musl musl-dev musl-tools

answered Apr 14 at 11:15

Daniel Braun's user avatar

Daniel BraunDaniel Braun

2,36326 silver badges25 bronze badges

Ошибки Path not found и Path does not existПри работе с программами, утилитами и запуске игр пользователи могут столкнуться с появлением ошибок: «Path not found» и «Path does not exist». В этой статье рассмотрим, что это за ошибки и что делать, чтобы их исправить.

Что означают ошибки «Path not found» и «Path does not exist»

Пользователи, владеющие основами английского языка или потрудившиеся воспользоваться переводчиком без проблем поймут суть данных ошибок:

  • Path not found – с английского переводится как: «Путь не найден»;
  • Path does not exist – с английского переводится как: «Путь не существует».

Обе эти ошибки оповещают об одной и той же проблеме, а именно — о невозможности построить путь к указанному файлу. Это может быть, как исполняемый exe файл, так и вспомогательные файлы, требуемые для работы программы или игры.

«Path not found» и «Path does not exist» — что делать, если возникли ошибки

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

Целостность пути может быть нарушена в результате:

  • Переноса папки, например, в другую папку, на другой диск или съемный носитель;
  • Из-за изменения названия корневой директории или одной из внутренних промежуточных папок;
  • Повреждения файла, к которому происходит непосредственное обращение. Например, в результате ручного вмешательства или вследствие действий вирусных программ.

Если исключить последний пункт, то решений у данной проблемы 2:

  1. Зайти в свойства ярлыка и изменить путь к исполняемому файлу;
  2. Дать корректное соответствующее пути, указанному в свойствах ярлыка, название папок.

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


Если ошибки «Path not found» и «Path does not exist» возникают не во время запуска, а непосредственно во время работы программы, то диагностировать проблемный файл становится на порядок сложнее. Если в тексте ошибки указан путь, то нужно опять-таки по нему проследовать. Если из подсказок есть только конечный файл, к которому происходит обращение, то можно воспользоваться встроенным поиском Windows, чтобы его найти. Но это может стать весьма проблематичным, если файл был удален или переименован.


Ошибки «Path not found» и «Path does not exist» могут возникать и в программировании: при компиляции программ или их запуске. Причина аналогичная – не верное указан путь / url. И решение стандартное – сопоставить указанный путь с иерархией каталогов и сверить соответствие имен папок.

С абсолютным путем (вида: https://www.urfix.ru/content/images/index.php) проблемы возникают редко, так как ссылка будет работать корректно при указании на нее из любого файла и из любой директории.

А вот с относительными путями все сложнее (вида: /content/images/index.php), в которых не указаны корневые директории. Каждый начинающий вебмастер и программист сталкивался с подобной ошибкой. Решается элементарно: либо указывается абсолютный путь, либо – относительный, согласно иерархии каталогов.

Не нашли ответ? Тогда воспользуйтесь формой поиска:

Добавить комментарий