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
, куда вы попадете, нажав кнопку «Загрузить» на нашем веб-сайте.
Получите репозиторий исходного кода и перейдите в его каталог (используя команды, приведенные выше).
Если вы создаете Atheme в системе GNU/Linux или в чем-то, что может в достаточной степени имитировать это (например, WSL 2 в Windows 10), выполните следующие команды:
$ ./configure
$ make
$ make install
Если вы собираете Atheme в системе OpenBSD (или аналогичной), вместо этого выполните следующие команды:
# pkg_add gmake
$ ./configure --disable-linker-defs
$ gmake
$ gmake install
Если ваши установленные пользователем библиотеки, которые вы хотите, чтобы Atheme использовала, установлены вашим менеджером пакетов в такой каталог, как /usr/local/
, вам может потребоваться дополнить пути поиска компилятора и компоновщика по умолчанию, чтобы Atheme мог обнаружить эти библиотеки (например, Cracklib из портов FreeBSD):
$ ./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 для достижения наилучших результатов.
Если вы хотите скомпилировать Atheme с помощью компилятора C проекта LLVM ( clang
), вы также можете использовать компоновщик LLVM ( lld
). Вы можете сделать это следующим образом:
$ ./configure CC="clang" LDFLAGS="-fuse-ld=lld"
Если вы хотите использовать дезинфицирующие средства компилятора и хотите выполнять сборку с помощью Clang, вы ДОЛЖНЫ также использовать LLD, поскольку большинству дезинфицирующих средств в Clang для правильной работы требуется LTO, а Clang в режиме LTO генерирует биткод 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 или посетите нашу вики, чтобы получить дополнительные подсказки.