在我的开发机器上,我有 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20;在全新安装的 Ubuntu 14.04 上,我有 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19。我刚刚开始创建 DEB 文件来安装我的应用程序,它可以安装应用程序本身,现在我希望我的 DEB 文件也能安装必要的共享库(如 libstdc++.so.6.0.20)。
该库是从包 libstdc++6 安装的,但是默认存储库没有正确的版本,我必须添加 ppa:ubuntu-toolchain-r/test 存储库才能获取正确的版本。
好像我需要添加行
Depends: libstdc++6:amd64 (= 4.9.2-0ubuntu1~14.04)
到我的 DEBIAN/control 文件,但似乎如果不告诉它有关存储库的信息,它就无法工作,而且我不知道如何做到这一点。
还是我完全搞错了方向?我猜如果我正确设置了对 libstdc++6 的依赖,它会通过互联网下载,作为我的 DEB 安装程序的一部分?
谢谢,克里斯
ps 我的 DEB 安装程序只会在内部使用,它将从 USB 记忆棒或类似设备复制到目标机器上,永远不会从互联网上下载...
答案1
一个软件包可以依赖于另一个软件包的任何版本,但软件包管理系统只有在启用的存储库中才能安装该依赖项。因此,您必须在安装软件包之前将该 PPA 添加到目标系统。您的安装说明将如下所示:
sudo add-apt-repository ppa:...
sudo apt-get update
# Followed by preferred means of installing your package
另请查看如何在没有互联网(离线)的情况下安装软件或软件包?了解在 USB 驱动器上设置小型存储库的方法,以便所有依赖项都直接包含在其中,而无需添加 PPA。
(顺便说一句,您不必在依赖项中指定架构。)