我花了几个小时尝试安装软件包但没有成功;似乎在 Linux 环境中有时会发生这种情况。
背景:我想要安装的软件包可以作为 1).deb
用于 x86 而不是 x64 的软件包、2) a .Run
、3) 源代码和 4) OSX 安装程序提供。 OSX 安装程序可以正常工作。在全新安装 Debian 7 时,我尝试了从源代码编译 、 和.deb
。.Run
这三个人带领我经历了一系列的困难。最基本的问题似乎是,通过这些途径,Debian 7 给了我太旧的版本LibC
和太旧的Ocaml
.我的大部分时间都花在执行一个又一个 apt-get 命令来尝试解决依赖关系上。
问题:有哪些工具可以通过尽可能自动化的过程来简化软件包的安装?所有包,甚至从源代码构建,都会明确它们需要哪些依赖项的哪个版本,对吗?那么为什么不能自动解决所有依赖关系呢?
我什至很乐意在我的系统上创建一个目录,其中包含我的包所需的每个依赖项的副本,以便它可以在自己的小环境中运行,而无需修改我系统上其他包的版本;我不确定这是否可能。我确信一定有某种方法可以说“给我一个名为 Foo 的软件包,版本 4.2.3”,然后其他一切都为我完成。
答案1
体验几乎相同。你的问题是 Debian(稳定)不是一个尖端发行版,它是稳定的。这意味着它将在其存储库中包含旧版本的软件包(顺便提及软件包名称可能是个好主意)。您将其与新版本的 OSX 进行比较,后者具有更新版本的基本库,例如libc
.
安装.deb
为您正在运行的 Debian 版本打包的软件包非常简单且轻松。相信我,我过去必须从源代码安装大多数东西。当你运行aptitude install foo.4.2.3.deb
你的时候是说“给我一个名为 Foo 的软件包,版本 4.2.3”,然后其他一切都为您完成。如果由于您使用的是旧版本而没有在存储库中,那不是包管理器的错。
因此,我建议发布一个新问题并询问如何安装您尝试获取的特定软件包。请记住,如果需要更新版本,libc
将整个系统升级到testing
或experimental
存储库可能会更容易。虽然可以只升级 libc,但这既不简单也不直接,请参阅这里。
另外,您应该知道这是不是一个小问题。虽然包管理器可以很好地管理依赖关系,但它们可能会发生冲突。尤其是在使用像libc
.
该命令将打印出依赖于libc
.
apt-cache rdepends libc6
在我的 Debian 上,该列表包含 16056 个不同的软件包。如果因为软件包foo
依赖于较新的版本而升级 libc,那么软件包管理器应如何处理 16056 软件包依赖于已安装版本的事实?它如何知道它们是否也与新版本兼容?
答案2
我想在这里顺便说一句,我认为你的期望是错误的。
这些解决方案针对的是两个完全不同的受众。苹果严格控制可用的软件,而且它只是一小部分应用程序。
我帮助了更多的人,我承认他们正在使用 OSX 系统,他们想要安装开源项目“X”,但他们在 OSX 上使用错误版本的 Xcode 经历了所有相同类型的麻烦,或者他们是使用官方版本的subversion,需要从MacPorts或HomeBrew安装版本。在安装这个包“X”之前,与不同的库和依赖项进行斗争实际上没有什么区别。
我见过没有任何神奇的工具可以让您将依赖项放入目录中并安装应用程序“X”。它根本不存在,而且永远不会存在。人们已经进行了许多尝试来使依赖管理和包管理变得更好,但这只是一个需要解决的极其复杂的问题。
Apt、Yum 等都做得不错,但问题是他们试图解决一个不受约束的问题,而这通常是不可能的。您只能获得 80% 类型的解决方案,或者适用于“大多数”情况的解决方案。
就这么简单。