【问题标题】:Combine Debian packages with libraries installed from source将 Debian 软件包与从源代码安装的库相结合
【发布时间】:2021-03-16 15:59:25
【问题描述】:

在我的 linux (Ubuntu 11.04) 开发机器上。我经常需要从源代码安装库。这总是会给我带来问题,因为包管理器在检查依赖项时不会考虑从源代码安装的包。这使得包管理器对我来说毫无价值,因为一旦我从源代码安装了一组库(特别是如果它们对 gnome 环境至关重要,即 gstreamer),我将永远无法再次使用它,而不会使我的整个发行版与混合依赖项搞砸。在我看来,使用 pkg-config 检查依赖关系相对简单,而不必担心 deb 数据库。我不介意在这里写一点代码。有人有什么想法吗?

【问题讨论】:

  • 我想构建一个你想要安装的包的 .deb 会更好。我不确切知道它是如何工作的,但对于程序员来说应该不会太难。至少,一个 .rpm 非常容易构建...
  • 当我经常遇到这个问题时,我通常会自己构建一个 debian 包,所以包管理器有所有需要的信息。
  • @glglgl 所以在我用我想要的配置编译后,我可以将二进制文件转储到 .deb 中吗?我想知道如何做到这一点。此外,我仍然希望能够变得更聪明——我不介意帮助他们,因为我知道开源开发人员很忙——因为他们不调用 pkg-config 来检查安装是很愚蠢的依赖关系。
  • @AProgrammer #glglgl 你们能给我一个关于如何做你推荐的事情的链接吗?这对你们俩来说都是便宜的。对于其他所有人,我仍然希望将其修复到我不必每次都这样做的地方。
  • equivs 包专为此目的而设计。它允许您创建一个具有所需名称的空虚拟包。安装它,包管理器会很高兴。 (它不是一文不值,它正在做它的工作,并且每天都在拯救人们的底部。--force-depends 标志允许您覆盖单个调用的依赖关系约束。)

标签: c linux ubuntu debian aptitude


【解决方案1】:

或者,您应该查看equivs 包,该包的目的是创建空的.debs,这将使apt/dpkg 认为某个包没有安装。

【讨论】:

    【解决方案2】:

    从 Debian stable 中获取源代码包,并使用开发工具构建一个 .deb。如果您需要更新的上游版本,您可以将 Debian 源代码的 .diff.gz 部分应用到上游 tarball 并获得一个很有可能工作的构建基础架构。如果没有,我相信包维护者会喜欢补丁,使其与新的上游版本一起工作。

    【讨论】:

    • 通过开发人员工具我假设您的意思是 gcc、make 等?编译源代码后如何构建 .deb?另外,我可以使用实际项目位置的源代码吗? IE。 git、svn、hg?
    • 我的意思是 Debian 开发人员用来自动构建软件包的各种脚本。如果我没记错的话,大部分都在dpkg-dev 包中;你在这里需要的是dpkg-buildpackage。说实话,我不记得我是如何学会使用它们的。这些信息在各种 Debian developer manuals 中,与您不感兴趣的项目管理混合在一起。尝试浏览packaging-tutorial,通过。
    • 在这里感谢您的帮助,我将学习如何做到这一点。与此同时,我刚刚开始工作,这将达到我的目的。
    • (是的,您可以使用上游源代码。事实上,特定于软件包的 Debian 构建体系结构始终作为相对于上游源代码的补丁分发,因此您有机会剔除源代码更改如果您不想要它们,请使用补丁)。
    • 旧式 Debian 软件包基于原始 upstram tarball 的存在。由于各种原因,有一些奇怪的包必须解决这个假设,但通常,您基本上可以在提取的 .deb 源之上提取一个更新的 tarball 并运行debuild
    【解决方案3】:

    另一个选项是checkinstall。它会创建一个包含依赖信息的 .deb 包,但您也可以通过包管理将其卸载。

    【讨论】:

      猜你喜欢
      • 2012-02-15
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 2018-05-21
      相关资源
      最近更新 更多