Atheme は、高いスケーラビリティ要件を持つ大規模な IRC ネットワーク向けに設計された IRC サービスのセットです。これは比較的成熟したソフトウェアであり、一部のコードと設計は Shrike と呼ばれる別のパッケージから派生しています。
Atheme の動作は、モジュールと非常に詳細な設定ファイルを使用して調整できます。ほとんどすべての動作は、展開時に構成を編集するだけで変更できます。
最新バージョンの Git (1.6.5 以降) を使用している場合は、リポジトリのクローンを再帰的に作成できます。
$ git clone --recursive 'https://github.com/atheme/atheme/' atheme-devel
$ cd atheme-devel
古いバージョンの Git を使用している場合は、リポジトリのクローンを作成してから、そのサブモジュールをフェッチする必要があります。
$ git clone 'https://github.com/atheme/atheme/' atheme-devel
$ cd atheme-devel
$ git submodule init
$ git submodule update
Git をお持ちでない場合は、弊社 Web サイト (https://atheme.github.io/) からパッケージ アーカイブをダウンロードできます。
GitHub リポジトリを参照している場合は、[ZIP をダウンロード] ボタンやそこにある [ソース コード] リンクをクリックしないでください。必要なサブモジュールが欠落したアーカイブが提供されてしまいます。 「Assets」の下に各リリースに適切な.tar.bz2
または.tar.xz
アーカイブが添付されており、Web サイトの「Download」ボタンをクリックするとそこに移動します。
ソース コード リポジトリを取得し、そのディレクトリに移動します (上記のコマンドを使用)。
GNU/Linux システム、またはそれを十分にエミュレートできるもの (Windows 10 の WSL 2 など) 上で Atheme を構築している場合は、次のコマンドを実行します。
$ ./configure
$ make
$ make install
OpenBSD (または同様の) システム上で Atheme を構築している場合は、代わりに次のコマンドを実行します。
# pkg_add gmake
$ ./configure --disable-linker-defs
$ gmake
$ gmake install
Atheme で使用したいユーザーがインストールしたライブラリが、パッケージマネージャーによって/usr/local/
などのディレクトリにインストールされている場合、Atheme がそれらのライブラリを検出できるように、デフォルトのコンパイラとリンカーの検索パスを補足する必要がある場合があります(例: FreeBSD ポートからの crashlib):
$ ./configure CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
次のライブラリでは通常、pkg-config をインストールする必要があります。
libargon2.pc
)libcrypto.pc
)libidn.pc
)nettle.pc
)libpcre.pc
)libqrencode.pc
)libsodium.pc
) pkg-config がインストールされておらず、これらのライブラリを 1 つ以上使用したい場合は、 ./configure --help
参照して、これらのライブラリの pkg-config 検出をオーバーライドするように設定するオプションを確認してください。たとえば、GNU libidn を使用する場合、それがコンパイラとリンカーのデフォルトの検索パスにインストールされており、pkg-config がインストールされていない場合は、次のコマンドを実行します。
$ ./configure LIBIDN_CFLAGS="" LIBIDN_LIBS="-lidn"
ライブラリがLIBFOO_CFLAGS
にプリプロセッサ定義を設定するか、 LIBFOO_LIBS
にライブラリ リンク フラグを設定することに依存している場合、これは通常失敗します。最良の結果を得るには、pkg-config をインストールしてください。
LLVM プロジェクトの C コンパイラ ( clang
) を使用して Atheme をコンパイルしたい場合は、LLVM のリンカー ( lld
) を使用することもできます。これは次のようにして実現できます。
$ ./configure CC="clang" LDFLAGS="-fuse-ld=lld"
コンパイラ サニタイザーを使用し、Clang でビルドしたい場合は、LLD も使用する必要があります。これは、Clang のサニタイザーのほとんどが適切に機能するために LTO を必要とし、LTO モードの Clang はマシン コードではなく LLVM ビットコードを生成するためです。リンカは、LTO の重労働のほとんどを実行し、その結果をマシンコードに変換する最終的な責任を負いますが、他のほとんどのリンカはこれを行う方法を知りません。
GCC でコンパイラ サニタイザーを使用するには (サポートされています):
$ ./configure --disable-heap-allocator --disable-linker-defs
--enable-compiler-sanitizers CC="gcc"
Clang でコンパイラ サニタイザーを使用するには (推奨):
$ ./configure --disable-heap-allocator --disable-linker-defs
--enable-compiler-sanitizers CC="clang" LDFLAGS="-fuse-ld=lld"
サニタイザーを有効にする場合は、設定オプションgeneral::db_save_blocking
を有効にすることをお勧めします。詳細については、設定ファイルの例を参照してください。
サニタイザーは運用環境での使用は推奨されませんが、新しい機能を作成したりソース コードを変更したりするサードパーティを含む開発者には推奨されます。
それでも迷った場合は、INSTALL ファイルを読むか、Wiki で詳細なヒントを確認してください。