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
理解该依赖关系得到满足,并且不让它用旧的覆盖我的新版本?
答案 0 :(得分:1)
一个简单的解决方案可能只是更改protobuf-compiler
3.6.1的安装目录。
您可以安装到其他目录,而不是安装到/usr
。在我的工作PC上(我没有sudo权限),我安装到一个名为/data/local_installs
的目录中。然后更新路径环境变量
export PATH=/data/local_installs:$PATH
您就可以出发了。
使用这种方法,您不必担心apt
在做什么,因为protobuf-compiler
中保存的/data/local_installs
总是会在{{1}之前的路径中找到} apt