目的
C++/Python 開発に必要なツールのローカルインストール(ここではソースをビルドしてホームディレクトリ下にインストールすること)手順をまとめる予定です。
全ての依存関係をローカルインストールで済ませることは目指していません。
例えば CMake の依存ライブラリ OpenSSL (libssl-dev) は予めルート権限でシステムインストールされていることを前提としています。
おことわり
- この記事では修正提案を歓迎します。ただし、全ての提案を即座に記事へ反映できるとは限りません。
- 本記事の内容は特定の環境でのみ検証されています。
手順補足
- インストール先は以下の環境変数で指定しています。
export LOCAL_DIR=$HOME/.local
export LOCAL_BIN_DIR=${LOCAL_DIR}/bin
-
カレントディレクトリは特に明記しない場合
cd $LOCAL_DIR
であるとします。
(影響するのはソースのダウンロード・解凍先で、インストール先に影響はないため不問。) -
インストールするバージョンは適宜変更してください。
ダウンロードしたソースは make uninstall
でツールをアンインストールできるように残しておきます。
検証環境
cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)
make -v
GNU Make 4.3
このプログラムは x86_64-pc-linux-gnu 用にビルドされました
Copyright (C) 1988-2020 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 以降 <http://gnu.org/licenses/gpl.html>
これはフリーソフトウェアです: 自由に変更および配布できます.
法律の許す限り、 無保証 です.
cmake
Reference: https://gitlab.kitware.com/cmake/cmake
wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3.tar.gz
tar xvf cmake-3.28.3.tar.gz
cd cmake-3.28.3
./bootstrap --prefix=${LOCAL_DIR}
make && make install
ninja
Reference: https://github.com/ninja-build/ninja?tab=readme-ov-file#building-ninja-itself
git clone https://github.com/ninja-build/ninja.git
cd ninja
cmake -Bbuild-cmake
cmake --build build-cmake
./build-cmake/ninja_test # run unit tests
cp build-cmake/ninja ${LOCAL_BIN_DIR}
gcc
gcc のビルドに必要な texinfo
を先にインストールする。
Reference: https://www.gnu.org/software/texinfo/
tar xvzf texinfo-7.1.tar.gz
cd texinfo-7.1
./configure --prefix=${LOCAL_DIR}
make && make install
Reference (gcc): https://gcc.gnu.org/install/
- 参考記事:http://real-c.info/envUnix.html
- 64bit 環境では gcc のビルド時に
libc6-dev-i386
(apt) が必要になる。-
--disable-multilib
オプションを付けると 32bit 環境ターゲットにできなくなるが、上記ライブラリは不要になる。
-
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-11.2.0/gcc-11.2.0.tar.gz
tar xzf gcc-11.2.0.tar.gz
cd gcc-11.2.0/
./contrib/download_prerequisites
mkdir build
cd build
../configure --enable-languages=c,c++ --prefix=${LOCAL_DIR}
make && make install
${LOCAL_DIR}/bin
にパスを通す他、以下の環境変数を設定する。
# GCC
export LD_LIBRARY_PATH=$HOME/.local/lib64:$HOME/.local/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=$HOME/.local/lib64:$HOME/.local/lib:$LIBRARY_PATH
clang, clang-format, clang-tidy
Reference: https://llvm.org/docs/GettingStarted.html#getting-the-source-code-and-building-llvm
- 先にローカルインストールした gcc, ninja でビルドする。
-
LLVM_ENABLE_PROJECTS
オプションに:-
clang
を指定することで clang が、 -
clang-tools-extra
で clang-format, clang-tidy がビルドされる。
-
git clone --depth 1 https://github.com/llvm/llvm-project.git
cd llvm-project/
cmake -S llvm -B build -G Ninja -DCMAKE_INSTALL_PREFIX=${LOCAL_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=${LOCAL_BIN_DIR}/g++ -DCMAKE_C_COMPILER=${LOCAL_BIN_DIR}/gcc -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra"
cmake --build build
cmake --install build
Python (Poetry インストールまで)
Python 系のツールをインストール際は、$LOCAL_DIR
を参照していない。
そのため $HOME/.local
以外にインストールする場合は要検証。
python3
(検証環境では既に python3 が導入済みだが記録としてメモ)
wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz
tar xvzf Python-3.12.2.tar.xz
./configure --prefix=${LOCAL_DIR}
make
make install
pip
Reference: https://pip.pypa.io/en/stable/installation
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
pipx
Reference: https://github.com/pypa/pipx?tab=readme-ov-file#install-pipx
python3 -m pip install --user pipx
pyenv
Reference: https://github.com/pyenv/pyenv?tab=readme-ov-file#automatic-installer
curl https://pyenv.run | bash
poetry
Reference: https://python-poetry.org/docs/#installing-with-the-official-installer
curl -sSL https://install.python-poetry.org | python3 -