bash: “нет такого файла или каталога” для исполняемого файла в PATH

Вопрос или проблема

В процессе установки Java (в рамках Weblogic) с помощью Ansible возникла эта проблема. Я иногда замечал это ранее, но не могу вспомнить решение.

У меня есть новый пользователь Linux “weblogic” в группе “weblogic” на Ubuntu 24, HOME=/opt/oracle

Я подключаюсь по SSH к удаленной машине как свой собственный пользователь, затем делаю sudo su weblogic. Я экспортирую JAVA_HOME и PATH, либо через .bashrc, либо вручную

declare -x PATH="/opt/oracle/jdk1.8.0_431/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
declare -x JAVA_HOME="/opt/oracle/jdk1.8.0_431"

Но когда я выполняю команды

java
bash: /opt/oracle/jdk1.8.0_431/bin/java: Нет такого файла или каталога

/opt/oracle/jdk1.8.0_431/bin/java
bash: /opt/oracle/jdk1.8.0_431/bin/java: Нет такого файла или каталога

Права доступа выглядят следующим образом, на всех уровнях от /opt

drwxr-xr-x  4 weblogic weblogic  4096 дек  9 15:27 oracle/

Сначала я предполагал, что это проблема с Ansible, о которой я не знаю, и спросил здесь https://stackoverflow.com/questions/79265126/using-the-lookup-ansible-builitin-env-on-the-environment-variable-path-does-not

.

Ответ или решение

Если вы сталкиваетесь с ошибкой "bash: no such file or directory" при попытке запустить Java на Ubuntu 24, это может быть связано с несколькими факторами, включая неверные права доступа, отсутствие самой бинарной программы или ошибки в настройке переменных окружения. Давайте подробно рассмотрим возможные причины и их решения.

Анализ проблемы

  1. Путь к исполняемому файлу: На первом этапе важно убедиться, что файл java действительно существует по указанному пути (/opt/oracle/jdk1.8.0_431/bin/java). Для этого выполните команду:

    ls -l /opt/oracle/jdk1.8.0_431/bin/java

    Если файл не найден, это может свидетельствовать о том, что Java не была корректно установлена, или файл был случайно удалён.

  2. Права доступа: Если файл существует, но вы по-прежнему видите ошибку, проверьте права доступа к файлу java. Вы можете использовать команду ls -l для получения информации о правах:

    ls -l /opt/oracle/jdk1.8.0_431/bin/

    Убедитесь, что файл имеет права на выполнение. Для этого проверяйте, есть ли x (execute) в правах, например: -rwxr-xr-x. Если прав недостаточно, вы можете их установить командой:

    sudo chmod +x /opt/oracle/jdk1.8.0_431/bin/java
  3. Архитектура и зависимости: Иногда исполняемые файлы могут не работать из-за несоответствия архитектуры системы. Убедитесь, что вы установили версию Java, совместимую с вашей версией Ubuntu (например, x86 vs x64). Для проверки архитектуры используйте:

    uname -m

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

  4. Переменные окружения: Вы упомянули, что вы экспортировали переменные окружения JAVA_HOME и PATH. После внесения изменений в .bashrc вам нужно либо перезапустить терминал, либо вручную выполнить команду:

    source ~/.bashrc

    Это необходимо для того, чтобы изменения вступили в силу.

Решение

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

java -version

Заключение

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

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

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

Капча загружается...