问题
我尝试使用以下命令安装 Boost 版本 1.55(我的程序需要此特定版本):
sudo apt-get install libboost1.55-all-dev
但它一直给我错误信息:
Reading package lists... Done
Building dependency tree Reading state
information... Done
E: Unable to locate package libboost1.55-all-dev
E: Couldn't find any package by glob 'libboost1.55-all-dev'
E: Couldn't find any package by regex 'libboost1.55-all-dev'
我尝试过
这个问题建议尝试:
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install libboost-all-dev
但是,我仍然收到同样的错误。
这个问题建议尝试:
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager
但是,这只给了我以下错误,我找不到解决方法:
The following packages have unmet dependencies:
y-ppa-manager : Depends: yad (>= 0.36.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
这个问题建议尝试使用 apt-file 来搜索安装所需的软件包,但是当我运行搜索命令时没有任何内容显示。
问题
该问题的可能原因及解决方案是什么?
答案1
问题的原因假设 Ubuntu 存储库是全面的并且保留了较旧的软件。
事实上,Ubuntu 是一个“快照”发行版。在发布过程中,只包含所有可用软件的最新稳定快照。旧版本不包含在内。
可能的解决方案
1)如果源可用,您可以根据当前依赖项重新编译。
2)Libboost1.55 在某些旧版本的 Ubuntu 中可用。
$ rmadison libboost1.55-dev
libboost1.55-dev | 1.55.0-1 | trusty/universe | amd64, arm64, armhf, i386, powerpc, ppc64el
libboost1.55-dev | 1.55.0+dfsg-3ubuntu2 | vivid | amd64, arm64, armhf, i386, powerpc, ppc64el
你的最安全、最简单的解决方案是将 Ubuntu 14.04 安装到虚拟机中,以便安全地运行您的软件,而不会破坏您当前的系统。
有人可能会建议替代:降级 libboost(在 16.04 系统上安装 14.04 软件包)。但是,对于非高级用户来说,这可能很困难且危险。我有 12 年摆弄软件包和软件包管理器的经验,我不会这么做。
让系统恢复工作状态
卸载您在失败尝试期间安装的那些软件包。删除那些源。您的尝试引入了版本冲突(这就是“持有损坏的软件包”的意思)。您的软件包管理器已损坏。在修复它之前,您无法安装、卸载或更新您的系统(包括安全更新)。