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
;有關更多詳細信息,請參閱範例設定檔。
不建議將消毒劑用於生產用途,但建議開發人員使用它們,包括編寫新功能和/或修改原始程式碼的第三方。
如果您仍然迷失,請閱讀安裝檔案或查看我們的維基以獲取更多提示。