Open12

YugabyteDBをビルドしてみる

nnaka2992nnaka2992

必要なパッケージをインストールする。
パッケージを見るあたりconfigureとninjaを使ってビルドするらしい

sudo apt-get update
packages=(
  autoconf
  cmake
  curl
  git
  libtool
  locales
  ninja-build
  patchelf
  pkg-config
  python3-pip
  python3-venv
  rsync
  zip
)
sudo apt-get install -y "${packages[@]}"
sudo locale-gen en_US.UTF-8
nnaka2992nnaka2992

YugabyteDBのテストには一部Javaが使われているみたいなのでJDKとmavenを入れる。
JDKは8か11が推奨らしいのでOpenJDK11.0.2を使う

curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz 
curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz.sha256
echo "$(cat openjdk-11.0.2_linux-x64_bin.tar.gz.sha256) openjdk-11.0.2_linux-x64_bin.tar.gz" | sha256sum --check
tar xf openjdk-11.0.2_linux-x64_bin.tar.gz-y 
mv jdk-11.0.2 /usr/lib/java

sudo apt-get install -y maven
nnaka2992nnaka2992

YugabyteDBにはビルド用コンテナは提供されていない。
Dockerfile化したものも置いておく

FROM docker.io/debian:bullseye-slim

RUN apt update &&\
    apt install -y \
        autoconf cmake curl git libtool ninja-build patchelf \
        python3 python3-pip python3-venv rsync zip maven locales &&\
    locale-gen en_US.UTF-8 &&\
    cd /tmp &&\
    curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz  &&\
    curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz.sha256 &&\
    echo "$(cat openjdk-11.0.2_linux-x64_bin.tar.gz.sha256) openjdk-11.0.2_linux-x64_bin.tar.gz" |\
         sha256sum --check &&\
    tar xf openjdk-11.0.2_linux-x64_bin.tar.gz &&\
    mv jdk-11.0.2 /usr/lib/java &&\
    rm /tmp/*
nnaka2992nnaka2992

ansibleでも作った

- hosts: localhost
  become: true
  tasks:
    - name: apt update
      become: true
      apt:
        update_cache: yes
    - name: apt upgrade
      become: true
      apt:
        upgrade: yes
    - name: apt autoremove
      become: true
      apt:
        autoremove: yes
    - name: apt install packages
      become: true
      apt:
        name:
          - autoconf
          - cmake
          - curl
          - git
          - libtool
          - locales
          - ninja-build
          - patchelf
          - pkg-config
          - python3-pip
          - python3-venv
          - rsync
          - zip
          - openjdk-11-jdk
          - maven
          - ccache
          - npm
          - golang-1.18
    - name: gen locale
      shell: locale-gen en_US.UTF-8

nnaka2992nnaka2992

ビルドしてみたらgit cloneしてビルドしてみたところllvm15が足りないと言われたのでllvmをインストールする

sudo apt install clang lldb lld
nnaka2992nnaka2992

llvm15 があるのに同じエラーが出るなんでだ?
amd64だからか ?

sudo ./yb_build.sh  release
~~中略~~
ValueError: Could not find an LLVM release for major LLVM version 15, OS/version ubuntu22.10, architecture x86_64

dpkg -l | egrep -i "clang|llvm"
ii  clang                                            1:15.0-55.1ubuntu1                       amd64        C, C++ and Objective-C compiler (LLVM based), clang binary
ii  clang-15                                         1:15.0.6-3~ubuntu0.22.10.2               amd64        C, C++ and Objective-C compiler
ii  libclang-common-15-dev                           1:15.0.6-3~ubuntu0.22.10.2               amd64        Clang library - Common development package
ii  libclang-cpp15                                   1:15.0.6-3~ubuntu0.22.10.2               amd64        C++ interface to the Clang library
ii  libclang1-15                                     1:15.0.6-3~ubuntu0.22.10.2               amd64        C interface to the Clang library
ii  libllvm15:amd64                                  1:15.0.6-3~ubuntu0.22.10.2               amd64        Modular compiler and toolchain technologies, runtime library
ii  lld:amd64                                        1:15.0-55.1ubuntu1                       amd64        LLVM-based linker
ii  lld-15                                           1:15.0.6-3~ubuntu0.22.10.2               amd64        LLVM-based linker
ii  llvm-15                                          1:15.0.6-3~ubuntu0.22.10.2               amd64        Modular compiler and toolchain technologies
ii  llvm-15-dev                                      1:15.0.6-3~ubuntu0.22.10.2               amd64        Modular compiler and toolchain technologies, libraries and headers
ii  llvm-15-linker-tools                             1:15.0.6-3~ubuntu0.22.10.2               amd64        Modular compiler and toolchain technologies - Plugins
ii  llvm-15-runtime                                  1:15.0.6-3~ubuntu0.22.10.2               amd64        Modular compiler and toolchain technologies, IR interpreter
ii  llvm-15-tools                                    1:15.0.6-3~ubuntu0.22.10.2               amd64        Modular compiler and toolchain technologies, tools

nnaka2992nnaka2992

エラーメッセージで出てるAvailable PackagesにUbuntu22.10がない。
22.04に下げなきゃいけないのだろうか?

WARNING:root:Could not find an LLVM release for major LLVM version 15, OS/version ubuntu22.10, architecture x86_64. Available packages:
nnaka2992nnaka2992

とりあえずUbuntuを22.04にさげたから近日中にリトライする

nnaka2992nnaka2992

YugabyteDBのビルドではデフォルトではサードパーティのものはビルドしないため、それらをダウンロードするためのディレクトリを作成する。

sudo mkdir /opt/yb-build
sudo chown "$USER" /opt/yb-build
nnaka2992nnaka2992

YugabyteDBのGitリポジトリをクローンし、ビルドコマンドを実行する。

git clone https://github.com/yugabyte/yugabyte-db.git
./yb_build.sh release 
nnaka2992nnaka2992

YugabyteDBのConfigure、エラーが出ても具体的に何を入れてほしいのかかかれないの辛い