Atheme é um conjunto de serviços de IRC projetados para grandes redes de IRC com altos requisitos de escalabilidade. É um software relativamente maduro, com alguns códigos e design derivados de outro pacote chamado Shrike.
O comportamento do Atheme pode ser ajustado usando módulos e um arquivo de configuração altamente detalhado. Quase todo comportamento pode ser alterado no momento da implantação apenas editando a configuração.
Se você tiver uma versão moderna do Git (1.6.5 ou mais recente), poderá clonar recursivamente o repositório:
$ git clone --recursive 'https://github.com/atheme/atheme/' atheme-devel
$ cd atheme-devel
Se você tiver uma versão mais antiga do Git, deverá clonar o repositório e, em seguida, buscar seus submódulos:
$ git clone 'https://github.com/atheme/atheme/' atheme-devel
$ cd atheme-devel
$ git submodule init
$ git submodule update
Se você não possui Git, pode baixar um arquivo de pacote em nosso site em https://atheme.github.io/.
Se você estiver navegando em nosso repositório GitHub, NÃO clique no botão "Baixar ZIP" ou nos links "Código-fonte", pois eles fornecerão um arquivo que não possui os submódulos necessários. Existem arquivos .tar.bz2
ou .tar.xz
adequados anexados a cada versão em "Ativos", que é para onde o botão "Download" em nosso site o levará.
Obtenha o repositório do código-fonte e mude para seu diretório (usando os comandos fornecidos acima).
Se você estiver construindo o Atheme em um sistema GNU/Linux, ou algo que possa emular isso suficientemente (como WSL 2 no Windows 10), execute os seguintes comandos:
$ ./configure
$ make
$ make install
Se você estiver construindo o Atheme em um sistema OpenBSD (ou similar), execute os seguintes comandos:
# pkg_add gmake
$ ./configure --disable-linker-defs
$ gmake
$ gmake install
Se suas bibliotecas instaladas pelo usuário que você deseja que o Atheme use sejam instaladas pelo seu gerenciador de pacotes em um diretório como /usr/local/
, você pode precisar complementar o compilador padrão e os caminhos de pesquisa do vinculador para que o Atheme possa detectar essas bibliotecas (por exemplo cracklib das portas do FreeBSD):
$ ./configure CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
As seguintes bibliotecas geralmente requerem a instalação do pkg-config:
libargon2.pc
)libcrypto.pc
)libidn.pc
)nettle.pc
)libpcre.pc
)libqrencode.pc
)libsodium.pc
) Se você não tem o pkg-config instalado e deseja usar uma ou mais dessas bibliotecas, consulte ./configure --help
para obter as opções a serem definidas para substituir a descoberta do pkg-config para essas bibliotecas. Por exemplo, se você deseja usar GNU libidn, e ele está instalado em um caminho de pesquisa padrão para seu compilador e vinculador, e você não tem o pkg-config instalado, execute:
$ ./configure LIBIDN_CFLAGS="" LIBIDN_LIBS="-lidn"
Se uma biblioteca depende do preenchimento LIBFOO_CFLAGS
com algumas definições de pré-processador ou do preenchimento LIBFOO_LIBS
com alguns sinalizadores de vinculação de biblioteca, isso geralmente falhará. Instale o pkg-config para obter os melhores resultados.
Se você deseja compilar o Atheme com o compilador C do projeto LLVM ( clang
), você também pode usar o vinculador do LLVM ( lld
). Você pode fazer isso da seguinte maneira:
$ ./configure CC="clang" LDFLAGS="-fuse-ld=lld"
Se você quiser usar sanitizadores de compilador e quiser construir com Clang, você também DEVE usar LLD, já que a maioria dos sanitizadores em Clang exigem que LTO funcione corretamente, e Clang no modo LTO emite código de bits LLVM, não código de máquina. O vinculador é o responsável final por realizar a maior parte do trabalho pesado do LTO e traduzir o resultado em código de máquina, e a maioria dos outros vinculadores não sabe como fazer isso.
Para usar sanitizadores de compilador com GCC (suportado):
$ ./configure --disable-heap-allocator --disable-linker-defs
--enable-compiler-sanitizers CC="gcc"
Para usar sanitizadores de compilador com Clang (recomendado):
$ ./configure --disable-heap-allocator --disable-linker-defs
--enable-compiler-sanitizers CC="clang" LDFLAGS="-fuse-ld=lld"
Se você habilitar os sanitizadores, é recomendado habilitar a opção de configuração general::db_save_blocking
; consulte o arquivo de configuração de exemplo para obter mais detalhes.
Os sanitizadores não são recomendados para uso em produção, mas são recomendados para desenvolvedores, incluindo terceiros que escrevem novos recursos e/ou modificam o código-fonte.
Se você ainda estiver perdido, leia o arquivo INSTALL ou confira nosso wiki para mais dicas.