![当已经有了 repo 包时,我可以从源代码安装吗?](https://linux22.com/image/109266/%E5%BD%93%E5%B7%B2%E7%BB%8F%E6%9C%89%E4%BA%86%20repo%20%E5%8C%85%E6%97%B6%EF%BC%8C%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BB%8E%E6%BA%90%E4%BB%A3%E7%A0%81%E5%AE%89%E8%A3%85%E5%90%97%EF%BC%9F.png)
我只是尝试在 Ubuntu 上从源代码安装 Virtualbox,但它不允许我安装,因为我已经有了 repo 包。理想情况下我需要两个版本。我是否可以通过源代码安装来绕过此限制?
以下是在 deb 软件包上执行 sudo dpkg -i 命令后出现的错误消息:
Selecting previously unselected package virtualbox-5.1.
dpkg: regarding virtualbox-5.1_5.1.18-114002-Ubuntu-trusty_amd64.deb containing virtualbox-5.1:
virtualbox-5.1 conflicts with virtualbox
virtualbox-5.0 provides virtualbox and is present and installed.
dpkg: error processing archive virtualbox-5.1_5.1.18-114002-Ubuntu-trusty_amd64.deb (--install):
conflicting packages - not installing virtualbox-5.1
Errors were encountered while processing:
virtualbox-5.1_5.1.18-114002-Ubuntu-trusty_amd64.deb
答案1
您无法通过包管理器安装同一包的两个版本。 (这就是 APT 的工作原理 - 还有其他包管理器的工作方式不同。)如果您尝试安装第二个版本,它会替换旧版本。
可以使用 APT 安装某些程序的多个版本。这是通过在包名称中添加程序版本来完成的。它通常是针对库完成的,因为您可能使用同一库的不同版本安装了多个程序。这实际上发生在 VirtualBox 上:您尝试virtualbox-5.1
在virtualbox-5.0
已经安装的情况下进行安装。就包名称而言,这是可能的。然而,这些软件包实际上不能一起安装;包元数据包含冲突信息,告诉包管理器不要将它们安装在一起。即使包元数据没有声明冲突,这两个包也无法安装在一起,因为它们提供具有相同名称的文件。我不知道为什么 VirtualBox 的软件包名称中包含软件的版本。
如果要安装 VirtualBox 的多个版本,则必须从二进制发行版或源代码安装它们,而不使用包管理器。换句话说,不要获取 deb 文件(其中一个版本可能除外)。