当unbound
使用配置时--enable-dnstap
,无法定位protobuf-c
。
$ ./configure --enable-dnstap
...
...
...
checking for protoc-c... no
configure: error: The protoc-c program was not found. Please install protobuf-c!
不过,protobuf-c
看上去已经安装好了。
$ sudo apt search protobuf-c
Sorting... Done
Full Text Search... Done
libprotobuf-c-dev/stable,now 1.4.1-1+b1 armhf [installed]
Protocol Buffers C static library and headers (protobuf-c)
libprotobuf-c1/stable,now 1.4.1-1+b1 armhf [installed,automatic]
Protocol Buffers C shared library (protobuf-c)
librust-prometheus+protobuf-codegen-pure-dev/stable 0.13.3-1 armhf
Prometheus instrumentation library for Rust applications - feature "protobuf-codegen-pure" and 1 more
librust-protobuf-codegen-dev/stable 2.27.1-1+b2 armhf
Code generator for rust-protobuf - Rust source code
librust-protobuf-codegen-pure-dev/stable 2.27.1-1 armhf
Pure-rust codegen for protobuf using protobuf-parser crate - Rust source code
protobuf-c-compiler/stable 1.4.1-1+b1 armhf
Protocol Buffers C compiler (protobuf-c)
protobuf-codegen/stable 2.27.1-1+b2 armhf
Code generator for rust-protobuf
protobuf-compiler/stable 3.21.12-3 armhf
compiler for protocol buffer definition files
protobuf-compiler-grpc/stable 1.51.1-3+b1 armhf
high performance general RPC framework - protobuf plugin
protobuf-compiler-grpc-java-plugin/stable 1.41.3+ds-1 armhf
high performance general RPC framework - protobuf Java plugin
$ dpkg -l | grep protobuf
ii libprotobuf-c-dev:armhf 1.4.1-1+b1 armhf Protocol Buffers C static library and headers (protobuf-c)
ii libprotobuf-c1:armhf 1.4.1-1+b1 armhf Protocol Buffers C shared library (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
(未绑定的默认安装库目录)
$ 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
并且仍然收到与上述相同的错误消息。
我尝试配置的非绑定版本是 1.22.0。
此问题不重复How do I find the package that provided a file?。原因:
- 我已经在使用
dpkg
。 - 我发现使用
apt search
更合适,因为它显示了与描述相关的所有其他包protobuf-c
。 - 除了 之外
libprotobuf-c
,unbound
还使用protoc-c
程序(由未绑定成员告知我),安装后即可使用protobuf-c-compiler
(参见@steeldriver 评论)。使用 不会泄露此信息dpkg
。
要使用选项配置unbound
--enable-dnstap
,首先需要安装以下apt包: