Вопрос или проблема
После выполнения sudo ./setup/ubuntu/install_prereqs.sh я получил следующую ошибку по завершении
/tmp/bazelisk_1.22.0-amd64.deb: ОК
(Чтение базы данных … в настоящее время установлено 352591 файл и каталог.)
Подготовка к распаковке /tmp/bazelisk_1.22.0-amd64.deb …
Распаковка bazelisk (1.22.0) …
dpkg: ошибка при обработке архива /tmp/bazelisk_1.22.0-amd64.deb (–install):
попытка перезаписать ‘/usr/bin/bazel’, который также содержится в пакете bazel-bootstrap 3.5.1+ds-3ubuntu1
При обработке возникли ошибки:
/tmp/bazelisk_1.22.0-amd64.deb
Скрипт настройки зависимостей исходного дистрибутива Drake вызвал ошибку на линии 20 при выполнении команды source “${BASH_SOURCE%/*}/source_distribution/install_prereqs.sh” “${source_distribution_args[@]}”
Я использую Ubuntu 22.04.5 LTS
Детали версии bazel:
Метка сборки: 3.5.1- (@non-git)
Цель сборки: bazel-out/k8-dbg/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Время сборки: Вс Авг 15 22:54:48 2021 (1629068088)
Метка времени сборки: 1629068088
Метка времени сборки в виде целого числа: 1629068088
не нашел решения на публикациях drake в github
.
Ответ или решение
Установка Bazel для Drake на Ubuntu может вызвать различные проблемы, особенно если у вас уже установлены другие версии Bazel или Bazelisk. В вашем случае возникла проблема при попытке установить Bazelisk, так как на вашем компьютере уже присутствует конфликтующая версия Bazel, установленная как bazel-bootstrap
.
Анализ проблемы
Как видно из вашего сообщения об ошибке, во время установки Bazelisk возникла следующая проблема:
dpkg: ошибка обработки архива /tmp/bazelisk_1.22.0-amd64.deb (--install):
попытка перезаписать '/usr/bin/bazel', который также находится в пакете bazel-bootstrap 3.5.1+ds-3ubuntu1
Это свидетельствует о том, что вы пытаетесь установить пакет, который конфликтует с уже установленным пакетом. В данном случае, пакет bazel-bootstrap
уже содержит файл /usr/bin/bazel
, который пытается перезаписать пакет bazelisk
.
Решение проблемы
-
Удаление конфликтующего пакета: Вам необходимо удалить уже установленный пакет
bazel-bootstrap
. Выполните следующую команду в терминале:sudo apt-get remove bazel-bootstrap
Убедитесь, что удаление проходит без ошибок.
-
Проверка наличия Bazel: После удаления
bazel-bootstrap
, убедитесь, что у вас больше нет установленных версий Bazel, выполнив команду:which bazel
Если команда возвращает путь к исполняемому файлу, это означает, что у вас все еще установлена версия Bazel. В этом случае выполните:
sudo apt-get remove --purge bazel
-
Повторная установка Bazelisk: После того как конфликтующий пакет будет удален, вы можете повторно запустить скрипт установки зависимостей для Drake:
sudo ./setup/ubuntu/install_prereqs.sh
-
Проверка корректности установки: По завершении установки проверьте, что
bazel
иbazelisk
были установлены корректно:bazel --version bazelisk --version
Вы должны увидеть версии
bazel
иbazelisk
, соответствующие установленным. -
Дополнительные рекомендации: Если вы планируете работать с различными проектами, которым могут требоваться разные версии Bazel, рассмотрите возможность использования управляемых версий Bazel через Bazelisk, который автоматически выбирает нужную версию Bazel в зависимости от настроек вашего проекта.
Заключение
Таким образом, для успешной установки Bazel для Drake на Ubuntu вы должны удалить конфликтующие версии Bazel, а затем повторно выполнить процесс установки зависимостей. Если у вас возникли дополнительные проблемы или вопросы, рекомендуется обратиться к документации проекта Drake или на форумы сообщества, где можно найти аналогичные проблемы и их решения.