バッケージ作成の推奨¶
以下は Incus のパッケージ作成者向けの推奨事項です。
以下の推奨に従うとさまざまな Linux ディストリビューションでより期待通りな経験を提供できるでしょう。
パッケージ¶
通常は、少なくとも incus と incus-client パッケージに分割するのが良いでしょう。
後者はデーモンやその依存物をインストールせずに incus コマンドだけをインストールできるようにします。
さらに、fuidshift、lxc-to-incus、incus-benchmark、incus-migrate のような使用頻度の低いツールを incus-tools パッケージに分離すると便利かもしれません。
グループ¶
2 つのグループを提供すると良いです:
incus-adminはunix.socketソケットへのアクセスを許可し、Incus への実質的に完全な制御を許可します。incusはuser.socketソケットへのアクセスを許可し、制限された Incus プロジェクトを利用できるようにします。
初期化スクリプト¶
以下は systemd の使用を想定しています。
systemd を使用しないディストリビューションでは似たような命名規則に従うのがよいですが、ソケットアクティベーションのような点は一部差異があるでしょう。
incus.serviceはincusdデーモンを起動・停止するメインのユニットです。incus.socketはincus.serviceユニット用のソケットアクティベーションのユニットです。存在する場合、incus.serviceは単体では起動しないようにします。incus-user.serviceはincus-userデーモンを起動・停止するメインのユニットです。incus-user.socketはincus-user.serviceユニット用のソケットアクティベーションのユニットです。存在する場合、incus-user.serviceは単体では起動しないようにします。incus-startup.serviceはincusd activateifneededコマンドを使って必要であればデーモンの起動をトリガーします。さらにincusd shutdownを呼んでホストのシャットダウン時にインスタンスを順番にシャットダウンします。
バイナリ¶
incusd と incus-user デーモンはユーザーの PATH の通らない場所に置くのが良いです。
incus-agent も同様で、デーモンの PATH に存在する必要がありますが、ユーザーは利用できないようにしてください。
ユーザーに利用できるようにするべきメインのバイナリは incus です。
これらに加えて、以下のオプショナルなバイナリも利用できるようにしてください:
fuidshift(root のみに限定するべき)incus-benchmarkincus-migratelxc-to-incuslxd-to-incus(root のみに限定するべき)
Incus agent バイナリ¶
incus-agent バイナリを提供するには 2 つの方法があります。
単一のエージェントのセットアップ¶
もっとも簡単な方法はincusdのPATHにincus-agentを利用可能にしておくことです。
このシナリオではエージェントはシステムのプライマリアーキテクチャーのincus-agentのスタティックビルドにするのがよいです。
複数のエージェントのセットアップ¶
別の方法として、incus-agentバイナリの複数のビルドを提供し、複数のアーキテクチャーやオペレーティングシステムのサポートを提供することもできます。
このためには、INCUS_AGENT_PATH環境変数をincusdプロセスに設定しincus-agentのビルドを含むパスを指すようにするとよいです。
これらのビルドはオペレーティングシステムとアーキテクチャーに応じた名前を付けてください。
例えば、incus-agent.linux.x86_64、incus-agent.linux.i686、incus-agent.linux.aarch64です。
ドキュメント¶
ウェブ上のドキュメント¶
Incus はネットワークリスナーが有効(core.https_address)な場合は、ドキュメントを自身で配信できます。
これを動かすためには、リリース tarball 内に含まれるドキュメントをパッケージの一部としてインストールし、INCUS_DOCUMENTATION 環境変数を通してそのパスを Incus に渡すのがよいです。
マニュアルページ¶
Incus 用に完全な manpage のエントリーをそれ用に書いてはいませんが、 CLI からそれらを生成できます。
incus manpage --all --format=man /target/path を実行すると各コマンド/サブコマンドごとに個別のページを生成します。
これは --help で表示される内容と実質同じですので、ディストリビューションのパッケージングポリシーが全ての実行ファイルが manpages を持つことを要求しない限りは --help と help サブコマンドに任せるのが通常はベストです。