防止覆盖手动安装的包

问题描述 投票:1回答:1

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了解依赖是否满足,而不是用旧的覆盖我的新版本?

ubuntu apt debian-based
1个回答
1
投票

一个简单的解决方案可能只是更改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控制版本之前的路径中找到

© www.soinside.com 2019 - 2024. All rights reserved.