Lore の build と配置
先に 構築手順の前提条件 を確認する。一般化した手順は別環境で
通し検証していない。
実機では fork を利用した。TLS gRPC 対応を含み bridge と互換性のある revision を選ぶ。
source "$HOME/.cargo/env"
git clone https://github.com/radicalgrimoire/lore.git "$HOME/src/lore"
cd "$HOME/src/lore"
git checkout --detach <LORE_REVISION>
git rev-parse HEAD
cargo build --release -p lore-client --bin lore -p lore-server --bin loreserver
sudo install -o root -g root -m 0755 \
"$HOME/src/lore/target/release/lore" /opt/lore/bin/lore
sudo install -o root -g root -m 0755 \
"$HOME/src/lore/target/release/loreserver" /opt/lore/bin/loreserver
/opt/lore/bin/lore --version
/opt/lore/bin/loreserver --version
build した commit hash と変更の有無を運用記録に残す。既存環境の動作確認済み binary を使う
場合は配布元、revision、checksum、license、client/server 互換性を確認する。DB、store、
secret や鍵を新環境へコピーしない。
補足: install コマンド
install は GNU coreutils の標準コマンドで、package の導入ではなく配置用のコピーを行う。
cp と chmod、chown を 1 回で実行でき、配置先を上書きせず新しい file に置き換えるため、
実行中の binary でも Text file busy になりにくい。
補足: 更新手順
更新時も同じ流れで、source を更新して build し、install で binary を置き換える。
cd "$HOME/src/lore"
/opt/lore/bin/loreserver --version # 更新前の version を記録する
git fetch --tags
git checkout --detach <NEW_LORE_REVISION>
git rev-parse HEAD
cargo build --release -p lore-client --bin lore -p lore-server --bin loreserver
sudo cp -p /opt/lore/bin/lore /opt/lore/bin/lore.bak
sudo cp -p /opt/lore/bin/loreserver /opt/lore/bin/loreserver.bak
sudo install -o root -g root -m 0755 \
"$HOME/src/lore/target/release/lore" /opt/lore/bin/lore
sudo install -o root -g root -m 0755 \
"$HOME/src/lore/target/release/loreserver" /opt/lore/bin/loreserver
sudo systemctl restart loreserver
systemctl is-active loreserver
install で置き換えても、起動中の process は古い binary のまま動く。systemctl restart
するまで更新は反映されない。
- 更新前に release note や commit log を確認し、設定 file や DB 形式の変更がないか確かめる。
- 不具合時は
.bak を戻して restart する。更新前後の commit hash を運用記録に残す。
- client と server の互換性を確認し、必要なら Windows client も同じ revision に揃える。
次は directory の作成。