MongoDB 最新版のインストール(ソースコードを使用)(Ubuntu 上)

Ubuntu で,MongoDB のソースコードを Bazel でビルドしてインストールする手順を説明する.手順は MongoDB 公式のビルド手順の記載による.

https://github.com/mongodb/mongo/blob/master/docs/building.md

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

ビルドの要件

MongoDB のソースコードのビルドには次が必要である。

ビルドには長い時間がかかる。動作するバイナリを入手するだけであれば,MongoDB 社が配布するビルド済みバイナリ(apt パッケージ等)を用いる方法がある。

C/C++ コンパイラと Make とビルドツールのインストール

ソフトウェアをソースコードからビルドするには、C/C++コンパイラ (通常はGCC) や make ユーティリティといった開発ツールが重要である。Ubuntuでは、これらのツールは build-essential パッケージにまとめられている。インストールするには,端末で,次のコマンドを実行する。

sudo apt -y install build-essential libtool texinfo dpkg-dev pkg-config

libtool, texinfo, dpkg-dev, pkg-config は、より複雑なビルドやパッケージ管理の際に役立つ開発関連ツールである。

Ubuntu 24.04 の build-essential が導入する GCC は 13 であり,C++20 対応の点で公式に検証されたバージョン(GCC 14.2 以降)より古い。GCC 14 を導入し,ビルドで使用するコンパイラを切り替えるには,端末で,次のコマンドを実行する。

sudo apt -y install gcc-14 g++-14
export CC=/usr/bin/gcc-14
export CXX=/usr/bin/g++-14

Python3 開発用ファイル,pip, setuptools, venv のインストール(Ubuntu 上)

Python のインストールは行わない(Ubuntu のシステム Python を用いる.)

Python, pip のコマンドでの起動のまとめ.

Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.

Ubuntu での Python 開発環境(JupyterLab, spyder, nteract)のインストール: 別ページ »で説明

Python3 開発用ファイル,pip, setuptools, venv のインストール

端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-setuptools python3-venv build-essential

MongoDB のインストール(ソースコードを使用)(Ubuntu 上)

MongoDB のビルドのためのソフトウエアのインストール

libcurl,lzma,OpenSSL の開発用ファイルと,ソースコードの取得に用いる git をインストールする。端末で,次のコマンドを実行する。

sudo apt -y install git libcurl4-openssl-dev liblzma-dev libssl-dev python3-dev

ソースコードのダウンロードとビルド

  1. MongoDB のソースコードのダウンロード
    cd /usr/local
    sudo rm -rf mongo
    sudo git clone --recursive https://github.com/mongodb/mongo
    sudo chown -R $USER mongo
    
  2. ビルドツール Bazel のインストール

    MongoDB のビルドシステムは Bazel である(かつて用いられていた SCons は使用しない)。ソースコードに同梱されているスクリプトで Bazel を導入する。

    cd /usr/local/mongo
    python3 buildscripts/install_bazel.py
    export PATH=~/.local/bin:$PATH
    
  3. ソースコードからのビルド

    終了までしばらく待つ.--disable_warnings_as_errors=True は,コンパイラの警告でビルドが停止することを避けるためのオプションである。

    cd /usr/local/mongo
    bazel build install-mongod --disable_warnings_as_errors=True
    

    サーバ(mongod),mongos,シェルを含む一式をビルドするときは,次のコマンドを実行する。

    cd /usr/local/mongo
    bazel build install-devcore --disable_warnings_as_errors=True
    
  4. 終了の確認

    エラーメッセージが出ていないこと.ビルドされたバイナリは /usr/local/mongo/bazel-bin/install/bin に配置される。バージョンを表示して確認する。

    /usr/local/mongo/bazel-bin/install/bin/mongod --version
    

MongoDB の起動チェックと動作確認

  1. mongod の起動チェック

    データベース用のディレクトリを作成し,mongod を起動する。エラーメッセージが出ていないこと.waiting for connections on port 27017 と表示されれば接続を受け付ける状態である。

    sudo mkdir -p /var/mongodb
    sudo chown -R $USER /var/mongodb
    sudo chmod 775 /var/mongodb
    /usr/local/mongo/bazel-bin/install/bin/mongod --dbpath /var/mongodb
    
  2. テスト実行

    mongod を起動したままにして,別の端末を開き,次のコマンドを実行する。MongoDB Shell(mongosh)は MongoDB 社の apt リポジトリから入手する。

    sudo apt -y install gnupg curl
    curl -fsSL https://pgp.mongodb.com/server-8.0.asc | \
      sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
    echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install mongodb-mongosh
    

    mongosh で接続し,データの登録と検索を行う。

    mongosh
    db.test.insertOne( { a: 1 } )
    db.test.find()
    exit
    

    mongod を終了するときは,mongod を実行している端末で Ctrl+C を押す。