Как настроить unbound с –enable-dnstap: Проблема protoc-c… нет

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

При настройке unbound с --enable-dnstap он не может найти protobuf-c.

$ ./configure --enable-dnstap
...
...
...
проверка protoc-c... нет
configure: ошибка: Программа protoc-c не найдена. Пожалуйста, установите protobuf-c!

Тем не менее, protobuf-c кажется установленным.

$ sudo apt search protobuf-c
Сортировка... Готово
Полный текстовый поиск... Готово
libprotobuf-c-dev/stable,now 1.4.1-1+b1 armhf [установлен]
  Статическая библиотека и заголовки Protocol Buffers C (protobuf-c)

libprotobuf-c1/stable,now 1.4.1-1+b1 armhf [установлен,автоматически]
  Разделяемая библиотека Protocol Buffers C (protobuf-c)

librust-prometheus+protobuf-codegen-pure-dev/stable 0.13.3-1 armhf
  Библиотека инструментации Prometheus для приложений Rust - функция "protobuf-codegen-pure" и 1 другая

librust-protobuf-codegen-dev/stable 2.27.1-1+b2 armhf
  Генератор кода для rust-protobuf - Исходный код Rust

librust-protobuf-codegen-pure-dev/stable 2.27.1-1 armhf
  Чистый генератор кода на Rust для protobuf с использованием crate protobuf-parser - Исходный код Rust

protobuf-c-compiler/stable 1.4.1-1+b1 armhf
  Компилятор Protocol Buffers C (protobuf-c)

protobuf-codegen/stable 2.27.1-1+b2 armhf
  Генератор кода для rust-protobuf

protobuf-compiler/stable 3.21.12-3 armhf
  компилятор для файлов определения протоколов

protobuf-compiler-grpc/stable 1.51.1-3+b1 armhf
  высокопроизводительный общий RPC-фреймворк - плагин protobuf

protobuf-compiler-grpc-java-plugin/stable 1.41.3+ds-1 armhf
  высокопроизводительный общий RPC-фреймворк - плагин Java для protobuf  
$ dpkg -l | grep protobuf
ii  libprotobuf-c-dev:armhf              1.4.1-1+b1                              armhf        Статическая библиотека и заголовки Protocol Buffers C (protobuf-c)
ii  libprotobuf-c1:armhf                 1.4.1-1+b1                              armhf        Разделяемая библиотека Protocol Buffers C (protobuf-c)
$ sudo find / -name libprotobuf-c1
/usr/share/doc/libprotobuf-c1
$ sudo find / -name libprotobuf-c-dev
/usr/share/doc/libprotobuf-c-dev
$ ls /usr/bin/ | grep proto
$ ls /usr/local/bin/ | grep proto
$ ls /bin/ | grep proto
$ ls /usr/lib/ | grep proto
$ ls /usr/local/lib/ | grep proto
$ ls /lib/ | grep proto
$

Я тоже не могу найти библиотеку или программу protobuf-c, хотя она установлена.

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

Обновление:

Я обнаружил из этого ответа, что название библиотеки libprotobuf-c.so.1.

Ее расположение было найдено с помощью:

$ sudo find / -name libprotobuf-c.so.1
/usr/lib/arm-linux-gnueabihf/libprotobuf-c.so.1
$

Я пытался создать ссылку на этот файл в /usr/local/lib (каталог библиотеки по умолчанию для Unbound) через

$ ln -s /usr/lib/arm-linux-gnueabihf/libprotobuf-c.so.1 

и снова запустил

$ ./configure --enable-dnstap

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

Я также попробовал:

./configure --enable-dnstap --with-protobuf-c=/usr/lib/arm-linux-gnueabihf/libprotobuf-c.so.1

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

Версия unbound, которую я пытаюсь настроить, – 1.22.0.

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

Для успешной конфигурации Unbound с параметром --enable-dnstap необходимо убедиться, что библиотека Protobuf-C правильно установлена и доступна для компиляции. Вы уже провели ряд диагностики и обнаружили, что библиотека установлена, но программа конфигурации не может ее найти. Давайте рассмотрим несколько шагов для устранения этой проблемы.

1. Убедитесь в установке необходимых пакетов

Во-первых, убедитесь, что у вас установлены все необходимые пакеты для работы с protobuf-c. Запустите следующую команду, чтобы установить отсутствующие пакеты:

sudo apt-get install protobuf-c-compiler libprotobuf-c-dev

2. Проверьте наличие программы protoc-c

Таким образом, важным моментом является наличие самой программы protoc-c, которая отвечает за генерацию кода из файлов .proto. Выполните команду, чтобы убедиться, что она доступна в вашей системе:

which protoc-c

Если команда не находит protoc-c, это указывает на то, что бинарное окружение не находится в ваших стандартных путях поиска.

3. Установка и настройка переменных среды

Если библиотека установлена, но конфигурация по-прежнему не может ее найти, попробуйте установить переменную окружения PKG_CONFIG_PATH:

export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig:$PKG_CONFIG_PATH

Эта команда добавляет путь к конфигурационным файлам pkg-config для обработки библиотек.

4. Проверка конфигурации pkg-config

Убедитесь, что pkg-config может найти библиотеку protobuf-c. Выполните:

pkg-config --cflags protobuf-c

Если вы видите соответствующие пути заголовков, это хороший знак. В противном случае, вам следует проверить, установлен ли пакет protobuf-c правильно и есть ли у него конфигурационные файлы в каталоге pkgconfig.

5. Повторная попытка конфигурации

После выполнения предыдущих шагов повторите конфигурацию Unbound с параметром --enable-dnstap:

./configure --enable-dnstap

6. Дополнительные опции конфигурации

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

./configure --enable-dnstap --with-protobuf-c=/usr/bin/protoc-c

7. Логи и дополнительная диагностика

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

less config.log

Ищите сообщения об ошибках, связанных с protoc-c или другими библиотеками, и пытайтесь понять, на каком этапе процесс не удался.

Заключение

Настройка Unbound с --enable-dnstap может быть сложной задачей, требующей внимания к деталям и тщательной проверки всех зависимостей. Соблюдение перечисленных шагов должно помочь вам решить проблемы, связанные с конфигурацией. Если ни один вариант не сработает, рекомендуется обратиться на форумы сообщества или в службу поддержки, предоставив информацию о вашей среде и все выполненные шаги.

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

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