我今天升级到了 12.04(64 位),到目前为止一切顺利,一切都运行良好,直到我尝试做一些更高级的东西。
当我尝试添加工具链测试 ppa,我得到的是分布不匹配。尝试一两次后,情况发生了变化,并将我链接到此错误报告。到目前为止一切都很好,一个奇怪的错误,但我不是唯一一个,它会被修复,对吧?
但我发现这是一个非常奇怪的错误,我还注意到一些其他(自定义)应用程序在我的发行版本上表现得很奇怪。所以我试图找出我正在运行的版本,以下是我得到的结果:
>:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu quantal (development branch)
Release: 12.10
Codename: quantal
>:~$ cat /etc/issue
Ubuntu quantal (development branch) \n \l
现在我想知道:我在安装时做错了什么吗?我是不是不小心下载了一些奇怪的夜间版本,设置了错误的存储库,......?或者这只是系统某个小部分的 bug,导致报告错误,可能会混淆一两个应用程序?
现在,无论原因是什么:有没有一种简单的方法可以让我将此发布信息再次设置为正确的版本?
答案1
我也遇到了同样的问题。我的情况是因为我ppa:ubuntu-工具链-r/测试已启用,尽管仅precise
被列为系列,但base-files
其中的软件包似乎属于quantal
。要找出行为不当的base-files
软件包的安装位置,请使用以下命令:
$ apt-cache policy base-files
找到版本与安装的版本匹配的行并检查针对该版本报告的 URL。
如果你想保持 PPA 启用(例如因为你想/必须使用 gcc-4.7 编译器),你可以使用apt-pinning强制系统保留 base-files 包,同时允许您安装 gcc-4.7。创建文件/etc/apt/preferences.d/base-files
(确保名称中没有使用任何点),内容如下:
Package: base-files
Pin: release o=Ubuntu
Pin-Priority: 1001
这将在下次升级时强制将软件包降级base-files
为其默认版本(从主 ubuntu 存储库)。
要特别注意印刷错误,尤其是空格和大写。
文件到位后,使用apt-cache policy base-files
来确定Candidate
版本。它应该与默认 Ubuntu 存档旁边列出的版本相对应。最后,开始降级:
$ sudo apt-get upgrade
当被问及你是否真的想要降级(大写不是我的......),回答y+ Enter。
答案2
据我所知,一旦软件包升级,就无法降级,除非执行类似“删除软件包”->“更改存储库”->“更新 APT”->“重新安装旧软件包”的程序。这是一个相当奇怪的程序,因为有时会出现一些依赖性和版本问题。
无论如何,转到/etc/apt/sources.list
并/etc/apt/sources.list.d/*.list
查看是否有一些行包含单词“quantal”。
如果有,那么这就是问题所在。我建议您备份所有内容并重新安装一个干净的稳定版本。另一个解决方案是更改“precise”中的所有“quantal”字样,重新更新存储库并希望所有 quantal 软件包都将被更新的 precise 版本替换。但这是一个非常糟糕的解决方案!