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,可以从我们的网站 https://atheme.github.io/ 下载包存档。
如果您正在浏览我们的 GitHub 存储库,请不要单击其中的“下载 ZIP”按钮或“源代码”链接,因为它们将为您提供缺少所需子模块的存档。每个版本的“资产”下都附有正确的.tar.bz2
或.tar.xz
存档,您可以通过我们网站上的“下载”按钮进行访问。
获取源代码存储库并更改到其目录(使用上面给出的命令)。
如果您正在 GNU/Linux 系统上构建 Atheme,或者可以充分模拟该系统(例如 Windows 10 上的 WSL 2),请执行以下命令:
$ ./configure
$ make
$ make install
如果您在 OpenBSD(或类似)系统上构建 Atheme,请执行以下命令:
# pkg_add gmake
$ ./configure --disable-linker-defs
$ gmake
$ gmake install
如果您希望 Atheme 使用的用户安装的库由包管理器安装到/usr/local/
等目录,您可能需要补充默认编译器和链接器搜索路径,以便 Atheme 可以检测到这些库(例如来自 FreeBSD Ports 的裂纹库):
$ ./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 并且想要使用这些库中的一个或多个,请参阅./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
;有关更多详细信息,请参阅示例配置文件。
不建议将消毒剂用于生产用途,但建议开发人员使用它们,包括编写新功能和/或修改源代码的第三方。
如果您仍然迷失,请阅读安装文件或查看我们的维基以获取更多提示。