Ubuntu 22.04/24.04/26.04 開発・研究環境構築ガイド

【概要】本ガイドでは、Ubuntu 22.04 LTS、24.04 LTS、26.04 LTSにおける各種ソフトウェアのインストール手順を説明する。プログラミング環境(C/C++、Python、Java、R、Node.js)、NVIDIA GPU環境(ドライバ、CUDA Toolkit、cuDNN)、データベース(PostgreSQL、SQLite、Redis、MongoDB)、人工知能・機械学習ライブラリ(TensorFlow、PyTorch、ONNX Runtime、InsightFace、MediaPipe Tasks)、3次元コンピュータグラフィックス・空間データ処理・メディア処理ツール、エディタ・統合開発環境、日本語環境、ゲーム環境を扱う。パッケージ名やバージョンがリリースにより異なる箇所は、その差異を明記する。最終章では、導入したソフトウェアが利用可能な状態かを「OK」「NG」で判定するスクリプトを示す。

【この記事の対象読者】Ubuntu 22.04 LTS、24.04 LTS、26.04 LTS上で開発・研究を行う大学生や技術者。C/C++やPythonによるプログラミング、人工知能・機械学習、3次元コンピュータグラフィックス制作、データベース管理などの環境を構築したい人を対象としている。Windows環境向けの情報は別ページ »で説明している。

【一括構築スクリプトとの対応】 本ガイドの関連ページとして、Ubuntu 22.04/24.04/26.04 一括構築スクリプト別ページで説明)を公開している。ただし、次は、このスクリプトでは自動インストールしないことにしている。本ガイドに手動の導入手順を記載する。

Pythonパッケージはシステム環境ではなく~/venvs/myproject_env~/venvs/mediapipe_envの仮想環境に導入する。

【重要概念】

目次

  1. 対象リリースと導入の前提
  2. 開発基盤(コンパイラ、ビルドツール、バージョン管理、端末ツール)
  3. NVIDIA GPU環境(ドライバ、CUDA Toolkit、cuDNN)
  4. Python環境(pyenv、venv、パッケージ)
  5. 数値計算ライブラリと人工知能・機械学習ライブラリ
  6. エディタと統合開発環境
  7. Java、R、Node.js
  8. データベースと管理ツール
  9. メディア処理、3次元コンピュータグラフィックス、空間データ処理、コンピュータビジョン
  10. ブラウザ、ネットワーク、遠隔接続、セキュリティ、システムユーティリティ
  11. 日本語環境と文書・テキスト処理
  12. ゲーム環境とゲームエンジン
  13. インストール結果の確認(OK/NG判定)

前提事項

【サイト内のUbuntu関連ページ】

【外部リソース】

1. 対象リリースと導入の前提

1.1 対象リリースの概要

本ガイドで対象とする3つのLTSリリースの基本情報を以下にまとめる。いずれも標準サポート期間はリリースから5年間であり、Ubuntu Proの契約によりESM(Expanded Security Maintenance)で10年間に延長できる。

Ubuntu 22.04 LTS(Jammy Jellyfish)

Ubuntu 24.04 LTS(Noble Numbat)

Ubuntu 26.04 LTS(Resolute Raccoon)

上記は標準リポジトリのバージョンである。PPAやソースビルド、Python仮想環境などでは異なるバージョンを利用できる。いずれのリリースもWSL(Windows Subsystem for Linux)環境での利用に対応している。

1.2 Ubuntuのインストールについて

Ubuntu Desktopのインストールは、公式サイトからISOイメージをダウンロードし、USBメモリにインストールメディアを作成して起動し、インストーラの指示に従ってパーティション設定とユーザ作成を行うという流れである。デスクトップ版イメージのサイズは、22.04が約4GB、24.04および26.04が約6GBである(ポイントリリースにより変動する)。

インストール時に「グラフィックスとWi-Fiハードウェア、追加のメディアフォーマットのサードパーティ製ソフトウェアをインストールする」を選択すると、NVIDIAドライバや追加のメディアコーデックが同時に導入される。

参考: Ubuntu公式チュートリアル(英語) »

1.3 システム更新とリリースの確認

Ubuntuインストール後、まずシステム全体を最新の状態に更新する。端末を開き、次のコマンドを実行する。

sudo apt update
sudo apt full-upgrade -y

カーネルなどの重要な構成要素が更新された場合、更新内容を有効にするために再起動する。

sudo /sbin/shutdown -r now

本ガイドのコマンドには、リリースごとに指定内容が異なるものがある。実行中のリリースのバージョン番号とコードネームは、次のコマンドで確認できる。

lsb_release -a
# コードネームのみを表示(jammy / noble / resolute)
lsb_release -cs

1.4 ソフトウェアのインストール方法

Ubuntuでアプリケーションを追加する方法は次の5通りである。本ガイドでは、apt管理下に置けるものはaptを優先し、公式が他形態のみで配布するものはsnapやdebファイル、書庫を用いる。

1.5 OpenSSHサーバのセットアップ

他のコンピュータからSSHプロトコルを使って遠隔ログインする場合に設定する。

sudo apt update
sudo apt install -y openssh-server
# SSHサービスの起動状態を確認
sudo systemctl status ssh
# ファイアウォール(ufw)でSSHポート(通常22)を許可(ufwが有効な場合)
sudo ufw allow ssh
sudo ufw status

Ubuntu 24.04以降のOpenSSHはsocket起動方式(ssh.socket)である。26.04のOpenSSH 10系では、DSA署名アルゴリズムのサポートが削除され、ポスト量子鍵交換方式が既定で有効になっている。

パスワード認証を無効にし、公開鍵認証を使用することで、パスワードの推測による不正ログインを防ぐことができる。設定手順は別ページ »で説明している。

2. 開発基盤(コンパイラ、ビルドツール、バージョン管理、端末ツール)

2.1 C/C++コンパイラとmake

build-essentialはコンパイルに必要なパッケージ一式(gcc、g++、make、libc開発ファイル等)を含む。

sudo apt update
sudo apt install -y build-essential gcc g++ make libtool pkg-config dpkg-dev

既定のGCCバージョンは、22.04がGCC 11、24.04がGCC 13、26.04がGCC 15である。別バージョンが必要な場合は、gcc-13gcc-14のようにバージョン付きパッケージをインストールし、update-alternativesで切り替えるか、CCCXX環境変数で明示的に指定する。

gcc --version
g++ --version

C/C++コンパイラの動作確認

  1. エディタ(例: nano /tmp/hello.c)で以下の内容のファイル/tmp/hello.cを作成する。
    #include <stdio.h>
    #include <stddef.h>
    
    int main() {
        printf("Hello, C World!\n");
        printf("sizeof(size_t) on this system = %zu bytes\n", sizeof(size_t));
        return 0;
    }
    
  2. コンパイルして実行する。
    cd /tmp
    gcc hello.c -o hello_c_test
    ./hello_c_test
    

    「Hello, C World!」「sizeof(size_t) on this system = 8 bytes」(数値は環境により異なる)のように表示されれば、コンパイラは正しく動作している。

2.2 その他のビルド関連ツールと開発用ライブラリ

自動化ツール、コード生成器、並列ビルドツール、およびソースビルドで必要になる開発用ライブラリをまとめて導入する。gfortranはLAPACK等を用いる数値計算ライブラリのビルドに、mpi-default-devは並列計算プログラムのビルドに、ccacheは再ビルドの高速化に用いる。

sudo apt update
sudo apt install -y gfortran cmake ninja-build ccache autoconf automake bison flex swig scons llvm
sudo apt install -y libc6-dev libncurses-dev libreadline-dev libffi-dev libssl-dev zlib1g-dev libbz2-dev liblzma-dev libyaml-dev libpcre2-dev libglib2.0-dev libxml2 libxml2-dev libxslt1-dev libxmlsec1-dev libusb-1.0-0-dev libpcap-dev tk-dev mpi-default-dev

2.3 バージョン管理、ファイル取得、書庫操作

sudo apt update
sudo apt install -y git subversion curl wget ca-certificates gnupg dirmngr lsb-release software-properties-common
sudo apt install -y p7zip-full unzip zip xz-utils rsync trash-cli

trash-put(trash-cli)はファイルをごみ箱へ移動するコマンドであり、rmの代替として誤削除を避けられる。

2.4 端末多重化ツールとエディタ(Emacs)

長時間の処理を切断に強い形で実行するため、端末多重化ツールを導入する。tmuxscreenはセッションを保持し、byobuはそれらの前面インタフェースである。

sudo apt update
sudo apt install -y tmux screen byobu
sudo apt install -y emacs
# 日本語入力Mozcと連携する場合
sudo apt install -y emacs-mozc

3. NVIDIA GPU環境(ドライバ、CUDA Toolkit、cuDNN)

NVIDIA製GPUを搭載したシステムでは、ドライバとCUDA Toolkitをインストールすることで、GPUを活用した並列計算が可能になる。機械学習、深層学習、科学技術計算、3次元グラフィックスレンダリングなどの分野で利用される。cuDNNは、深層学習の畳み込み演算などをGPU上で実行するためのライブラリである。

NVIDIAドライバ、CUDA Toolkit、cuDNN、機械学習ライブラリの間にはバージョン互換性要件があるため、導入前に各公式ドキュメントで対応表を確認する。NVIDIAはUbuntu 22.04(ubuntu2204)、24.04(ubuntu2404)、26.04(ubuntu2604)向けのaptリポジトリを提供している。

推奨アプローチの概要

  1. NVIDIAドライバ: 「ソフトウェアとアップデート」→「追加のドライバー」またはubuntu-driversコマンドを用いる。
  2. CUDA ToolkitとcuDNN:
    • PyTorch・TensorFlowを使う場合: これらのpipホイールはCUDAランタイムライブラリを同梱しているため、システム側にはNVIDIAドライバのみを導入すればよい。CUDA Toolkitの個別インストールは不要である。
    • CUDAでのプログラム開発(nvccが必要な場合): NVIDIAのaptリポジトリからCUDA ToolkitとcuDNNを導入する。導入コマンドはNVIDIA CUDA Downloadsでリリースを選択して生成できる。
    • Docker: NVIDIA Container Toolkitを導入すると、CUDA関連ライブラリをコンテナ内に閉じ込められるため、システム側の構成を変更せずに複数バージョンを併用できる。

3.1 NVIDIAドライバのインストール

GUIを使う場合は「設定」→「システム」→「管理」→「ソフトウェアとアップデート」→「追加のドライバー」タブを開き、推奨されるプロプライエタリドライバを選択して「変更の適用」をクリックする。Ubuntu 26.04では「ソフトウェアとアップデート」が既定で導入されていないため、sudo apt install -y software-properties-gtkを実行するか、次のコマンドラインの手順を用いる。

sudo apt install -y ubuntu-drivers-common
# システムが認識しているGPUと利用可能なドライバを表示
ubuntu-drivers devices
# 推奨されるドライバを自動的にインストール
sudo ubuntu-drivers install
# ドライバの有効化のためにシステムを再起動
sudo /sbin/shutdown -r now

再起動後、次のコマンドでGPU情報とドライババージョン、ドライバが対応するCUDAバージョンが表示されれば成功である。セキュアブートが有効な場合は、再起動時のMOK Managerで鍵の登録を完了させる必要がある。

nvidia-smi

3.2 CUDA Toolkit / cuDNNのインストール(aptリポジトリ)

NVIDIAのネットワークリポジトリを追加すると、CUDA ToolkitとcuDNNをaptで管理できる。distro変数には実行中のリリースに対応する値(ubuntu2204ubuntu2404ubuntu2604)が入る。

distro=ubuntu$(lsb_release -rs | tr -d .)
arch=x86_64
echo ${distro}/${arch}
wget https://developer.download.nvidia.com/compute/cuda/repos/${distro}/${arch}/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update

キーリングパッケージのファイル名(バージョン番号)は更新されることがあるため、NVIDIA CUDA Downloadsで生成されるコマンドで確認する。

リポジトリ追加後、CUDA Toolkitをインストールする。ドライバを既に導入済みの場合は、ドライバを含まないcuda-toolkit-<メジャー>-<マイナー>形式のパッケージを指定する。提供されるバージョンはリリースにより異なる(26.04向けリポジトリではCUDA 13系が提供される)。

# 利用可能なCUDA Toolkitパッケージの一覧を表示し、導入するバージョンを決める
apt-cache search '^cuda-toolkit-[0-9]'
# 例: CUDA Toolkit 13.3 をインストールする場合(ドライバは変更しない)
sudo apt install -y cuda-toolkit-13-3

環境変数を設定する(~/.bashrcまたは/etc/profile.d/cuda.shに記述する)。パスは実際のインストール先に合わせる。

export CUDA_HOME=/usr/local/cuda
export PATH=${CUDA_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}

シェルを再起動するかsource ~/.bashrcを実行し、確認する。

nvcc --version

cuDNNは、同じネットワークリポジトリからインストールできる。パッケージ名は使用するCUDAのメジャーバージョンに対応する。

# CUDA 12系を使用する場合
sudo apt install -y cudnn9-cuda-12
# CUDA 13系を使用する場合
# sudo apt install -y cudnn9-cuda-13

cuDNN 9では、同時にインストールできるのは1つのCUDAバージョン向けパッケージのみである。詳細はcuDNN Installation Guideに記載されている。

参考: runfile/tarballによるCUDA Toolkit/cuDNNインストール手順例

aptリポジトリを使用せず、特定バージョンを任意の場所に配置したい場合の手順である。runfileインストーラはドライバも同梱しているため、既存ドライバを上書きしないよう、インストール対象の選択でDriverのチェックを外す。

  1. CUDA Toolkit(runfile):
    1. NVIDIA CUDA Toolkit Archiveから、OS: Linux、Arch: x86_64、Dist: Ubuntu、使用するリリース、Installer: runfile(local)を選択し、.runファイルをダウンロードする。
    2. 実行権限を付与して実行する。対話モードで、Driverのインストールは「No」を選択し、Toolkitのみをインストールする。
      cd /path/to/downloaded/file/
      chmod +x cuda_*.run
      sudo ./cuda_*.run
      
    3. 環境変数(CUDA_HOMEPATHLD_LIBRARY_PATH)を設定し、nvcc --versionで確認する。
  2. cuDNN(tarball):
    1. NVIDIA cuDNN Downloadsから、インストールしたCUDA Toolkitバージョンに対応するcuDNN Library for Linux(x86_64 Tar)をダウンロードする。
    2. tarファイルを展開する。
      tar -xf cudnn-*.tar.xz
      
    3. 展開されたディレクトリ(includelib)内のファイルを、CUDA Toolkitのインストールディレクトリにコピーする。
      cd cudnn-linux-x86_64-*/
      sudo cp include/cudnn*.h ${CUDA_HOME}/include/
      sudo cp lib/libcudnn* ${CUDA_HOME}/lib64/
      sudo chmod a+r ${CUDA_HOME}/include/cudnn*.h ${CUDA_HOME}/lib64/libcudnn*
      

3.3 GPU監視ツール(Intel GPUを含む)

NVIDIA GPUの監視はnvidia-smiで行う。Intel統合GPUの利用状況はintel_gpu_topで確認する。

sudo apt update; sudo apt install -y intel-gpu-tools

4. Python環境(pyenv、venv、パッケージ)

システムのPython環境とは別に、プロジェクトごとに独立した環境を構築することで、依存関係の衝突を防ぎ、再現性を高めることができる。Ubuntu 24.04以降ではPEP 668により、システムPython環境へのpip installは既定で拒否されるため、仮想環境の利用が前提となる。

各リリースの標準Pythonは、22.04が3.10、24.04が3.12、26.04が3.14である。使用したいライブラリがビルド済みホイールを提供しているPythonバージョンを、pyenvで用意して利用する。

4.1 システムPython環境と基本ツール

システム環境のPythonはOSの各種ツールからも利用される。ここでは、パッケージのビルドや仮想環境の作成に必要な基本ツールだけを導入する。

sudo apt update
sudo apt install -y python3 python3-dev python3-pip python3-setuptools python3-venv python3-tk

apt版Pythonパッケージの扱い: python3-numpyのようなapt版パッケージは、debパッケージとして依存関係が調整されているため、apt管理下のソフトウェアと組み合わせて使う場合に適する。一方、仮想環境にも同じライブラリを入れると二重管理になる。本ガイドでは、他のaptパッケージやシステムのツールから利用されるものだけをapt版で入れ、開発・研究用のパッケージは仮想環境に入れる方針を採る。apt版で導入するのは次の4つである。

sudo apt install -y python3-psycopg2 python3-gdal python3-opencv python3-mecab

TensorFlow、PyTorch、ONNX Runtime、InsightFace、MediaPipeなどは標準リポジトリに含まれないため、いずれも仮想環境にpip installでインストールする。

4.2 pyenvのインストールと設定

pyenvは、複数のPythonバージョンをソースからビルドして保持し、切り替えて利用するためのツールである。

  1. 依存関係のインストール
    sudo apt update
    sudo apt install -y --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev git
    
  2. pyenvのインストール
    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
    
  3. シェル設定 ~/.bashrc等に次の行を追加する。
    export PYENV_ROOT="$HOME/.pyenv"
    command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    
  4. シェル再起動 exec "$SHELL"を実行する。

4.3 Pythonバージョンのインストールと仮想環境の作成

共有ライブラリを必要とするパッケージのために--enable-sharedを付けてビルドする。ソースからのビルドが行われるため、完了までに時間がかかる。

pyenv install --list          # インストール可能なバージョンの一覧
CONFIGURE_OPTS="--enable-shared" pyenv install 3.13
# MediaPipe用(ホイールが提供されるバージョンに合わせる)
CONFIGURE_OPTS="--enable-shared" pyenv install 3.12
pyenv versions                # インストール済みバージョンの確認
pyenv global 3.13

仮想環境を作成し、有効化する。

pyenv shell 3.13
mkdir -p ~/venvs
python -m venv ~/venvs/myproject_env
source ~/venvs/myproject_env/bin/activate
pip install --upgrade pip setuptools wheel
# 無効化する場合
# deactivate

4.4 仮想環境内へのパッケージインストール

仮想環境を有効化した状態でpip installを実行する。パッケージはシステム全体ではなく、現在の仮想環境内にのみインストールされる。

  1. 開発環境(JupyterLab、Spyder等)
    pip install jupyterlab notebook spyder ipykernel ipython
    python -m ipykernel install --user --name=myproject_env --display-name="Python (myproject_env)"
    
  2. データサイエンス・数値計算・文書生成
    pip install numpy scipy pandas matplotlib scikit-learn scikit-image statsmodels seaborn sympy Pillow h5py plotly requests beautifulsoup4 lxml openpyxl xlsxwriter numexpr bottleneck sphinx
    
  3. OpenCV、dlib(Pythonバインディング)
    pip install opencv-python opencv-contrib-python dlib
    python -c "import cv2; print(cv2.__version__)"
    
  4. データベース接続
    pip install psycopg2-binary
    
  5. 空間データ系パッケージ GDALのPythonバインディングをビルドするには、システム側のGDAL開発ファイルが必要である。バインディングのバージョンはシステムのGDALに合わせる。
    sudo apt install -y libgdal-dev gdal-bin
    gdal-config --version
    pip install GDAL==$(gdal-config --version)
    pip install Fiona geopandas shapely pyproj rtree folium
    

機械学習フレームワーク(TensorFlow、PyTorch、ONNX Runtime)と顔・姿勢推定ライブラリの導入は5章で扱う。

5. 数値計算ライブラリと人工知能・機械学習ライブラリ

5.1 OpenBLAS、LAPACK、その他の数値計算・最適化ライブラリ

NumPyやSciPyなどは、内部でBLASやLAPACKを利用して行列演算を実行する。GSLは特殊関数・乱数・数値積分、FFTWは高速フーリエ変換、GLPKは線形計画法、SuiteSparseは疎行列分解、ARPACKは大規模固有値問題、Qhullは凸包計算、Eigenは行列演算のC++テンプレートライブラリである。gnuplotとGraphVizは結果の可視化に用いる。

sudo apt update
sudo apt install -y libopenblas-dev liblapack-dev
sudo apt install -y libgsl-dev libfftw3-dev libglpk-dev glpk-utils libsuitesparse-dev libarpack2-dev libqhull-dev libeigen3-dev gnuplot graphviz libgraphviz-dev

5.2 Intel oneAPI MKL(Math Kernel Library)

Intelが提供する、Intel CPU向けに最適化された数値演算ライブラリ群である。BLAS/LAPACK互換のインタフェースを持つ。必要な場合は次の手順で導入する。

  1. Intelの公開鍵とAPTリポジトリを登録する。リポジトリはディストリビューションに依存しないall mainである。
    sudo apt update
    sudo apt install -y wget gnupg ca-certificates
    sudo install -d -m 0755 /etc/apt/keyrings
    wget -qO- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo gpg --dearmor -o /etc/apt/keyrings/intel-sw-products.gpg
    echo "deb [signed-by=/etc/apt/keyrings/intel-sw-products.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
    sudo apt update
    
  2. MKLをインストールする。実行だけに使う場合はintel-oneapi-mkl、コンパイル(ヘッダファイルとリンク用ライブラリ)も行う場合はintel-oneapi-mkl-develを指定する。
    sudo apt install -y intel-oneapi-mkl-devel
    
  3. 環境変数を設定する。導入先は/opt/intel/oneapiである。使用するシェルごとに次を実行する(~/.bashrcに追記してもよい)。
    source /opt/intel/oneapi/setvars.sh
    # MKLのみを対象にする場合
    # source /opt/intel/oneapi/mkl/latest/env/vars.sh
    echo ${MKLROOT}
    
  4. 確認する。ライブラリが検出できることを確かめる。
    ls ${MKLROOT}/lib
    pkg-config --exists mkl-dynamic-lp64-iomp && echo OK
    

NumPyやSciPyからMKLを使う場合は、MKLに対してリンクされたホイール(Intelが配布するもの等)を用いるか、ソースからビルドする。詳細はIntel公式のダウンロードページで確認する。

5.3 TensorFlow

tensorflow[and-cuda]は、対応するCUDA関連ライブラリをpipパッケージとして同時に導入する。NVIDIAドライバはシステム側に必要である。GPUを使わない場合はtensorflowを指定する。対応するドライバ・CUDAバージョンとPythonバージョンはTensorFlow公式ドキュメントで確認する。

source ~/venvs/myproject_env/bin/activate
# GPUを使う場合
pip install tensorflow[and-cuda]
# CPUのみの場合
# pip install tensorflow
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

5.4 PyTorch

PyTorch公式サイト(Get Started)で、OS: Linux、Package: Pip、Language: Python、Compute Platform: CUDA X.Yを選択し、表示されるコマンドを実行する。PyPI既定のホイールでも動作するが、特定のCUDA版に合わせる場合は--index-urlを指定する。以下はcu128ビルドの例である。

source ~/venvs/myproject_env/bin/activate
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda)"

5.5 ONNX Runtime

ONNX形式のモデルを実行する推論基盤である。InsightFaceが内部で用いる。GPU推論を行う場合はonnxruntime-gpu、CPU推論のみの場合はonnxruntimeをインストールする。

source ~/venvs/myproject_env/bin/activate
pip install onnxruntime-gpu     # GPU推論(NVIDIAドライバが必要)
# pip install onnxruntime       # CPU推論のみ
python -c "import onnxruntime; print(onnxruntime.get_available_providers())"

PyPIのonnxruntime-gpuが既定で対象とするCUDAのメジャーバージョンは、リリースによって変わる(1.19以降はCUDA 12系が既定であったが、新しい版ではCUDA 13系ビルドが既定となる)。環境のCUDA版に合わせる場合は、ONNX Runtime公式のインストールページに記載された専用のインデックスURLを指定する。

5.6 InsightFace(顔検出・顔認識)

InsightFaceは、顔検出(SCRFD)、顔特徴点推定(2d106、3d68)、顔認識用の埋め込みベクトル生成(ArcFace系)、性別・年齢推定を提供するライブラリである。

ライブラリ本体のコードはMITライセンスであるが、提供される学習済みモデル(buffalo_l等)は非商用の研究目的に限定されている。商用利用では、自前で学習したモデルまたは別途ライセンスを得たモデルを~/.insightface/models/に配置して使用する。

source ~/venvs/myproject_env/bin/activate
pip install --upgrade pip setuptools wheel
pip install insightface opencv-python numpy

動作確認 モデルパック(既定はbuffalo_l)は初回実行時に~/.insightface/models/へ自動でダウンロードされる。エディタで以下の内容のファイルinsightface_test.pyを作成する。

import cv2
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image

app = FaceAnalysis(name='buffalo_l',
                   providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
# GPUを使う場合は ctx_id=0、CPUのみの場合は ctx_id=-1
app.prepare(ctx_id=0, det_size=(640, 640))

img = ins_get_image('t1')          # 付属のサンプル画像
faces = app.get(img)
print('detected faces:', len(faces))
for f in faces:
    print('bbox:', f.bbox.astype(int),
          'age:', f.age, 'sex:', f.sex,
          'embedding dim:', f.embedding.shape)

rimg = app.draw_on(img, faces)
cv2.imwrite('./t1_output.jpg', rimg)
source ~/venvs/myproject_env/bin/activate
python insightface_test.py

検出された顔の数と属性が表示され、t1_output.jpgが生成されれば、正しく動作している。顔認識(同一人物判定)は、各顔のembedding(512次元ベクトル)どうしのコサイン類似度を計算して行う。

5.7 MediaPipe Tasks(顔特徴点、手、姿勢、物体検出)

MediaPipeは、顔特徴点検出(Face Landmarker)、手の検出(Hand Landmarker)、姿勢推定(Pose Landmarker)、物体検出(Object Detector)、画像分割(Image Segmenter)などをオンデバイスで実行するライブラリである。現行のAPIはMediaPipe Tasks API(mediapipe.tasks)である。旧来のmediapipe.solutions(Legacy Solutions)はサポートが終了しており、本ガイドでは扱わない。

MediaPipeのビルド済みホイールは特定のPythonバージョン向けにのみ提供される(Python 3.13以降向けのホイールは提供されていない)。PyPIのmediapipeページで対応バージョンを確認し、対応するPythonをpyenvで用意して専用の仮想環境を作成する。以下はPython 3.12を用いる例である。

pyenv shell 3.12
python -m venv ~/venvs/mediapipe_env
source ~/venvs/mediapipe_env/bin/activate
pip install --upgrade pip setuptools wheel
pip install mediapipe opencv-python numpy
python -c "import mediapipe as mp; print(mp.__version__)"

MediaPipe Tasksでは、タスクごとに学習済みモデルファイル(.task)を明示的にダウンロードして指定する。Face Landmarkerのモデルを取得する。

mkdir -p ~/mediapipe_models
cd ~/mediapipe_models
wget -O face_landmarker.task https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task

他のタスクのモデルファイルのURLは、MediaPipe Solutionsのタスク別ドキュメントに記載されている。

動作確認 エディタで以下の内容のファイルmediapipe_face_test.pyを作成する。test.jpgには顔が写った画像ファイルを指定する。

import os
import mediapipe as mp
from mediapipe.tasks import python as mp_python
from mediapipe.tasks.python import vision

model_path = os.path.expanduser('~/mediapipe_models/face_landmarker.task')

options = vision.FaceLandmarkerOptions(
    base_options=mp_python.BaseOptions(model_asset_path=model_path),
    running_mode=vision.RunningMode.IMAGE,
    num_faces=1,
    output_face_blendshapes=True,
    output_facial_transformation_matrixes=True)

with vision.FaceLandmarker.create_from_options(options) as landmarker:
    image = mp.Image.create_from_file('test.jpg')
    result = landmarker.detect(image)
    print('detected faces:', len(result.face_landmarks))
    if result.face_landmarks:
        lm = result.face_landmarks[0]
        print('landmarks per face:', len(lm))
        print('first landmark (x, y, z):', lm[0].x, lm[0].y, lm[0].z)
source ~/venvs/mediapipe_env/bin/activate
python mediapipe_face_test.py

検出された顔の数と特徴点数(Face Landmarkerでは1顔あたり478点)が表示されれば、正しく動作している。動画やカメラ映像を扱う場合は、running_modeVIDEOまたはLIVE_STREAMを指定し、detect_for_video()またはdetect_async()を使用する。

5.8 dlib(C++ライブラリ)

Python版(pip install dlib)とは別に、C++から使う共有ライブラリをソースからビルドして導入する。標準リポジトリには開発用パッケージが無いため、GitHubから取得する。

sudo apt install -y build-essential cmake libopenblas-dev liblapack-dev libx11-dev
sudo install -d -m 0755 /usr/local/src
sudo git clone --depth 1 https://github.com/davisking/dlib.git /usr/local/src/dlib
sudo cmake -S /usr/local/src/dlib -B /usr/local/src/dlib/build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON
sudo cmake --build /usr/local/src/dlib/build -j$(nproc)
sudo cmake --install /usr/local/src/dlib/build
sudo ldconfig
ldconfig -p | grep libdlib

6. エディタと統合開発環境

6.1 Geany(軽量統合開発環境)

sudo apt update; sudo apt install -y geany geany-plugins

6.2 Visual Studio Code

拡張機能により多様な言語の開発に対応する。Microsoftの公式APTリポジトリを登録するとaptで更新を管理できる。

sudo install -d -m 0755 /etc/apt/keyrings
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /etc/apt/keyrings/microsoft.gpg
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
sudo apt update
sudo apt install -y code

公式サイトから.debパッケージをダウンロードし、sudo apt install ./code_*.debで導入することもできる。拡張機能はエディタ内からインストールする(例: Python、C/C++、Java Extension Pack、Remote - SSH、Docker、GitLens)。

6.3 Sublime Text

公式APTリポジトリ手順に従い、公開鍵とリポジトリを登録してインストールする。

sudo install -d -m 0755 /etc/apt/keyrings
wget -qO- https://download.sublimetext.com/sublimehq-pub.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/sublimehq.gpg
echo "deb [signed-by=/etc/apt/keyrings/sublimehq.gpg] https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt update
sudo apt install -y sublime-text

6.4 標準のテキストエディタ

GNOMEの標準テキストエディタは、22.04がgedit、24.04以降がgnome-text-editorである。Lubuntu(LXQt)ではfeatherpadを用いる。

# Ubuntu 22.04
# sudo apt install -y gedit
# Ubuntu 24.04 / 26.04
sudo apt install -y gnome-text-editor
# Lubuntu
# sudo apt install -y featherpad

6.5 Eclipse IDE

Java開発などで利用される統合開発環境である。apt版(eclipseパッケージ)はUbuntuのリリース時点のバージョンで固定されるため、公式サイトで公開中のリリース名を確認し、tar.gzを展開して用いる。以下は「Eclipse IDE for Enterprise Java and Web Developers」の例であり、RELには公開中のリリース名(例: 2026-06)を指定する。

REL=2026-06
wget -O /tmp/eclipse-jee.tar.gz https://download.eclipse.org/technology/epp/downloads/release/${REL}/R/eclipse-jee-${REL}-R-linux-gtk-x86_64.tar.gz
cd /usr/local && sudo tar -xzf /tmp/eclipse-jee.tar.gz
sudo ln -sf /usr/local/eclipse/eclipse /usr/local/bin/eclipse
eclipse &

6.6 BlueJ、Greenfoot(教育用Java環境)

プログラミング入門向けのJava開発環境である。必要な場合は次の手順で導入する。

  1. BlueJ公式サイトおよびGreenfoot公式サイトのダウンロードページを開き、「Debian/Ubuntu」向けの.debファイルをダウンロードする。
  2. ダウンロードしたディレクトリで、依存関係を解決しながら導入する。ファイル名は実際にダウンロードしたものに合わせる。
    cd ~/Downloads
    sudo apt install ./BlueJ-linux-*.deb
    sudo apt install ./Greenfoot-linux-*.deb
    
  3. 導入後はbluejgreenfootコマンド、またはアプリケーションメニューから起動する。いずれもJDKを必要とするため、7.1節のOpenJDKを先に導入しておく。

7. Java、R、Node.js

7.1 OpenJDK

オープンソースのJava開発キットである。default-jdkが指すバージョンは、22.04がOpenJDK 11、24.04がOpenJDK 21、26.04がOpenJDK 25である。特定バージョンが必要な場合はバージョン付きパッケージを指定する。

sudo apt update
sudo apt install -y default-jdk default-jre
# 特定バージョンを使う場合の例
# sudo apt install -y openjdk-21-jdk
java -version
javac -version

JAVA_HOME環境変数は多くのビルドツールが自動検出するが、明示的に指定する場合はインストール先(例: /usr/lib/jvm/java-21-openjdk-amd64)を設定する。複数のJDKを使い分ける場合はsudo update-alternatives --config javaを用いる。

# /etc/profile.d/java.sh などに記述する
export JAVA_HOME=/usr/lib/jvm/default-java
export PATH=${JAVA_HOME}/bin:${PATH}

7.2 Rシステム(CRANリポジトリ)

CRAN(The Comprehensive R Archive Network)のUbuntuリポジトリを利用すると、Ubuntu標準リポジトリよりも新しいRを、apt管理下で利用できる。<codename>-cran40という形式で、jammy / noble / resoluteのいずれにも提供されている。

sudo apt update
sudo apt install -y --no-install-recommends software-properties-common dirmngr wget
# CRAN公開鍵の登録
sudo install -d -m 0755 /etc/apt/keyrings
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo gpg --dearmor -o /etc/apt/keyrings/cran.gpg
# CRANリポジトリの登録(コードネームは自動取得する)
echo "deb [signed-by=/etc/apt/keyrings/cran.gpg] https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/" | sudo tee /etc/apt/sources.list.d/cran.list
sudo apt update
sudo apt install -y r-base r-base-dev r-recommended r-mathlib littler libcurl4-openssl-dev
R --version

RからJavaを呼び出すパッケージ(rJava等)を使う場合は、JDK導入後にsudo R CMD javareconfを実行してJava連携を再設定する。

7.3 RStudio Desktop

Rのための統合開発環境である。公式サイトでUbuntu 22+/Debian 12+向けの現行版のファイル名を確認し、.debパッケージをダウンロードして導入する。配布されているのはjammy向けビルドであり、公式対応はUbuntu 22および24である(26.04では動作確認を行う)。

cd ~/Downloads
sudo apt install ./rstudio-*-amd64.deb

7.4 Rパッケージのインストール

Rのパッケージは、Rコンソールを通常ユーザで起動し(sudoなし)、install.packages()関数を使用して個人のライブラリ(~/R以下)にインストールする。BioconductorのパッケージはBiocManagerを使用する。


# Rを起動(端末で R と入力)

# データ操作・可視化パッケージ
install.packages(c("dplyr", "tidyr", "ggplot2", "data.table", "lubridate", "stringr", "readr", "readxl"))

# モデリング・機械学習関連の例
install.packages(c("caret", "randomForest", "glmnet", "xgboost", "lme4", "forecast", "survival"))

# レポーティング・インタラクティブ関連
install.packages(c("rmarkdown", "knitr", "shiny", "plotly", "DT"))

# Bioconductor パッケージのインストール例
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
# BiocManager::install(c("GenomicRanges", "SummarizedExperiment")) # 例

# インストール済みパッケージの確認
# installed.packages()

# Rコンソールの終了
# quit()

7.5 Node.js(JavaScript実行環境)

標準リポジトリのNode.jsとnpmを導入する。導入されるバージョンはリリース時点のもので固定される。

sudo apt update
sudo apt install -y nodejs npm
node --version
npm --version

新しいバージョンが必要な場合は、Node.js公式が案内するNodeSourceのAPTリポジトリ、またはバージョン管理ツール(nvm等)を用いる。グローバルインストール(npm install -g)はsudoを要するため、利用者単位で入れる場合はnpm config set prefix ~/.npm-globalのように接頭辞を変更する。

8. データベースと管理ツール

8.1 PostgreSQLのインストールと初期設定

PostgreSQLは、オープンソースの関係データベース管理システムである。標準リポジトリに含まれるバージョンは、22.04がPostgreSQL 14、24.04がPostgreSQL 16、26.04がPostgreSQL 18である。別のバージョンが必要な場合は、PostgreSQL公式のAPTリポジトリを追加する。

  1. PostgreSQLと関連パッケージのインストール メタパッケージを使うと、リリースごとの既定バージョンが導入される。拡張パッケージ名にはメジャーバージョン番号が入るため、導入済みバージョンを取得して指定する。
    sudo apt update
    # サーバ、クライアント、拡張集
    sudo apt install -y postgresql postgresql-client postgresql-contrib
    # インストールされたメジャーバージョン番号を取得(以降の手順で使用する)
    PGVER=$(psql --version | awk '{print $3}' | cut -d. -f1)
    echo $PGVER
    # C言語等での開発用ヘッダファイル
    sudo apt install -y postgresql-server-dev-$PGVER libpq-dev
    # PostGIS(空間データ拡張)
    sudo apt install -y postgis postgresql-$PGVER-postgis-3
    # PL/Python3(データベース内でPythonを使う拡張)
    sudo apt install -y postgresql-plpython3-$PGVER
    # Python用ドライバ(apt版)とJava JDBCドライバ
    sudo apt install -y python3-psycopg2 libpostgresql-jdbc-java
    
  2. サービスの確認 インストール後、サービスは自動的に起動・有効化される。
    PGVER=$(psql --version | awk '{print $3}' | cut -d. -f1)
    sudo systemctl status postgresql@$PGVER-main.service
    # 起動・停止・再起動・自動起動設定: sudo systemctl start/stop/restart/enable/disable postgresql@$PGVER-main.service
    pg_isready
    
  3. psqlでの接続確認 postgres OSユーザとしてpostgres DBユーザで接続する(peer認証)。peer認証とは、オペレーティングシステムのユーザ名とデータベースのユーザ名が一致する場合にパスワードなしで接続を許可する認証方式である。
    sudo -u postgres psql
    # psql> \conninfo  -- 接続情報を表示
    # psql> \l         -- データベース一覧を表示
    # psql> \q         -- psqlを終了
    

8.2 PostgreSQLの設定と基本操作

設定ファイル(/etc/postgresql/<メジャーバージョン>/main/postgresql.conf)を編集することで動作を調整できる。変更後はPostgreSQLの再起動(sudo systemctl restart postgresql@<メジャーバージョン>-main)が必要である。設定値は搭載メモリ量やストレージ種別に合わせて調整する。

# メモリ関連(環境に合わせて調整)
shared_buffers = 1GB            # 物理メモリの1/4程度を目安とする
effective_cache_size = 4GB      # 物理メモリの1/2〜3/4程度を目安とする(OSキャッシュ含む)
maintenance_work_mem = 256MB    # VACUUM、CREATE INDEX等で使用
work_mem = 64MB                 # ソートやハッシュで使用。同時実行数の分だけ消費される

# チェックポイント関連
# max_wal_size = 1GB              # WAL(Write-Ahead Logging)サイズ上限
# min_wal_size = 80MB             # WALサイズ下限

# その他
# default_statistics_target = 100 # 統計情報の精度
# random_page_cost = 1.1          # SSD/NVMe使用時は4.0(HDDの既定値)から下げる
# effective_io_concurrency = 200  # 同時に発行できるI/O要求数の見積り(0は無効)

PostgreSQL 18では非同期I/Oサブシステムが導入され、io_methodworkerio_uringsync)でI/O方式を選択できる。fsync = offwal_level = minimalは、障害発生時にデータが失われる、あるいは復旧できない構成となるため、破棄してよいテスト環境に限って使用する。

psqlの基本的な使い方psqlはPostgreSQLのコマンドラインクライアントである)

詳細は別ページ »で説明している。

簡単なSQL実行例

sudo -u postgres psql
CREATE TABLE users (id serial PRIMARY KEY, username text UNIQUE NOT NULL, created_at timestamptz DEFAULT now());
INSERT INTO users (username) VALUES ('alice'), ('bob');
SELECT * FROM users;
DROP TABLE users;
\q

拡張の有効化 空間拡張とPL/Pythonは、使用するデータベースごとに有効化する。plpython3uは信頼されない(untrusted)言語であり、スーパーユーザのみが作成できる。

sudo -u postgres psql
CREATE EXTENSION postgis;
CREATE EXTENSION plpython3u;
-- 確認(plpython3uが表示されれば有効である)
SELECT lanname FROM pg_language WHERE lanispl = true;
\q

8.3 SQLite、Redis、MongoDB

SQLiteはファイル1つで完結する組込み型データベースである。開発用ヘッダ、GUI管理ツール(DB Browser for SQLite)、空間拡張モジュールも併せて導入する。

sudo apt update
sudo apt install -y sqlite3 libsqlite3-dev sqlitebrowser

Redisはメモリ上でキー・値を扱うデータストアであり、キャッシュやジョブキューに用いる。

sudo apt install -y redis-server redis-tools
redis-cli ping   # PONG と表示されれば動作している

MongoDBはドキュメント指向データベースである。公式のAPTリポジトリから導入する。2026年5月時点で、MongoDB公式リポジトリはUbuntu 26.04(resolute)向けの安定版を提供していない。22.04(jammy)および24.04(noble)では次の手順で導入する。

sudo install -d -m 0755 /etc/apt/keyrings
wget -qO- https://www.mongodb.org/static/pgp/server-8.0.asc | sudo gpg --dearmor -o /etc/apt/keyrings/mongodb-server-8.0.gpg
echo "deb [arch=amd64,arm64 signed-by=/etc/apt/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 install -y mongodb-org
sudo systemctl enable --now mongod

リポジトリの提供状況はMongoDB公式ドキュメントで確認する。26.04で必要な場合は、公式の対応を待つか、コンテナ(Docker)で稼働させる。

8.4 DBeaver Community Edition、pgAdmin 4

DBeaverは、JDBCドライバを介して多くのデータベースに接続できるクライアントである。公式のAPTリポジトリを登録するとaptで更新を管理できる。公式サイトから.debパッケージを取得してsudo apt install ./dbeaver-ce_*.debで導入することもできる。

sudo install -d -m 0755 /etc/apt/keyrings
wget -qO- https://dbeaver.io/debs/dbeaver.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/dbeaver.gpg
echo "deb [signed-by=/etc/apt/keyrings/dbeaver.gpg] https://dbeaver.io/debs/dbeaver-ce /" | sudo tee /etc/apt/sources.list.d/dbeaver.list
sudo apt update
sudo apt install -y dbeaver-ce

pgAdmin 4はPostgreSQL公式の管理ツールである。デスクトップ版(pgadmin4-desktop)とWebブラウザから利用する版(pgadmin4-web)があり、pgadmin4は両方を導入するメタパッケージである。リポジトリはコードネーム別に提供される。

sudo install -d -m 0755 /etc/apt/keyrings
wget -qO- https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /etc/apt/keyrings/pgadmin.gpg
echo "deb [signed-by=/etc/apt/keyrings/pgadmin.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" | sudo tee /etc/apt/sources.list.d/pgadmin4.list
sudo apt update
sudo apt install -y pgadmin4-desktop

詳しい手順は公式サイトのAPTリポジトリ設定手順に記載されている。

8.5 SQLiteStudio、SQL Workbench/J(書庫配布のツール)

いずれも公式が書庫(tar.xz、zip)のみで配布しており、必要な場合は、次に説明する手順でインストールする。

9. メディア処理、3次元コンピュータグラフィックス、空間データ処理、コンピュータビジョン

9.1 動画・音声処理の基盤とコーデック開発ファイル

ffmpegは動画・音声の変換と加工を行う。

sudo apt update
sudo apt install -y ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libavdevice-dev
sudo apt install -y libx264-dev libxvidcore-dev libjpeg-dev libpng-dev libtiff-dev liblcms2-dev libfreetype6-dev libopenexr-dev libva-dev libv4l-dev v4l-utils libjack-jackd2-dev

9.2 メディア再生・編集・収録アプリケーション

VLCはコーデックを内蔵し多くの形式を再生する。Audacityは音声編集、OBS Studioは画面収録と配信、OpenShotとKdenliveは動画編集、guvcviewはUVCカメラの確認に用いる。apt版の各アプリはUbuntuのリリース時点のバージョンで固定されるため、より新しい版が必要な場合は公式サイトのAppImageやFlatpakを用いる。

sudo apt update
sudo apt install -y vlc obs-studio openshot-qt kdenlive guvcview

9.3 画像編集・作図・写真現像

GIMPはビットマップ画像編集、Inkscapeはベクタ画像編集、Pintaは簡易な画像編集。ImageMagick(magickconvert)とGraphicsMagick(gm)はコマンドラインでの一括変換に、rsvg-convert(librsvg2-bin)はSVGのラスタ化に用いる。GIMPのプラグイン開発にはlibbabl-devlibgegl-devが必要である。

sudo apt update
sudo apt install -y gimp libbabl-dev libgegl-dev inkscape pinta
sudo apt install -y imagemagick libmagickcore-dev libmagickwand-dev graphicsmagick librsvg2-bin

スクリーンショットは注釈機能を持つFlameshotを用いる。作図(フローチャート、UML図、ネットワーク図)にはdiagrams.net Desktopを用い、公式のリリースページから.debをダウンロードして導入する。DOT言語でのグラフ描画にはGraphViz(5.1節で導入)を用いる。

sudo apt install -y flameshot
cd ~/Downloads
sudo apt install ./drawio-amd64-*.deb

9.4 3次元コンピュータグラフィックスと点群処理

Blenderはモデリング、レンダリング、アニメーション、視覚効果の統合環境である。MeshLabは3次元スキャンデータやポリゴンメッシュの編集・処理・可視化を行う。CloudCompareは大規模な点群データの処理、比較、可視化を行い、Linux版はSnapまたはFlatpakで配布される。PCL(Point Cloud Library)は点群処理のC++ライブラリである。apt版のBlenderとMeshLabはリリース時点のバージョンで固定されるため、最新版が必要な場合はBlender公式のtar.xzやMeshLab公式のAppImageを用いる。

sudo apt update
sudo apt install -y blender meshlab libpcl-dev
sudo snap install cloudcompare
参考: ソースからのPCLビルド手順例

標準リポジトリにないバージョンやビルドオプションが必要な場合の手順である。

# 依存関係インストール(例: sudo apt install build-essential cmake libboost-all-dev libflann-dev libvtk9-dev)
# git clone https://github.com/PointCloudLibrary/pcl.git; cd pcl
# mkdir build && cd build; cmake ..; make -j$(nproc)
# sudo make install

9.5 MakeHuman(人体モデリング)

パラメータ操作により人体モデルを作成するツールである。公式PPAは24.04(noble)までの提供であり現時点では26.04向けが無いことに注意。次のいずれかの方法で導入する。

  1. PPAから導入する(Ubuntu 22.04 / 24.04) 公式のPPAはMakeHuman 1.2系にコミュニティアドオンを同梱したものを提供している。
    sudo add-apt-repository ppa:makehuman-official/makehuman-community
    sudo apt update
    sudo apt install -y makehuman-community
    makehuman-community
    

    PPAが対応していないリリース(26.04など)ではapt update時に404となる。その場合は次の方法を用いる。

  2. ソースから実行する(全リリース共通) MakeHuman 1.3系はPython 3とPyQt5で動作する。GitHubから取得して直接起動する。
    sudo apt install -y git python3-pyqt5 python3-pyqt5.qtopengl python3-numpy python3-opengl
    git clone --depth 1 https://github.com/makehumancommunity/makehuman.git ~/opt/makehuman
    cd ~/opt/makehuman
    python3 makehuman/compile_models.py
    python3 makehuman/compile_targets.py
    python3 makehuman/compile_proxies.py
    python3 makehuman/makehuman.py
    

    初回のみcompile_*スクリプトでデータを生成する必要がある。以降はpython3 makehuman/makehuman.pyで起動する。

  3. Blenderアドオン(MPFB)を用いる 開発の主軸はBlenderアドオンのMPFB(MakeHuman Plugin For Blender)に移っている。人体モデルをBlender内で作成する場合はこちらを用いる。配布ファイルと導入手順は公式のダウンロードページで確認し、Blenderの「編集」→「プリファレンス」→「アドオン」→「ディスクからインストール」でzipを指定する。

9.6 空間データ処理(GDAL、PostGIS、SpatiaLite、QGIS、GRASS GIS)

GDAL/OGRは地理空間データの変換ライブラリおよびコマンド群である。GEOSは幾何演算、PROJは座標変換を担う。SpatiaLiteはSQLiteに空間機能を追加する拡張であり、libsqlite3-mod-spatialiteはSQLiteから動的に読み込むモジュールである。libfreexl-devlibgeotiff-devlibhpdf-devlibreadosm-devはSpatiaLite/GDALをソースからビルドする際の依存ライブラリ(Excel読取、GeoTIFF、PDF出力、OpenStreetMap読取)である。

sudo apt update
sudo apt install -y libgeos-dev libgeos++-dev libproj-dev proj-bin proj-data
sudo apt install -y libgdal-dev gdal-bin python3-gdal
sudo apt install -y libspatialite-dev spatialite-bin libsqlite3-mod-spatialite
sudo apt install -y libfreexl-dev libgeotiff-dev libhpdf-dev libreadosm-dev
gdalinfo --version

QGISはデスクトップ地理情報システムであり、GRASS GISはラスタ・ベクタ解析機能を持つ地理情報システムである。qgis-plugin-grassはQGISからGRASSの機能を使うためのプラグインである。PostgreSQLの空間拡張PostGISは8.1節で導入する。

sudo apt install -y qgis qgis-plugin-grass grass

QGISの最新版が必要な場合はQGIS公式のインストールガイドが案内するAPTリポジトリを追加する。

9.7 Google Earth Pro(地球儀表示ソフトウェア)

公式サイトから.debパッケージをダウンロードして導入する。導入時にGoogle独自のAPTリポジトリが登録され、以降の更新はaptで行われる。

wget -O /tmp/google-earth-pro.deb https://dl.google.com/dl/earth/client/current/google-earth-pro-stable_current_amd64.deb
sudo apt install /tmp/google-earth-pro.deb

9.8 OpenCV(コンピュータビジョンライブラリ)

OpenCVは画像処理とコンピュータビジョンのためのライブラリである。C++から利用する場合はapt(libopencv-dev)、Pythonから利用する場合は仮想環境内でのpip install opencv-python(4.4節)を用いる。python3-opencvはapt管理下のツールから使う場合に導入する。libtbb-devは並列処理ライブラリ、libgtk-3-devはOpenCVのGUI表示(imshow)に必要である。

sudo apt update
sudo apt install -y libopencv-dev python3-opencv libgtk-3-dev libtbb-dev
pkg-config --modversion opencv4
参考: ソースからのOpenCVビルド手順例

CUDA対応やcontribモジュールなど、配布パッケージに含まれない機能が必要な場合の手順である。

# 1. 依存関係インストール(9.1節・本節の開発用ライブラリ)
# 2. OpenCV + Contrib ソース取得(git clone)
# 3. ビルドディレクトリ作成(mkdir build; cd build)
# 4. CMake実行(cmake .. -DOPENCV_EXTRA_MODULES_PATH=... -DWITH_CUDA=ON など)
# 5. ビルド(make -j$(nproc))
# 6. インストール(sudo make install; sudo ldconfig)

10. ブラウザ、ネットワーク、遠隔接続、セキュリティ、システムユーティリティ

10.1 Webブラウザ

FirefoxはUbuntu標準のWebブラウザであり(プリインストール済み)、22.04以降ではsnapパッケージとして提供される。日本語ロケールは本体に含まれ、表示言語はFirefoxの設定またはOSの言語設定で切り替える。Chromiumも22.04以降はsnapで提供される(chromium-browserのdebはsnapを導入するための移行用パッケージである)。

sudo snap install firefox
sudo snap install chromium

Google Chromeは公式のAPTリポジトリを登録するとaptで更新を管理できる。

sudo install -d -m 0755 /etc/apt/keyrings
wget -qO- https://dl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /etc/apt/keyrings/google-chrome.gpg
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg] https://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list
sudo apt update
sudo apt install -y google-chrome-stable

10.2 ファイル転送と遠隔ファイルシステム

FileZillaはFTP/SFTPのGUIクライアントである。sshfsはSSH経由で遠隔ディレクトリを、cifs-utilsはSMB/CIFS共有をローカルに接続する。rsyncは差分同期を行う。

sudo apt update
sudo apt install -y filezilla sshfs cifs-utils rsync

10.3 遠隔デスクトップ

Remminaは、RDP、VNC、SSHなどのプロトコルに対応する遠隔接続クライアントである。

sudo apt update
sudo apt install -y remmina remmina-plugin-rdp remmina-plugin-vnc

サーバ側は、GNOMEに内蔵の遠隔デスクトップ機能を「設定」→「システム」→「リモートデスクトップ」から有効にできる(Ubuntu 26.04ではハードウェアアクセラレーションに対応している)。Windowsの遠隔デスクトップクライアントから独立したセッションに接続する場合はxrdpを導入する。

sudo apt update; sudo apt install -y xrdp
sudo adduser xrdp ssl-cert
sudo ufw allow 3389/tcp
sudo ufw status
sudo systemctl restart xrdp

利用する場合のみsudo ufw allow 3389/tcpを実行する。

10.4 ネットワーク診断とセキュリティ

nmapはポート走査、tcpdumpとWiresharkはパケット捕捉、netcat(nc)はTCP/UDP接続の確認、ClamAVはウイルス検査、Lynisはシステム設定の点検を行う。net-toolsifconfignetstatなどを含む(現在のUbuntuではiproute2ipコマンドが同等の機能を提供する)。走査や捕捉は自身が管理する機器・ネットワークに対してのみ用いる。

sudo apt update
sudo apt install -y nmap tcpdump wireshark clamav clamav-daemon clamtk lynis netcat-openbsd net-tools
# 一般利用者でパケット捕捉を行う場合
sudo dpkg-reconfigure wireshark-common
sudo usermod -aG wireshark $USER   # 再ログインで反映
# ウイルス定義の更新
sudo freshclam

10.5 ファイル検索、システム情報、監視

plocateはファイル名データベースを用いた高速な検索コマンド(locate)を提供する(22.04以降は従来のmlocateに代わりplocateが提供される)。catfishはfindやlocateを利用するGUI検索ツール、inotify-toolsはファイルシステムの変更監視(inotifywaitinotifywatch)、jqはコマンドラインでのJSON抽出・整形を行う。

sudo apt update
sudo apt install -y plocate catfish inotify-tools jq
sudo updatedb
sudo apt install -y htop tree sysstat lshw pciutils

hardinfoはハードウェアとOSの情報をGUIで表示する。Ubuntu 26.04ではhardinfo2(ベンチマーク機能を含む)が提供され、hardinfoはその移行用パッケージである。

# Ubuntu 26.04
sudo apt install -y hardinfo2
# Ubuntu 22.04 / 24.04
# sudo apt install -y hardinfo

10.6 ディスク・パッケージ管理・デスクトップ設定のGUI

gpartedはパーティション編集、gnome-disk-utilityはディスクの状態確認、usb-creator-gtkは起動用USBメモリの作成、synapticはaptパッケージの管理、gdebiは単体debパッケージの依存解決付き導入に用いる。gnome-tweaksはGNOMEの外観・挙動を細かく設定する。26.04では「ソフトウェアとアップデート」が既定で導入されないため、必要ならsoftware-properties-gtkを導入する。

sudo apt update
sudo apt install -y gparted gnome-disk-utility usb-creator-gtk synaptic gdebi-core
sudo apt install -y gnome-tweaks papirus-icon-theme xdg-user-dirs-gtk
# Ubuntu 26.04 で「ソフトウェアとアップデート」を使う場合
# sudo apt install -y software-properties-gtk

Lubuntu(LXQt)環境では、ファイルマネージャや設定ツール、端末を次のパッケージで補う。

# Lubuntu(LXQt) 環境の場合
# sudo apt install -y pcmanfm-qt lxqt-config lxqt-themes qterminal featherpad

10.7 バックアップ

Déjà Dupは、duplicityを基盤とするGUIのバックアップツールである。

sudo apt update; sudo apt install -y deja-dup duplicity

11. 日本語環境と文書・テキスト処理

11.1 日本語ロケール、言語パック、フォント

日本語ロケールを生成し、言語パックと日本語フォントを導入する。check-language-support(language-selector-common)は、現在のロケール設定に対して不足している言語サポートパッケージを列挙する。

sudo apt update
sudo locale-gen ja_JP.UTF-8
sudo update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja:en"
sudo apt install -y language-pack-ja language-pack-gnome-ja manpages-ja language-selector-common
sudo apt install -y fonts-noto-cjk fonts-noto-cjk-extra fonts-ipafont fonts-vlgothic fonts-takao
# 現在のロケールに対して不足するパッケージを補う
sudo apt install -y $(check-language-support)

ロケールの変更は再ログインまたは再起動で反映される。LC_ALLは恒久設定しない(コマンド単位の一時切替を妨げるため)。

11.2 日本語入力(Mozc)

GNOMEデスクトップではIBus、Lubuntu(LXQt)ではFcitx 5を入力メソッドの基盤として用いる。mozc-utils-guiはMozcの設定ツールと辞書ツールである。

# GNOME(Ubuntu Desktop)
sudo apt install -y ibus ibus-mozc mozc-utils-gui
# Lubuntu(LXQt)
# sudo apt install -y fcitx5 fcitx5-mozc mozc-utils-gui

導入後、「設定」→「キーボード」(または「地域と言語」)で入力ソースに「日本語(Mozc)」を追加し、再ログインする。Waylandセッションで変換候補の表示位置がずれる場合は、fcitx5-mozcへ切り替え、IMシステムをFcitx 5にする。Lubuntuではfcitx5の設定ツールでMozcを追加する。

11.3 MeCab(日本語形態素解析)

日本語テキストを単語に分割し、品詞などを付与するツールである。mecab-ipadic-utf8は解析用の辞書、libmecab-devはC/C++から使うための開発ファイル、python3-mecabはPythonバインディングである。

sudo apt update
sudo apt install -y mecab libmecab-dev mecab-ipadic-utf8 python3-mecab
echo "日本語の形態素解析を行う" | mecab

11.4 文書・テキスト変換

pdftotext(poppler-utils)はPDFからテキストを抽出し、html2textはHTMLをテキストに変換し、nkfは日本語文字コードを変換する。

sudo apt update; sudo apt install -y poppler-utils html2text nkf

12. ゲーム環境とゲームエンジン

12.1 aptで導入できるオープンソースゲーム

sudo apt update
sudo apt install -y 0ad supertuxkart wesnoth gnome-mahjongg extremetuxracer aisleriot warzone2100 hedgewars frozen-bubble

snapパッケージとして配布されるゲームは、App Center(22.04ではUbuntu Software)またはSnap Storeから導入できる。

12.2 Unreal Engine(ゲームエンジン)

Epic GamesアカウントとGitHubアカウントの連携、ライセンス条項への同意が必要である。必要な場合は次の手順でインストールする。

  1. アカウントを連携する。Epic Gamesアカウントにログインし、アカウント設定の「接続」→「アカウント」でGitHubアカウントを連携する。連携後、GitHubから届く招待を承認すると、非公開リポジトリEpicGames/UnrealEngineにアクセスできるようになる。
  2. ビルドに必要なパッケージを導入する。
    sudo apt update
    sudo apt install -y build-essential clang cmake git git-lfs mono-complete xdg-user-dirs
    
  3. ソースコードを取得する。目的のリリースブランチ(例: 5.5)を指定する。
    git clone -b 5.5 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine
    cd ~/UnrealEngine
    
  4. 依存ファイルを取得し、ビルドする。Setup.shが数十GBの依存ファイルをダウンロードし、makeが環境によっては数時間を要する。
    ./Setup.sh
    ./GenerateProjectFiles.sh
    make
    
  5. エディタを起動する。
    ./Engine/Binaries/Linux/UnrealEditor
    

詳細は公式ドキュメント(ソースコードのダウンロードソースからのビルド)で確認する。

13. インストール結果の確認(OK/NG判定)

本ガイドで導入したソフトウェアが利用可能な状態かを、項目ごとに「OK」「NG」で判定するスクリプトである。

次の内容をcheck-install.shとして保存し、実行権限を付けて通常の利用者で実行する(sudoを付けない。ホームディレクトリの仮想環境を確認するためである)。

chmod +x check-install.sh
./check-install.sh

GPU非搭載機ではNVIDIA関連が、Ubuntu 26.04ではMongoDBが「NG」となるのは正常である。「NG」となった項目は、本ガイドの該当節の手順を確認する。


#!/bin/bash
# ============================================================
# check-install.sh : 導入結果の確認(OK / NG 判定)
#
#   「Ubuntu 22.04/24.04/26.04 開発・研究環境構築ガイド」で導入した
#   ソフトウェアが利用可能かを判定する。状態は一切変更しない。
#
#   実行方法: ./check-install.sh   (sudo は付けない)
# ============================================================

set -u

VENV_MAIN="${HOME}/venvs/myproject_env"
VENV_MP="${HOME}/venvs/mediapipe_env"

CHECK_NG=()

chk() {   # chk <表示名> <コマンド...>
    local n="$1"; shift
    if "$@" >/dev/null 2>&1; then
        echo "   [OK] ${n}"
    else
        echo "   [NG] ${n}"
        CHECK_NG+=("${n}")
    fi
}

PY="python3"; MP="python3"
[ -x "${VENV_MAIN}/bin/python" ] && PY="${VENV_MAIN}/bin/python"
[ -x "${VENV_MP}/bin/python" ]   && MP="${VENV_MP}/bin/python"

. /etc/os-release
echo "============================================================"
echo "導入結果の確認(OK / NG)"
echo "OS: ${ID} ${VERSION_ID} (${VERSION_CODENAME:-})  ユーザ: $(id -un)"
echo "主環境    : ${PY}"
echo "MediaPipe : ${MP}"
echo "============================================================"

echo "--- 開発環境 ---"
chk gcc gcc --version
chk g++ g++ --version
chk gfortran gfortran --version
chk make make --version
chk cmake cmake --version
chk ninja ninja --version
chk ccache ccache --version
chk git git --version
chk subversion svn --version
chk pkg-config pkg-config --version
chk OpenCV-dev pkg-config --exists opencv4
chk Eigen3 pkg-config --exists eigen3
chk PCL sh -c 'ls /usr/include/pcl-*/pcl/point_types.h'
chk dlib-C++ sh -c 'ldconfig -p | grep -q libdlib'

echo "--- NVIDIA GPU ---"
chk NVIDIA-driver nvidia-smi
chk CUDA-Toolkit sh -c 'nvcc --version || /usr/local/cuda/bin/nvcc --version'
chk cuDNN sh -c 'ldconfig -p | grep -q libcudnn'

echo "--- Python ---"
chk pyenv sh -c 'test -x "$HOME/.pyenv/bin/pyenv"'
chk venv-main sh -c 'test -x "$HOME/venvs/myproject_env/bin/python"'
chk venv-mediapipe sh -c 'test -x "$HOME/venvs/mediapipe_env/bin/python"'
chk pip "${PY}" -m pip --version
chk NumPy "${PY}" -c "import numpy"
chk SciPy "${PY}" -c "import scipy"
chk pandas "${PY}" -c "import pandas"
chk Matplotlib "${PY}" -c "import matplotlib"
chk scikit-learn "${PY}" -c "import sklearn"
chk scikit-image "${PY}" -c "import skimage"
chk statsmodels "${PY}" -c "import statsmodels"
chk seaborn "${PY}" -c "import seaborn"
chk SymPy "${PY}" -c "import sympy"
chk Pillow "${PY}" -c "import PIL"
chk h5py "${PY}" -c "import h5py"
chk plotly "${PY}" -c "import plotly"
chk OpenCV-Python "${PY}" -c "import cv2"
chk dlib-Python "${PY}" -c "import dlib"
chk psycopg2 "${PY}" -c "import psycopg2"
chk JupyterLab sh -c 'test -x "$HOME/venvs/myproject_env/bin/jupyter-lab" || command -v jupyter-lab'
chk Spyder sh -c 'test -x "$HOME/venvs/myproject_env/bin/spyder" || command -v spyder'
chk ONNXRuntime "${PY}" -c "import onnxruntime"
chk InsightFace "${PY}" -c "import insightface"
chk InsightFace-model test -d "${HOME}/.insightface/models/buffalo_l"
chk PyTorch "${PY}" -c "import torch"
chk PyTorch-CUDA "${PY}" -c "import torch,sys; sys.exit(0 if torch.cuda.is_available() else 1)"
chk TensorFlow "${PY}" -c "import tensorflow"
chk MediaPipe "${MP}" -c "import mediapipe"
chk MediaPipe-Tasks "${MP}" -c "import mediapipe.tasks.python"
chk MediaPipe-model test -f "${HOME}/mediapipe_models/face_landmarker.task"
chk GDAL-Python "${PY}" -c "from osgeo import gdal"
chk geopandas "${PY}" -c "import geopandas"

echo "--- エディタ・IDE ---"
chk VSCode command -v code
chk SublimeText command -v subl
chk Geany command -v geany
chk Emacs command -v emacs
chk Eclipse sh -c 'command -v eclipse || test -x /usr/local/eclipse/eclipse'
chk テキストエディタ sh -c 'command -v gnome-text-editor || command -v gedit || command -v featherpad'

echo "--- ブラウザ・リモート ---"
chk Firefox command -v firefox
chk Chrome sh -c 'command -v google-chrome || command -v google-chrome-stable'
chk Chromium sh -c 'command -v chromium || command -v chromium-browser'
chk OpenSSH-client command -v ssh
chk OpenSSH-server sh -c 'systemctl is-enabled ssh.socket || systemctl is-enabled ssh.service || systemctl is-active ssh'
chk xrdp systemctl is-active xrdp
chk Remmina command -v remmina
chk FileZilla command -v filezilla
chk sshfs command -v sshfs

echo "--- ユーティリティ ---"
chk curl command -v curl
chk wget command -v wget
chk htop command -v htop
chk tree command -v tree
chk jq command -v jq
chk plocate command -v plocate
chk catfish command -v catfish
chk flameshot command -v flameshot
chk inotify-tools command -v inotifywait
chk 7z command -v 7z
chk trash-cli command -v trash-put
chk deja-dup command -v deja-dup
chk GParted command -v gparted
chk Synaptic command -v synaptic
chk GNOME-Tweaks command -v gnome-tweaks
chk hardinfo sh -c 'command -v hardinfo2 || command -v hardinfo'

echo "--- ネットワーク診断・セキュリティ ---"
chk nmap command -v nmap
chk tcpdump command -v tcpdump
chk Wireshark command -v wireshark
chk ClamAV command -v clamscan
chk Lynis command -v lynis
chk netcat command -v nc
chk intel-gpu-tools command -v intel_gpu_top

echo "--- データベース ---"
chk PostgreSQL-server sh -c 'ls /usr/lib/postgresql/*/bin/postgres'
chk PostgreSQL-service pg_isready
chk psql command -v psql
chk PostGIS sh -c 'ls /usr/share/postgresql/*/extension/postgis.control'
chk PL/Python sh -c 'ls /usr/share/postgresql/*/extension/plpython3u.control'
chk pgAdmin4 sh -c 'command -v pgadmin4 || test -d /usr/pgadmin4'
chk DBeaver command -v dbeaver
chk SQLite3 command -v sqlite3
chk SQLiteBrowser command -v sqlitebrowser
chk SpatiaLite command -v spatialite
chk Redis sh -c 'redis-cli ping | grep -q PONG'
chk MongoDB command -v mongod

echo "--- 画像・映像・3D・空間データ ---"
chk ffmpeg command -v ffmpeg
chk VLC command -v vlc
chk Audacity command -v audacity
chk OBS-Studio command -v obs
chk OpenShot command -v openshot-qt
chk Kdenlive command -v kdenlive
chk guvcview command -v guvcview
chk GIMP command -v gimp
chk Inkscape command -v inkscape
chk Pinta command -v pinta
chk ImageMagick sh -c 'command -v magick || command -v convert'
chk GraphicsMagick command -v gm
chk rsvg-convert command -v rsvg-convert
chk GraphViz command -v dot
chk gnuplot command -v gnuplot
chk Blender command -v blender
chk MeshLab command -v meshlab
chk CloudCompare sh -c 'command -v CloudCompare || command -v cloudcompare.CloudCompare'
chk GDAL command -v gdalinfo
chk QGIS command -v qgis
chk GRASS-GIS command -v grass
chk Google-Earth sh -c 'command -v google-earth-pro || test -x /opt/google/earth/pro/googleearth'
chk drawio command -v drawio

echo "--- 日本語処理・文書変換 ---"
chk MeCab sh -c 'echo 日本語 | mecab'
chk nkf command -v nkf
chk pdftotext command -v pdftotext
chk html2text command -v html2text
chk 日本語フォント sh -c 'fc-list | grep -qi "Noto Sans CJK"'
chk Mozc sh -c 'dpkg -l ibus-mozc fcitx5-mozc 2>/dev/null | grep -q "^ii"'

echo "--- Java・R・その他言語 ---"
chk Java-JRE java -version
chk Java-JDK javac -version
chk R R --version
chk Rscript Rscript --version
chk RStudio command -v rstudio
chk Node.js node --version
chk npm npm --version

echo "--- ゲーム ---"
chk 0ad command -v 0ad
chk SuperTuxKart command -v supertuxkart
chk Wesnoth sh -c 'command -v wesnoth || ls /usr/games/wesnoth*'
chk GNOME-Mahjongg command -v gnome-mahjongg
chk ExtremeTuxRacer command -v etr
chk Aisleriot command -v sol
chk Warzone2100 command -v warzone2100
chk Hedgewars command -v hedgewars
chk FrozenBubble command -v frozen-bubble

echo
echo "============================================================"
if [ "${#CHECK_NG[@]}" -eq 0 ]; then
    echo "確認結果: すべて OK"
else
    echo "確認結果: NG ${#CHECK_NG[@]} 件"
    for t in "${CHECK_NG[@]}"; do echo "   - ${t}"; done
    echo
    echo "GPU 非搭載機では NVIDIA 関連,Ubuntu 26.04 では MongoDB が NG と"
    echo "なるのは正常である。それ以外は本ガイドの該当節を確認すること。"
fi
echo "============================================================"

exit 0