Вопрос или проблема
При попытке настроить 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-запросов в вашей системе.