我最近将我的桌面操作系统从 Ubuntu 12.04 升级到了 12.10(完全重新安装)。在升级之前,我列出了 Ubuntu 12.04 上安装的所有程序。
sudo dpkg --get-selections > file
之后我重新安装了 Ubuntu 12.10,完成后我执行了以下命令:
sudo dpkg --set-selections < file
sudo apt-get dselect-upgrade
问题出现的时间是这样的:执行上述命令时,我收到了几个类似的警告:
dpkg: warning: package not in database at line xxx
并且很多程序都没有安装。我不知道这一行是什么意思。
我搜索了网络,似乎不只我一个人遇到这个问题。我还没有找到对我有用的解决方案。
知道这是什么原因造成的吗?
答案1
您不仅拥有已安装程序的列表,还拥有计算机上的每个软件包。有些软件包不再存在于存储库中,因为它们已被替换。您应该能够忽略这些错误。
答案2
检查您的 PPA,并尝试将 12.04 中的尽可能多的 PPA 添加到 12.10 中。如果您不记得它们,也没什么大不了的,但您会丢失软件,同时保留从主存储库安装的依赖项。
在旧安装中,您可能有 PPA 和存储库。由于存储库可能会过时或停止打包某些软件包,
例如,PPA 有foo
,默认存储库有bar
。然而,在新版本中,存储库不再包含,bar
并且您没有foo
PPA。这两个软件包都没有安装,但它们的依赖项仍然存在,因为它们是 的一部分sudo dpkg --get-selections
。
答案3
嗨,谢谢你的意见!问题是我收到列表上每个软件/软件包的警告,但什么都没安装。所有东西都过时了吗?
现在让我们坦白地说,当我绑定不同的东西时,我的电脑“崩溃”了!为了避免警告,我认为如果我删除我创建的文件 sudo dpkg --get-selections > file
,只保留我想要安装的软件的行,如 eclipse、back-in-time 等,我就可以安装我的软件了。我的想法是,从列表中排除的东西将保持不变,就像在我的笔记本电脑上一样。当我执行命令时,似乎发生了这样的事情:sudo dpkg --set-selections < file
列表sudo apt-get dselect-upgrade
中的东西被安装了,其他一切都被删除了。这似乎不是一个好主意 ;-)
不用担心,我重新安装了 Ubuntu,并使用 Ubuntu 软件中心安装了我需要的所有软件。对于像我这样的新手来说,这似乎是最安全的方法。但是,如果在重新安装 Ubuntu 后有一种顺利安装同一套软件的方法,那不是很好吗?一个小型 GUI,用于从当前 Linux 发行版上安装的软件创建列表,并将其上传到 Ubuntuone/drobbox,重新安装 GUI 后,它将从存储在云中的列表中检索软件。
问候
马格努斯