Как настроить unbound с –enable-systemd?

Вопрос или проблема

При попытке настроить unbound с включенным systemd unbound не смог обнаружить systemd.

$ ./configure --enable-systemd
...
...
...
проверка для SYSTEMD... нет
configure: ошибка: Требования пакета (libsystemd) не выполнены:

Пакет 'libsystemd', необходимый для 'virtual:world', не найден

Рекомендуется настроить переменную окружения PKG_CONFIG_PATH, если вы
установили программное обеспечение в нестандартный префикс.

Кроме того, вы можете установить переменные окружения SYSTEMD_CFLAGS
и SYSTEMD_LIBS, чтобы избежать необходимости вызывать pkg-config.
Смотрите страницу man для pkg-config для получения дополнительной информации.

Однако systemd присутствует:

$ dpkg -l | grep systemd
ii  dbus-user-session                    1.14.10-1~deb12u1                       armhf        простая система межпроцессного обмена (интеграция systemd --user)
ii  libpam-systemd:armhf                 252.31-1~deb12u1                        armhf        менеджер систем и служб - модуль PAM
ii  libsystemd-shared:armhf              252.31-1~deb12u1                        armhf        общая закрытая библиотека systemd
ii  libsystemd0:armhf                    252.31-1~deb12u1                        armhf        библиотека утилит systemd
ii  systemd                              252.31-1~deb12u1                        armhf        менеджер систем и служб
ii  systemd-resolved                     252.31-1~deb12u1                        armhf        разрешатель DNS systemd
ii  systemd-sysv                         252.31-1~deb12u1                        armhf        менеджер систем и служб - совместимость с SysV
ii  systemd-timesyncd                    252.31-1~deb12u1                        armhf        минималистичный сервис для синхронизации местного времени с NTP серверами
$ ls /usr/lib/systemd
каталог            systemd-boot-check-no-failures  systemd-integritysetup        systemd-network-generator  systemd-shutdown             systemd-time-wait-sync           system-preset
сеть               systemd-cgroups-agent           systemd-journald              systemd-pcrphase           systemd-sleep                systemd-udevd                    system-shutdown
ntp-units.d        systemd-cryptsetup              systemd-localed               systemd-pstore             systemd-socket-proxyd        systemd-update-utmp              system-sleep
resolv.conf        systemd-fsck                    systemd-logind                systemd-quotacheck         systemd-sulogin-shell        systemd-user-runtime-dir         пользователь
система            systemd-fsckd                   systemd-makefs                systemd-random-seed        systemd-sysctl               systemd-user-sessions            генераторы окружения пользователя
systemd            systemd-growfs                  systemd-measure               systemd-remount-fs         systemd-sysroot-fstab-check  systemd-veritysetup              генераторы пользователя
systemd-ac-power   systemd-hibernate-resume        systemd-modules-load          systemd-reply-password     systemd-sysv-install         systemd-volatile-root            пользовательский префикс
systemd-backlight  systemd-hostnamed               systemd-networkd              systemd-resolved           systemd-timedated            systemd-xdg-autostart-condition
systemd-binfmt     systemd-initctl                 systemd-networkd-wait-online  systemd-rfkill             systemd-timesyncd            генераторы системы

Похоже, что пакет библиотеки утилит systemd на этом устройстве называется libsystemd0, а не systemd. Я пытался использовать

$ ./configure --enable-systemd SYSTEMD_LIBS=/usr/lib/systemd

но получил то же сообщение об ошибке, что и выше.

Также,

$ echo $PKG_CONFIG_PATH

$ pkg-config --list-all 
libunbound                     unbound - Библиотека с проверяющим, рекурсивным и кэширующим резолвером DNS
libsodium                      libsodium - Современная и простая в использовании криптографическая библиотека
libnsl                         libnsl - Библиотека, содержащая функции NIS с использованием TI-RPC (с поддержкой IPv6)
expat                          expat - парсер XML expat
libcrypt                       libxcrypt - Расширенная библиотека шифрования для DES, MD5, Blowfish и других
libtirpc                       libtirpc - Библиотека RPC, независимая от транспорта
openssl                        OpenSSL - Библиотека и инструменты для безопасных сокетов и криптографии
libssl                         OpenSSL-libssl - Библиотека и инструменты для безопасных сокетов и криптографии
libxcrypt                      libxcrypt - Расширенная библиотека шифрования для DES, MD5, Blowfish и других
libcrypto                      OpenSSL-libcrypto - Библиотека для криптографии OpenSSL
udev                           udev - udev
xkeyboard-config               XKeyboardConfig - Данные конфигурации X-клавиатуры
systemd                        systemd - Менеджер систем и служб systemd
bash-completion                bash-completion - программируемое дополнение для командной оболочки bash
$ pkg-config --cflags systemd

$ pkg-config --cflags systemd0
Пакет systemd0 не найден в пути поиска pkg-config.
Возможно, вам следует добавить каталог, содержащий `systemd0.pc`
в переменную окружения PKG_CONFIG_PATH
Пакет 'systemd0', необходимый для 'virtual:world', не найден

Как мне решить эту проблему конфигурации?

Ответ или решение

Чтобы настроить Unbound с поддержкой systemd, необходимо выполнить несколько шагов, которые помогут решить проблему с отсутствием зависимостей, связанных с библиотекой libsystemd. Это типичная задача для специалистов в области IT, работающих с системами на базе Linux. Рассмотрим процесс более подробно.

Шаг 1: Установка необходимых библиотек

Сначала убедитесь, что у вас установлены необходимые пакеты для работы с systemd. На большинстве дистрибутивов Debian и Ubuntu это можно сделать с помощью следующей команды:

sudo apt-get install libsystemd-dev pkg-config

Пакет libsystemd-dev содержит файлы заголовков и необходимые библиотеки для разработки, работа с pkg-config позволяет менеджеру сборки правильно находить пути к установленным библиотекам.

Шаг 2: Проверка наличия pkg-config

Убедитесь, что pkg-config установлен и правильно функционирует:

pkg-config --version

Если пакет не найден, установите его с помощью команды:

sudo apt-get install pkg-config

Шаг 3: Установка переменных окружения

Если у вас установлены все необходимые библиотеки, но конфигурация всё равно не удаётся, возможно, стоит задать переменные окружения PKG_CONFIG_PATH, SYSTEMD_CFLAGS и SYSTEMD_LIBS. Для этого выполните следующие команды:

export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig
export SYSTEMD_CFLAGS=$(pkg-config --cflags libsystemd)
export SYSTEMD_LIBS=$(pkg-config --libs libsystemd)

Затем проверьте, правильно ли задались переменные:

echo $SYSTEMD_CFLAGS
echo $SYSTEMD_LIBS

Шаг 4: Конфигурация Unbound

Теперь, когда все зависимости установлены и переменные окружения заданы, можно попробовать снова выполнить команду конфигурации:

./configure --enable-systemd

Если всё прошло успешно, вы увидите сообщение о том, что система готова к сборке.

Шаг 5: Сборка и установка

Если конфигурация выполнена без ошибок, вы можете собрать и установить Unbound командой:

make
sudo make install

Шаг 6: Проверка установки и службы

После установки убедитесь, что Unbound корректно интегрирован с systemd. Проверьте, запускалась ли служба:

systemctl status unbound

Если служба не запущена, вы можете ее запустить командой:

sudo systemctl start unbound

И добавьте её в автозагрузку:

sudo systemctl enable unbound

Заключение

Теперь Unbound должен работать с поддержкой systemd. Если у вас возникли сложности на любом этапе процесса, убедитесь, что все зависимости установлены и переменные окружения заданы правильно. Эффективная установка Unbound позволит обеспечить надежное разрешение DNS-запросов в вашей системе.

Оцените материал
Добавить комментарий

Капча загружается...