Гид по технологиям

Шаг 6 — Сборка и установка Anope IRC Services

7 min read Сервера Обновлено 28 Nov 2025
Установка Anope: сборка, установка и права доступа
Установка Anope: сборка, установка и права доступа

Кратко: этот материал объясняет вывод конфигурации, сборки и установки Anope 1.6.5, указывает, какие параметры стоит выбрать при интерактивной настройке, и даёт чеклист для финальной настройки прав и модулей. В конце — рекомендации по безопасности, устранению ошибок и план отката.

Что показывает лог в этом шаге

Ниже представлен реальный сценарий интерактивной конфигурации и сборки Anope 1.6.5. Я намеренно сохраняю технические строки команд и вывод сборки — они полезны как эталон. Описания команд, подсказки и рекомендации даны на русском языке, а все пути и команды оставлены без изменений.

Важно: код и системный вывод остались без изменений для точности. В тексте мы поясняем, что означают ключевые опции и какие решения принимать на этапе configure.


Быстрое пояснение терминов

  • Anope — набор сервисов IRC (NickServ, ChanServ и т. п.).
  • configure/make/make install — стандартная последовательность для сборки ПО из исходников на Unix-подобных системах.
  • modules — динамические расширения, загружаемые без перезапуска.

Интерактивная конфигурация (с пояснениями)

Далее приведён блок с интерактивным вводом, который вы выполнили при ./configure. Я добавляю комментарии после ключевых шагов.

/home/zcworld/src/anope-1.6.5/ ./configure

This is a screen dump for me when I did my config / install:

-========================= A N O P E ==========================- For more detailed information on the features of Anope1.6 please read the self-named documentation found on the ‘docs’ directory.

Anope is a set of IRC Service expanded upon Lara’s Epona, based on Andy Church’s IRC Services. For all your Anope needs please visit our portal at http://www.anope.org/

Please read the INSTALL file for install/upgrade instructions. Reading the FAQ and README files would be a good idea too. (all documentation is located on directory ‘docs’).

-==============================================================-

Beginning Services configuration.

Note: press Return for the default, or enter a new value. In what directory do you want the binaries to be installed? [/root/services] /home/ircadmin/services /home/ircadmin/services does not exist. Create it? [y] -> y

Where do you want the data files to be installed? [/home/ircadmin/services] -> /home/ircadmin/services

Which group should all Services data files be owned by? (If Services should not force files to be owned by a particular group, just press Return.) [] ->

What should the default umask for data files be (in octal)? (077 = only accessible by owner; 007 = accessible by owner and group) [077] ->

Select the closest to the type of server on your IRC network:

  1. DreamForge 4.6.7 [dated IRCd, upgrade to a current one]
  2. Bahamut 1.4.27 [or later]
  3. UnrealIRCd 3.1.1 [or later]
  4. UltimateIRCd 2.8.2 [or later]
  5. UltimateIRCd 3.0.0 [alpha26 or later]
  6. Hybrid IRCd 7.0 [experimental]
  7. ViagraIRCd 1.3.x [or later]
  8. PTlink 6.15.0 [experimental] [no default] -> 3

Do you want to use the MD5 message-digest algorithm to encrypt passwords? (Selecting “yes” protects your passwords from being stolen if someone gains access to the Services databases, but makes it impossible to recover forgotten passwords. There is no way to reverse this operation, so make sure you really want to enable it.) [no] ->

Do you want to compile Anope with threading support? If you want to use the proxy detector, you MUST have this. If you get compilation errors, you should disable this feature and try again. [no] ->

Do you want to compile Anope with MySQL support? At this time Anope is able to dump all databases into MySQL. That means you get a read-only copy of the data. If you plan to run any module that uses MySQL, you should enable this option as well. [no] ->

Do you want to compile Anope with Module support? This will allow you to load and unload external modules of code without restarting services. You can find several Anope modules on our website. This requires libdl, if you have problems compiling disable this option. (this option is ignored on OpenBSD for the time being) [no] -> y

Where do you want the modules installed? (The trailing / is important) [/home/ircadmin/services/modules/] /home/ircadmin/services/modules /home/ircadmin/services/modules does not exist. Create it? [y] -> y

End of interactive configuration.

Searching for a suitable compiler… great, found gcc! Testing default compiler flags (-O2)… looks good. Let’s see what libraries are lying around… -lnsl -lresolv has RTLD_LOCAL Looking for OS specific needs… Looking for a 16-bit integer type… short Looking for a 32-bit integer type… int Checking for presence of include files (it’s okay if some aren’t there): strings.h… present sys/select.h… present sys/sysproto.h… not present Seeing if your system defines int16/int32… not found (this is good). How to complain when something goes wrong… ah, strerror() is here. Looking for other routines we want that you don’t have… Checking how to install files… looks like “install” will work. Checking how to copy directories… /bin/cp -dpr Creating sysconf.h… done. Creating Makefile.inc… done. Saving configuration results in config.cache… done.

All done! Now run “make” (or possibly “gmake”) to compile Services. See the INSTALL, README and FAQ files if you have any problems. dhcppc2:/home/zcworld/src/anope-1.6.5 #

make

touch services.h (cd lang ; make language.h) make[1]: Entering directory /home/zcworld/src/anope-1.6.5/lang' Generating language.h... 1410 strings make[1]: Leaving directory/home/zcworld/src/anope-1.6.5/lang’ cp -p lang/language.h . touch pseudo.h sh version.sh gcc -O2 -Wall -g -c actions.c gcc -O2 -Wall -g -c botserv.c gcc -O2 -Wall -g -c channels.c gcc -O2 -Wall -g -c chanserv.c gcc -O2 -Wall -g -c commands.c gcc -O2 -Wall -g -c compat.c gcc -O2 -Wall -g -c converter.c gcc -O2 -Wall -g -c config.c gcc -O2 -Wall -g -c datafiles.c gcc -O2 -Wall -g -c encrypt.c gcc -O2 -Wall -g -c helpserv.c gcc -O2 -Wall -g -c hostserv.c gcc -O2 -Wall -g -c init.c gcc -O2 -Wall -g -c language.c gcc -O2 -Wall -g -c list.c gcc -O2 -Wall -g -c log.c gcc -O2 -Wall -g -c mail.c gcc -O2 -Wall -g -c main.c gcc -O2 -Wall -g -c memory.c gcc -O2 -Wall -g -c memoserv.c gcc -O2 -Wall -g -c messages.c gcc -O2 -Wall -g -c misc.c gcc -O2 -Wall -g -c modules.c gcc -O2 -Wall -g -c news.c gcc -O2 -Wall -g -c nickserv.c nickserv.c: In function âload_old_ns_dbaseâ: nickserv.c:479: warning: dereferencing type-punned pointer will break strict-aliasing rules gcc -O2 -Wall -g -c operserv.c gcc -O2 -Wall -g -c process.c gcc -O2 -Wall -g -c protocol.c gcc -O2 -Wall -g -c proxy.c gcc -O2 -Wall -g -c send.c gcc -O2 -Wall -g -c sessions.c gcc -O2 -Wall -g -c slist.c gcc -O2 -Wall -g -c sockutil.c gcc -O2 -Wall -g -c timeout.c gcc -O2 -Wall -g -c users.c gcc actions.o botserv.o channels.o chanserv.o commands.o compat.o converter.o config.o datafiles.o encrypt.o helpserv.o hostserv.o init.o language.o list.o log.o mail.o main.o memory.o memoserv.o messages.o misc.o modules.o news.o nickserv.o operserv.o process.o protocol.o proxy.o send.o sessions.o slist.o sockutil.o timeout.o users.o -lnsl -lresolv -rdynamic -o services -ldl (cd lang ; make CFLAGS=” -O2 -Wall -g”) make[1]: Entering directory /home/zcworld/src/anope-1.6.5/lang' gcc -O2 -Wall -g langcomp.c -o langcomp ./langcomp cat.l ./langcomp de.l ./langcomp en_us.l ./langcomp es.l ./langcomp fr.l ./langcomp gr.l ./langcomp nl.l ./langcomp pt.l ./langcomp tr.l ./langcomp it.l ./langcomp ru.l make[1]: Leaving directory/home/zcworld/src/anope-1.6.5/lang’ All done! Now run “make” (or possibly “gmake”) to compile your modules. See the INSTALL, README and FAQ files if you have any problems. make[1]: Entering directory /home/zcworld/src/anoope-1.6.5/modules' gcc -O2 -Wall -g -c hs_moo.c gcc -O2 -Wall -g -c ircd_catserv.c make[1]: Leaving directory/home/zcworld/src/anoope-1.6.5/modules’ Now run “make install” to install Services. dhcppc2:/home/zcworld/src/anope-1.6.5 #

make install

(cd lang ; make CFLAGS=” -O2 -Wall -g”) make[1]: Entering directory /home/zcworld/src/anope-1.6.5/lang' make[1]: Nothing to be done forall’. make[1]: Leaving directory /home/zcworld/src/anope-1.6.5/lang' install -m 700 services /home/ircadmin/services/services rm -f /home/ircadmin/services/listnicks /home/ircadmin/services/listchans ln /home/ircadmin/services/services /home/ircadmin/services/listnicks ln /home/ircadmin/services/services /home/ircadmin/services/listchans (cd lang ; make install) make[1]: Entering directory/home/zcworld/src/anope-1.6.5/lang’ mkdir -p /home/ircadmin/services/languages chmod 700 /home/ircadmin/services/languages cp cat de en_us es fr gr nl pt tr it ru /home/ircadmin/services/languages chmod 600 /home/ircadmin/services/languages/ make[1]: Leaving directory `/home/zcworld/src/anope-1.6.5/lang’ /bin/cp -dpr data/ /home/ircadmin/services test -d /home/ircadmin/services/backups || mkdir /home/ircadmin/services/backups test -d /home/ircadmin/services/logs || mkdir /home/ircadmin/services/logs make[1]: Entering directory /home/zcworld/src/anope-1.6.5/modules' ld -shared hs_moo.o -o hs_moo.so ld -shared ircd_catserv.o -o ircd_catserv.so /bin/cp -dpr ./*.so /home/ircadmin/services/modules make[1]: Leaving directory/home/zcworld/src/anoope-1.6.5/modules’ Don’t forget to create/update your services.conf file! See the README for details. dhcppc2:/home/zcworld/src/anope-1.6.5 # Ok now it’s time to reset the access rights. Type cd ~ircadmin/ chown -R ircadmin:ircadmin ./ ## Пояснения и рекомендации к выбору опций во время configure - Каталог для бинарников и данных: вы указали /home/ircadmin/services. Это нормальный выбор для самообслуживаемого пользователя, но на проде имеет смысл ставить сервисы в /opt/services или /srv/services, чтобы отделить данные сервисов от домашних каталогов. - Группа и umask: по умолчанию umask 077 (файлы доступны только владельцу) — безопасно. Оставьте пустую группу, если нет специальной групповой политики. - Выбор ircd: вы выбрали “3) UnrealIRCd 3.1.1 [or later]”. Это задаёт параметры взаимодействия сервисов с IRCd; убедитесь, что ваша версия ircd совместима. - MD5 для паролей: опция задаёт хеширование паролей. MD5 сегодня считается слабым; если Anope 1.6.5 не поддерживает более безопасные алгоритмы, лучше хранить пароли с солью и избегать передачи открытых паролей в текстовых файлах. - Threading: нужно включать, если планируете использовать детектор прокси или другие многопоточные модули. Если при компиляции возникают ошибки — соберите без threading. - MySQL: в этой версии Anope поддерживает дамп в MySQL (read-only). Включайте только если знаете, какие модули зависят от MySQL. - Modules (libdl): вы включили поддержку модулей — это удобно для загрузки расширений на лету. Убедитесь, что libdl и linker поддерживают создание .so. Важно: оставляйте trailing slash (/) в пути к модулям, если configure требует его. ## Чеклист перед запуском make 1. Установлены build-зависимости: gcc, make, libdl-dev (или аналог) и заголовочные файлы для вашей ОС. 2. Проверена совместимость с вашей версией IRCd. 3. Указаны корректные пути (бинарники и данные). 4. Решено, будут ли включены: MD5, threading, MySQL, modules. 5. Сделан бэкап текущей конфигурации (если апгрейд). ## Команды после configure — что они делают - make — компилирует двоичные файлы и модули. - make install — копирует исполняемые файлы и языковые/датовые файлы в целевые директории. - cd ~ircadmin/; chown -R ircadmin:ircadmin ./ — назначает владельца и группу для всех файлов в каталоге services, это необходимо для работы с ограниченными правами. ## Рекомендации по правам доступа и безопасности - Каталог /home/ircadmin/services должен быть недоступен для чтения другим пользователям. Установите chmod 700 на каталог, 600 на конфигурации и на языковые файлы. - Если вы используете систему с systemd, рекомендуется запускать services под отдельным системным юзером (не root). - MD5-хеши можно рассматривать как лучшее, чем хранение пароля в открытом виде, но если есть возможность — используйте современные хеш-функции (bcrypt/sha256+salt). Если Anope не поддерживает их, компенсируйте безопасным доступом к базе и файлам. Важно: никогда не публикуйте ваш services.conf или базы с паролями в открытом виде. ## Типичные ошибки и способы их устранения 1. Ошибка: “dereferencing type-punned pointer will break strict-aliasing rules” в процессе компиляции. - Причина: предупреждение компилятора о возможных проблемах с aliasing. Обычно предупреждение, но если превращается в ошибку — попробуйте добавить флаг компилятора -fno-strict-aliasing. 2. Ошибка линковки модулей (.so): отсутствие libdl или неправильные флаги ld. - Решение: установите dev-пакет libc (например, glibc-devel) и убедитесь, что ld поддерживает -shared. 3. При установке языков: права не позволяют скопировать файлы. - Решение: запустите make install от пользователя, который имеет права на целевой каталог, либо используйте sudo и потом chown. 4. Проблемы с совместимостью IRCd: сервисы не регистрируются. - Решение: проверьте правильный выбор типа IRCd во время configure и соответствующий модуль/настройки в services.conf. ## Мини-SOP: Быстрая пошаговая инструкция для администратора 1. Подготовка окружения - Установите gcc, make, libncurses-dev, libssl-dev и другие зависимости для вашей ОС. 2. Распакуйте исходники и запустите ./configure. 3. Введите целевые пути: /home/ircadmin/services (или /opt/services). 4. Решите по опциям: модули = да, threading = зависит от модулей, MySQL = только при необходимости. 5. Запустите make, исправьте возможные ошибки сборки. 6. Запустите make install. 7. Создайте/обновите services.conf, проверьте права: chown -R ircadmin:ircadmin /home/ircadmin/services; chmod 700 /home/ircadmin/services; chmod 600 /home/ircadmin/services/conf 8. Запустите сервисы в тестовом окружении и проверьте лог. ## Критерии приёмки - Бинарник services успешно скомпилирован и установлен в /home/ircadmin/services/services. - Языковые файлы установлены и доступны (директория languages, права 700/600). - Модули (.so) находятся в /home/ircadmin/services/modules и загружаются без ошибок. - services.conf заполнен и содержит корректные данные для подключения к вашему IRCd. - Права доступа установлены: владелец ircadmin:ircadmin, конфиденциальные файлы — 600. ## План отката и действия при критической ошибке 1. Если после установки сервисы не запускаются — не меняйте production-конфигурации: восстановите предыдущую версию из бэкапа. 2. Удалите собранные файлы: make uninstall (если доступно) или вручную удалите /home/ircadmin/services/ и восстановите из бэкапа. 3. Проанализируйте лог make и системные логи (/var/log/syslog или journalctl). 4. Если компиляция неудачна из-за флагов компилятора — пересоберите с более простыми флагами (уберите -O2 или -fomit-frame-pointer) или с отключённым threading. ## Набор полезных команд (cheat sheet) - ./configure –prefix=/home/ircadmin/services - make -j$(nproc) - make install - cd ~ircadmin/ && chown -R ircadmin:ircadmin ./ - ls -l /home/ircadmin/services - chmod 700 /home/ircadmin/services - chmod 600 /home/ircadmin/services/* ## Роль-based checklist Администратор (Sysadmin) - Проверить зависимости и версии компилятора. - Настроить права и пользователя для запуска. - Выполнить резервное копирование перед установкой. Оператор IRC (Ops) - Проверить соответствие настроек services.conf текущему IRCd. - Убедиться, что модули не конфликтуют с политиками сети. Разработчик/интегратор - Тестировать модули в изолированном окружении. - Обрабатывать предупреждения компилятора и фиксировать потенциальные проблемы с aliasing. ## Альтернативные подходы - Использовать предсобранные пакеты (если доступны) вашего дистрибутива, чтобы избежать проблем сборки. - Развернуть Anope в контейнере (Docker) с заранее подготовленным образом для воспроизводимости. - Рассмотреть современные форки/альтернативы Anope, если вам нужны современные алгоритмы хеширования и интеграция с базами данных. ## Когда этот процесс может не подойти (контрпримеры) - Если ваша инфраструктура требует централизованной аутентификации (LDAP/SSO), встроенные механизмы Anope могут быть недостаточны. - Если политика безопасности запрещает хранение паролей с MD5, и у вас нет возможности обновить Anope до версии с лучшими хешами. ## Короткий тестовый сценарий (acceptance) 1. Запустить services локально: ./services –config /home/ircadmin/services/services.conf (путь и способ запуска зависит от конфигурации). 2. Подключиться к IRCd и попытаться зарегистрировать ник в NickServ. 3. Проверить запись в логах и состояние файлов базы. 4. Попробовать загрузить модуль через интерфейс модулей и проверить отсутствие ошибок. ## Decision flowchart — выбирать MD5/MySQL/Modules mermaid flowchart TD A[Начало: запуск ./configure] --> B{Нужен ли proxy detector?} B -- Да --> C[Включить threading] B -- Нет --> D[Оставить threading отключённым] C --> E{Нужны модули?} D --> E E -- Да --> F[Включить Module support и указать путь к /home/ircadmin/services/modules/] E -- Нет --> G[Не включать Module support] F --> H{Нужна MySQL интеграция?} G --> H H -- Да --> I[Включить MySQL support] H -- Нет --> J[Оставить MySQL отключённым] I --> K[make && make install] J --> K K --> L[Проверить права: chown -R ircadmin:ircadmin ./] L --> M[Готово] ## Краткое резюме - Вы успешно прошли ./configure, make и make install для Anope 1.6.5. - После установки обязательно проверьте services.conf, права доступа и загрузку модулей. - Оцените риски хранения паролей и при возможности обновите механизм хеширования или изолируйте доступ. Примечание: всегда тестируйте изменения в изолированной среде перед релизом в продакшн.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Исправить Error_Invalid_Flag_Number в Windows
Windows

Исправить Error_Invalid_Flag_Number в Windows

Docker: защита TCP‑сокета с TLS
DevOps

Docker: защита TCP‑сокета с TLS

Ошибка Windows 10 0x8024a112 — как исправить
Windows

Ошибка Windows 10 0x8024a112 — как исправить

PostgreSQL в Docker — запуск и лучшие практики
Databases

PostgreSQL в Docker — запуск и лучшие практики

Styli.sh: автоматическая смена обоев в Linux
Linux

Styli.sh: автоматическая смена обоев в Linux

Автоматические загрузки в Apple Music
Музыка

Автоматические загрузки в Apple Music