Ubuntu Bionic提供Protobuf 3.0.0,我想使用最新版本3.6.1。
我已经去了并构建了Protobuf源代码并使用前缀/usr
安装它们,因此文件最终位于官方Ubuntu软件包所在的位置。
但是,如果我随后发出apt-get install protobuf-compiler
,它将用旧版本覆盖我的protoc
二进制文件。 (实际上,protobuf-compiler
被指定为我用mk-build-deps
构建的包的构建依赖项。)
我已经尝试使用apt-mark manual protobuf-compiler
告诉apt
我已经手动安装它,但它告诉我我不能这样做,因为没有安装包。 (它是如何确定的?我不知道。)
类似地,apt-mark hold
不会阻止二进制文件被覆盖。
安装此软件的正确方法是什么,让apt
了解依赖是否满足,而不是用旧的覆盖我的新版本?
一个简单的解决方案可能只是更改protobuf-compiler
3.6.1的安装目录。
您可以安装到其他目录,而不是安装到/usr
。在我的工作PC上(我没有sudo权限)我安装到我创建的名为/data/local_installs
的目录中。然后更新路径环境变量
export PATH=/data/local_installs:$PATH
你准备好了。
使用这种方法你不必担心apt
正在做什么,因为protobuf-compiler
中保存的/data/local_installs
总是会在apt
中的/usr
控制版本之前的路径中找到