- Вопрос или проблема
- Ответ или решение
- 1. Убедитесь в установке необходимых пакетов
- 2. Проверьте наличие программы protoc-c
- 3. Установка и настройка переменных среды
- 4. Проверка конфигурации pkg-config
- 5. Повторная попытка конфигурации
- 6. Дополнительные опции конфигурации
- 7. Логи и дополнительная диагностика
- Заключение
Вопрос или проблема
При настройке 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
может быть сложной задачей, требующей внимания к деталям и тщательной проверки всех зависимостей. Соблюдение перечисленных шагов должно помочь вам решить проблемы, связанные с конфигурацией. Если ни один вариант не сработает, рекомендуется обратиться на форумы сообщества или в службу поддержки, предоставив информацию о вашей среде и все выполненные шаги.