Вопрос или проблема
Я использую English Mint21 с Bazel 7.1.0.
Если я собираю простой проект hello-world на C++ в папке с японскими символами, я получаю ошибку –
/tmp/ワーク:$ bazel build //...
Запускаю локальный сервер Bazel и подключаюсь к нему...
ОШИБКА: Текущий каталог клиента '/tmp/ワーク' не находится внутри рабочего пространства '/tmp/???'
/tmp/ワーク:$
Я не уверен, что точное содержимое BUILD и т. д. имеет значение, так как ошибка возникает на очень раннем этапе.
Я поищал и нашел проблему, зарегистрированную в 2017 году, но тикет был закрыт без исправления: https://github.com/bazelbuild/bazel/issues/2550
Существует ли какой-то флаг, который мне нужно использовать, чтобы это работало? Я подозреваю, что моя среда каким-то образом неправильная, так как в интернете не так много упоминаний о данной проблеме.
Спасибо.
Ответ или решение
Чтобы решить проблему с использованием Bazel в каталогах с не-ASCII символами, такими как японские символы, необходимо рассмотреть несколько аспектов, поскольку это может быть связано как с самой конфигурацией Bazel, так и с настройками окружения.
Шаг 1: Убедитесь, что путь к рабочей области правильный
Ошибка, которую вы получаете, указывает на то, что Bazel не может правильно идентифицировать рабочую область из-за символов в пути. Убедитесь, что вы находитесь в правильной директории и что сама директория действительно содержит рабочую область Bazel (файл WORKSPACE). Попробуйте использовать абсолютный путь к рабочей директории:
cd /absolute/path/to/your/ワーク
bazel build //...
Шаг 2: Настройки локали
Проблема может быть связана с конфигурацией локали вашего терминала. Убедитесь, что у вас правильно установлены переменные окружения для локали. Для этого выполните:
locale
Если вывод содержит значения, отличные от UTF-8
, попробуйте установить локаль в UTF-8. Например, можно добавить в .bashrc
или .bash_profile
следующие строки:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
После этого загрузите изменения:
source ~/.bashrc
Шаг 3: Версия Bazel
Вы используете Bazel 7.1.0, однако, возможно, стоит попробовать обновить до самой последней версии. В последних версиях могут быть исправлены ошибки, связанные с кодировкой и поддержкой не-ASCII символов. Используйте следующую команду для обновления:
bazelisk update
Если bazelisk
еще не установлен, вы можете установить его, следуя инструкциям на официальном сайте Bazelisk.
Шаг 4: Использование символов ASCII
Если ни один из вышеизложенных шагов не работает, временным решением может быть использование каталога с именем, содержащим только ASCII символы. Это можно сделать следующим образом:
- Создайте каталог с ASCII символами, например
workspace
. - Переместите ваш проект с японскими символами в новый каталог и попробуйте выполнить сборку снова:
mv /tmp/ワーク /tmp/workspace
cd /tmp/workspace
bazel build //...
Шаг 5: Обратитесь к сообществу или отчету об ошибках
Если проблема продолжается, вы можете обратиться к сообществу Bazel или создать новый отчет об ошибке на GitHub. Обязательно укажите детали вашей системы, версию Bazel, а также пошаговое описание того, что вы сделали, чтобы лучше помочь разработчикам.
Заключение
Следуя указанным шагам, вы сможете устранить проблему с ошибками в Bazel, связанными с не-ASCII символами. Если возникнут дополнительные вопросы, пожалуйста, не стесняйтесь задавать их.