【问题标题】:Prevent apt from overwriting a package manually installed防止apt覆盖手动安装的包
【发布时间】:2019-02-14 21:04:00
【问题描述】:

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】:

    一个简单的解决方案可能是简单地更改protobuf-compiler 3.6.1的安装目录。

    您可以安装到其他目​​录,而不是安装到/usr。在我的工作 PC(我没有 sudo 权限)上,我安装到我创建的名为 /data/local_installs 的目录中。然后更新path环境变量

    export PATH=/data/local_installs:$PATH
    

    你准备好了。

    使用此方法,您不必担心apt 正在做什么,因为/data/local_installs 中保存的protobuf-compiler 将始终在apt 中的apt 受控版本之前在您的路径中找到@

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2010-10-26
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多