Java_home Нет такого файла или каталога в терминале Linux

Сообщение об ошибке исходит из этой строки в<Linux kernel source code>/fs/ext4/super.c:

        if (ext4_has_unknown_ext4_ro_compat_features(sb)) {
            ext4_msg(sb, KERN_ERR, "couldn't mount RDWR because of "
                     "unsupported optional features (%x)",
                     (le32_to_cpu(EXT4_SB(sb)->s_es->s_feature_ro_compat) &
                            ~EXT4_FEATURE_RO_COMPAT_SUPP));

Заполнитель для числа в сообщении об ошибке — %x, поэтому число 400 в фактическом сообщении об ошибке — это шестнадцатеричное число 0x400. И это одно, если признаки идентифицируются константами EXT4_FEATURE_RO_COMPAT_.

Определения этих констант можно найти в <Linux kernel source code>/fs/ext4/ext4.h:

.
#define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM    0x0400

Функция dir_nlink, упомянутая sourcejedi, имеет адрес 0x20, а не 0x400:

#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK        0x0020

Таким образом, MR3020 не смог смонтировать файловую систему в режиме чтения/записи, поскольку его операционная система не может обрабатывать контрольные суммы метаданных ext4. Поэтому вам нужно отключить эту функцию, используя систему Linux, которую вы использовали для создания USB-накопителя. Переместите USB-накопитель обратно в эту систему (, не монтируйте файловую систему ext4 )и запустите:

tune2fs -O^metadata_csum /dev/sdX2

(замените X любым фактическим идентификатором USB-накопителя в вашей системе Linux.)

После успешного выполнения этой команды функция metadata_csumбудет отключена в файловой системе ext4 USB-накопителя, и теперь MR3020 сможет ее использовать.

-1
22.03.2020, 14:14
2 ответа

sudo не поддерживает ваши переменные окружения. Попробуйте

sudo JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 apt-get...

Если это не разрешено вашей конфигурацией sudo, попробуйте sudo -i, а затем JAVA_HOME=... apt-get..., как указано выше

0
28.04.2021, 23:19

Критическое сообщение об ошибке:

/usr/sbin/update-info-dir: 2: /etc/environment: JAVA_HOME: not found

Это указывает на то, что сообщение об ошибке исходит от /usr/sbin/update-info-dir, который представляет собой сценарий, который может выполняться как часть операций установки/удаления пакета. Он читает (ищет )файл /etc/environmentи обнаруживает там ошибку.

/etc/environmentдолжен содержать только назначения переменных окружения в стиле оболочки POSIX --, т.е.

VARIABLE_NAME=value

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

Я предполагаю, что ваш файл /etc/environment, вероятно, содержит что-то вроде

JAVA_HOME = /usr/lib/jvm/java-8-openjdk-amd64

поэтому вместо того, чтобы назначать путь к переменной среды $JAVA_HOME, оболочка, читающая файл, интерпретирует его как команду оболочки, которую необходимо выполнить. Он попытается выполнить команду с именем буквально JAVA_HOMEс двумя параметрами, =и /usr/lib/jvm/java-8-openjdk-amd64. Поскольку команды с именем JAVA_HOMEне существует, это приведет к появлению сообщения об ошибке.

Отредактируйте файл /etc/environmentи удалите все пробелы до/после знака равенства в назначениях переменных среды.

3
28.04.2021, 23:19

Теги

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