Atheme es un conjunto de servicios IRC diseñados para grandes redes IRC con altos requisitos de escalabilidad. Es un software relativamente maduro, con parte del código y diseño derivados de otro paquete llamado Shrike.
El comportamiento de Atheme se puede ajustar mediante módulos y un archivo de configuración muy detallado. Casi todo el comportamiento se puede cambiar en el momento de la implementación simplemente editando la configuración.
Si tiene una versión moderna de Git (1.6.5 o posterior), puede clonar el repositorio de forma recursiva:
$ git clone --recursive 'https://github.com/atheme/atheme/' atheme-devel
$ cd atheme-devel
Si tienes una versión anterior de Git, debes clonar el repositorio y luego recuperar sus submódulos:
$ git clone 'https://github.com/atheme/atheme/' atheme-devel
$ cd atheme-devel
$ git submodule init
$ git submodule update
Si no tiene Git, puede descargar un archivo de paquete desde nuestro sitio web en https://atheme.github.io/.
Si está navegando por nuestro repositorio de GitHub, NO haga clic en el botón "Descargar ZIP" ni en los enlaces "Código fuente", ya que le proporcionarán un archivo que carece de los submódulos necesarios. Hay archivos .tar.bz2
o .tar.xz
adecuados adjuntos a cada versión en "Activos", que es a donde lo llevará el botón "Descargar" en nuestro sitio web.
Obtenga el repositorio de código fuente y cámbielo a su directorio (usando los comandos indicados anteriormente).
Si está compilando Atheme en un sistema GNU/Linux, o algo que pueda emularlo suficientemente (como WSL 2 en Windows 10), ejecute los siguientes comandos:
$ ./configure
$ make
$ make install
Si está compilando Atheme en un sistema OpenBSD (o similar), ejecute los siguientes comandos:
# pkg_add gmake
$ ./configure --disable-linker-defs
$ gmake
$ gmake install
Si su administrador de paquetes instala las bibliotecas instaladas por el usuario que desea que utilice Atheme en un directorio como /usr/local/
, es posible que deba complementar las rutas de búsqueda predeterminadas del compilador y del vinculador para que Atheme pueda detectar esas bibliotecas (p. ej. cracklib de los puertos FreeBSD):
$ ./configure CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
Las siguientes bibliotecas generalmente requieren la instalación de pkg-config:
libargon2.pc
)libcrypto.pc
)libidn.pc
)nettle.pc
)libpcre.pc
)libqrencode.pc
)libsodium.pc
) Si no tiene pkg-config instalado y desea utilizar una o más de estas bibliotecas, consulte ./configure --help
para conocer las opciones para anular el descubrimiento de pkg-config para esas bibliotecas. Por ejemplo, si desea utilizar GNU libidn y está instalado en una ruta de búsqueda predeterminada para su compilador y vinculador, y no tiene instalado pkg-config, ejecute:
$ ./configure LIBIDN_CFLAGS="" LIBIDN_LIBS="-lidn"
Si una biblioteca depende de completar LIBFOO_CFLAGS
con algunas definiciones de preprocesador, o de completar LIBFOO_LIBS
con algunos indicadores de vinculación de bibliotecas, esto generalmente fallará. Instale pkg-config para obtener mejores resultados.
Si desea compilar Atheme con el compilador C del proyecto LLVM ( clang
), es posible que también desee utilizar el vinculador de LLVM ( lld
). Puede lograr esto de la siguiente manera:
$ ./configure CC="clang" LDFLAGS="-fuse-ld=lld"
Si desea utilizar desinfectantes del compilador y desea compilar con Clang, también DEBE usar LLD, ya que la mayoría de los desinfectantes en Clang requieren LTO para funcionar correctamente, y Clang en modo LTO emite código de bits LLVM, no código de máquina. El vinculador es, en última instancia, responsable de realizar la mayor parte del trabajo pesado de LTO y traducir el resultado a código de máquina, y la mayoría de los demás vinculadores no saben cómo hacerlo.
Para utilizar desinfectantes del compilador con GCC (compatible):
$ ./configure --disable-heap-allocator --disable-linker-defs
--enable-compiler-sanitizers CC="gcc"
Para usar desinfectantes del compilador con Clang (recomendado):
$ ./configure --disable-heap-allocator --disable-linker-defs
--enable-compiler-sanitizers CC="clang" LDFLAGS="-fuse-ld=lld"
Si habilita los desinfectantes, se recomienda habilitar la opción de configuración general::db_save_blocking
; consulte el archivo de configuración de ejemplo para obtener más detalles.
Los desinfectantes no se recomiendan para uso en producción, pero sí para desarrolladores, incluidos terceros que escriben nuevas funciones y/o modifican el código fuente.
Si todavía estás perdido, lee el archivo INSTALL o consulta nuestra wiki para obtener más sugerencias.