Как установить bazel linux

Обновлено: 06.07.2024

Я пробовал следующие команды, но каждый раз получал одинаковые ошибки:

Но команда sudo apt-get install bazel дает sudo apt-get install bazel же ошибку каждый раз:

Как я смогу установить пакет bazel?

На самом деле была аналогичная проблема:

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

Поэтому я пошел на официальный сайт bazel:

Я попробовал рекомендованный способ "Использовать собственный репозиторий APT Bazel", но застрял на первом шаге, и я нашел много подобных проблем в Google, но ничего не помогает.

Поэтому я попробовал второй способ: "Установить с помощью двоичного установщика", к счастью, он работает!

Вот шаги, которые я скопировал (немного изменил):

    Установка необходимых пакетов

sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python

Перейдите на страницу Bazel GitHub.

Загрузите бинарный установщик bazel-0.7.0-installer-linux-x86_64.sh (последняя версия, которую я получил). Этот установщик содержит двоичный файл Bazel и требуемый JDK и может использоваться, даже если JDK уже установлен.

Обратите внимание, что bazel-0.7.0-without-jdk-installer-linux-x86_64.sh также существует. Это версия без встроенного JDK 8. Используйте этот установщик только в том случае, если у вас уже установлен JDK 8.

chmod +x bazel-0.7.0-installer-linux-x86_64.sh

./bazel-0.7.0-installer-linux-x86_64.sh --user

Флаг --user устанавливает Bazel в каталог $ HOME/bin в вашей системе и устанавливает путь .bazelrc в $ HOME/.bazelrc. Используйте команду --help, чтобы просмотреть дополнительные параметры установки.

Настройте свою среду

Если вы запускали установщик Bazel с флагом --user, как указано выше, исполняемый файл Bazel устанавливается в ваш каталог $ HOME/bin. Рекомендуется добавить этот каталог к вашим путям по умолчанию следующим образом:

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

Появление Maven-а породило волну различных систем сборок, каждая из которых в чем-то улучшала Maven или рассматривала процесс сборки немного под другим углом: Buildr, Gradle, Pants, Buck и некоторые другие.

И тут мы приходим к Bazel.
Итак, что же побудило Google создать свою собственную систему сборки при таком обилии уже существующих. На сайте Bazel на этот вопрос дается такой ответ:

Почему не Make?
Слишком низкоуровневый и подробный. Bazel позволяет высокоуровнево описывать сборку.

Почему не Ant или Maven?
Ant и Maven разработаны в основном для Java-проектов, а Bazel поддерживает многоязычность, что актуально для больших проектов.

Почему не Gradle?
Bazel имеет более структурированную систему конфигурации проектов, что позволяет добиться более высокой производительности за счет параллелизма.

Почему не Pants и Buck?
Pants и Buck были разработаны бывшими сотрудниками Google, которые спроектировали эти инструменты после Bazel, но имеют не так много возможностей, чтобы конкурировать с Bazel.
(довольно слабый аргумент, IMHO - прим. Toolkas)

  1. Google хочет собирать многоязычные проекты, что типично для компании, имеющей дело со сверхвысокой нагрузкой и гигантскими объемами данных;
  2. Google хочет собирать большие многоязычные проекты;
  3. Google хочет очень быстро собирать большие многоязычные проекты;
  4. Google хочет собирать проекты по-своему=).

Ну или как-то так.
Теперь, когда мы приблизительно в курсе причин, приведших к созданию Bazel, установим его на компьютер.

На официальном сайте Bazel подробно расписана процедура установки на компьютер в зависимости от операционной системы. По великой традиции, восходящей к Кернигану и Ричи, создадим программу, которая выводит "Hello, world!" на Java и соберем эту программу с помощью Bazel.
Для тех, кто видит Java впервые, приведу ее код:
Теперь создадим папку проекта helloworld с такой структурой:

Папка src содержит исходники и ее структура полностью идентична таковой в Maven.
Теперь разберемся с новыми файлами в структуре проекта: WORKSPACE и BUILD.

Файл WORKSPACE должен находиться в корне файловой структуры проекта, помечая его, таким образом, как проект Bazel. Обычно этот файл содержит глобальные настройки проекта, ссылки на репозитории внешних артефактов и тому подобное.

Наш проект очень простой, никакие внешние артефакты ему не нужны, поэтому оставим файл WORKSPACE пока пустым.

Файл BUILD (их может быть несколько) содержит информацию, как собирать различные части проекта. Папку, в которой лежит файл BUILD называют пакетом (package). Файл BUILD использует правила сборки (build rule), которые описывают, как именно собирать отдельные части проекта. Конкретное именованное использование правила сборки называется цель (target), ее можно вызвать отдельно. Содержимое файла BUILD пишется на языке программирования Starlark, специально разработанном для Bazel. Starlark можно считать диалектом Python, но он не является языком общего назначения. Файл BUILD нашего простого проекта будет иметь вид:

Файл BUILD использует два встроенных правила: java_library и java_binary.
java_library компилирует исходники и упаковывает классы в jar-файл.
Для того, чтобы использовать правило java_library, нужно вызвать по имени цель, которая использует это правило.
Выглядит это так:

Эту команду нужно выполнить в корне проекта.
В результате Bazel соберет jar-файл:
Обратите внимание, что при вызове цели мы используем имя, которое прописано в атрибуте name правила java_library.

Именно по имени мы можем вызывать цели Bazel, поэтому имена целей в файле BUILD должны быть уникальны.

Теперь рассмотрим цель helloworld. Она использует правило java_binary, которое предназначено для того, чтобы создать запускаемый модуль.
Если вы используете Bazel в операционной системе Windows, то результатом работы правила java_binary станет запускаемый jar-файл и exe-файл. Удобно, не правда ли?=)

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

Чтобы собрать запускаемый модуль, нужно выполнить команду:
в результате чего Bazel соберет jar и exe файлы:
Запустить программу на выполнение можно командой:
Красным цветом выделена строчка, которую напечатал класс HelloWorld.

Тестовые примеры, вроде нашего HelloWorld, хорошо демонстрируют принцип, но совершенно оторваны от реальности. Хочется попробовать Bazel на немного более сложном проекте. Допустим, у нас есть интерфейс кода приветствия:

И два варианта реализации приветствия, на английском:
и на русском:
Все три класса мы хотим организовать в виде отдельных jar-файлов. Есть много способов получить такой результат, рассмотрим один из них:
Поскольку нам не требуется никаких глобальных настроек, то и в этом случае файл WORKSPACE пустой.

Ни один из трех классов не является запускаемым, значит нам не нужно использовать правило java_binary. Все три класса должны просто собираться в jar-файлы, поэтому мы используем правило java_library.
Поскольку greeting-api должно быть доступно во время сборки проектам greeting-en и greeting-ru, для проекта greeting-api необходимо указать видимость. Таким образом, файл greeting-api/BUILD будет выглядеть так:
greeting-ru и greeting-en - это пакеты, которые содержат конкретные реализации, поэтому этим пакетам не нужна публичная видимость. Единственное, что им нужно - это greeting-api. Поэтому файл greeting-en/BUILD будет выглядеть так:
а файл greeting-ru/BUILD так:
Из этих примеров видно, как корректно делать ссылки на правила: //[относительный путь от корня проекта]:[имя правила в BUILD]. Теперь для сборки всех модулей достаточно выполнить команду:

Bazel хорош тем, что жестко контролирует зависимости пакетов. Это сделано для воспроизводимости результатов сборки в любом окружении. Чтобы сгенерировать дерево зависимостей greeting-en, нужно в корне проекта выполнить команду:

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

Bazel - это инструмент сборки, инструмент, который может запускать, компилировать и тестировать для сборки программного обеспечения, как Make, Ant, Gradle, Buck, Pants и Maven. Здесь мы увидим, как установить инструмент для создания и тестирования программного обеспечения с открытым исходным кодом Bazel на CentOS 8 Linux / Stream / RHEL 8.

Что такое Bazel?

Bazel - это инструмент компиляции, разработанный Google в рамках инициативы с открытым исходным кодом, а Bazel использует распределенное кэширование и методы инкрементной сборки для ускорения компиляции. Он изначально поддерживает языки Java и C ++ и в настоящее время имеет правила, связанные с открытым исходным кодом для компиляции проектов Golang.

Установите Bazel на CentOS или Redhat для создания и тестирования программного обеспечения

Для CentOS 8 Linux или RHEL 8:

Вывод команды:

OutPut

Что особенного в Bazel?

Bazel - это программное обеспечение модель разработки, предназначенная для работы с Google.

Имеет следующие характеристики:

Поддержка нескольких языков: Bazel поддерживает Java, Objective-C и C ++, и может бытьрасширен для поддержки любого языка программирования.

Язык сборки высокого уровня: Разработка описывается языком BUILD. Язык BUILD описывает проект, состоящий из нескольких небольших взаимосвязанных библиотек, двоичных файлов и тестовых программ в кратком текстовом формате. Напротив, такие инструменты, как Make, должны описывать отдельные файлы и скомпилированные команды.

Поддержка нескольких платформ: Один и тот же набор инструментов и один и тот же файл BUILD можно использовать для создания программного обеспечения для разных архитектуры и платформы. В Google мы используем Bazel для создания серверных программ, которые работают в системах нашего центра обработки данных, и клиентских приложений, работающих на мобильных телефонах.

Воспроизводимость: В файле BUILD каждая библиотека, тестовая программа и двоичный файл должны явно и явно указывать прямые зависимости. Когда файл исходного кода изменяется, Bazel использует эту информацию о зависимостях, чтобы знать, какие из них необходимо перестроить, а какие задачи можно выполнять параллельно. Это означает, что все сборки являются инкрементными и каждый раз могут давать одни и те же результаты.

Масштабируемость: Bazel может обрабатывать огромные сборки; в Google серверная программа с более чем 100 КБ исходного кода - обычное дело. Если файлы не изменены, процесс сборки занимает около 200 мс.

Почему я должен использовать Bazel?

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

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

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

Видео на YouTube: Как установить Bazel на CentOS 8 Linux или Redhat 8/7

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

Но команда sudo apt-get install bazel каждый раз выдает одну и ту же ошибку:

Как бы я быть в состоянии, чтобы установить пакет Базель?

1 ответ

Можно ли установить openblas через apt-get, как sudo apt-get install openblas-dev ? Кажется, на ubuntu 14.04 он не может его найти. sudo apt-get install openblas-dev Reading package lists. Done Building dependency tree Reading state information. Done E: Unable to locate package openblas-dev

Получаю эту ошибку ImportError: No module named pybonjour Как установить pybonjour на Ubuntu 14.04. Попробовал sudo apt-get install pybonjour и pip install pybonjour , не повезло.

На самом деле была аналогичная проблема :

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

Поэтому я зашел на официальный сайт "базэла" :

Я попробовал рекомендуемый способ"Использование репозитория Bazel custom APT", но застрял на 1-м шаге, и я нашел много подобных проблем в Google, но ничего не помогает.

Поэтому я попробовал 2-й способ,"Установить с помощью двоичного установщика", к счастью, он работает!

Вот шаги , которые я скопировал с него(немного измененные):

    Установите необходимые пакеты

sudo apt-get установить pkg-config zip g++ zlib1g-dev распаковать python

Загрузите двоичный установщик bazel-0.7.0-installer-linux-x86_64.sh(the последней версии, которую я получил). Этот установщик содержит двоичный файл Bazel и необходимый JDK, и его можно использовать, даже если JDK уже установлен.

Обратите внимание, что bazel-0.7.0-without-jdk-installer-linux-x86_64.sh также существует. Это версия без встроенного JDK 8. Используйте этот установщик только в том случае, если у вас уже установлен JDK 8.

Запустите программу установки

chmod +x bazel-0.7.0-установщик-linux-x86_64.sh

./bazel-0.7.0-установщик-linux-x86_64.sh --пользователь

Флаг --user устанавливает Bazel в каталог $HOME/bin в вашей системе и устанавливает путь .bazelrc в $HOME/.bazelrc . Используйте команду --help , чтобы просмотреть дополнительные параметры установки.

Настройте свою среду

Если вы запустили установщик Bazel с флагом --user , как указано выше, исполняемый файл Bazel будет установлен в вашем каталоге $HOME/bin. Рекомендуется добавить этот каталог в пути по умолчанию следующим образом:

Вы также можете добавить эту команду в свой файл

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

Я новичок в Ubuntu и PHP мне нужно установить PHP 5.3.10 на Ubuntu 14.04.I попробовал несколько способов 1.apt-get install php5 (it is installing php 5.5.9 it is not version what i need ) 2.sudo -i.

Первая проблема заключается в том, что я даже не могу опубликовать свой вопрос на askUbuntu! Во-вторых, моя проблема в том, что я не могу ничего установить с некоторых пор через apt-get , я.

Из-за устаревших проблем я должен установить версию gcc/g++ 4.4.7 в моей текущей 32-битной виртуальной машине Ubuntu-gnome 14.04. Обновление по умолчанию через установку apt-get - это 4.8.2, который.

Можно ли установить openblas через apt-get, как sudo apt-get install openblas-dev ? Кажется, на ubuntu 14.04 он не может его найти. sudo apt-get install openblas-dev Reading package lists. Done.

Получаю эту ошибку ImportError: No module named pybonjour Как установить pybonjour на Ubuntu 14.04. Попробовал sudo apt-get install pybonjour и pip install pybonjour , не повезло.

Попробуй: sudo apt-get install maven Если это работает для вас, игнорируйте rest этого поста. Вступление Я начал настраивать свой Ubuntu 12.10 в апреле 2013 года, и нормальный sudo apt-get install.

Я установил драйвер MongoDB PHP на Ubuntu 14.04 с помощью этой команды sudo apt-get install php5-mongo и он установил драйвер, но более старую версию, которая является 1.4, проблема в том, что мне.

Поскольку я хочу использовать grafana на сервере под управлением ubuntu 14.04, мне нужно установить libfontconfig из libfontconfig1, но почему-то нет кандидата на установку. Если я запускаю sudo.

Читайте также: