昨晚我的系统(Ubuntu 12.04)崩溃了,我不得不再次安装 Ubuntu 12.04。实际上我有“/var/cache/apt/archives”,它是我以前的操作系统的,但是当我以 root 用户身份输入此命令时:
sudo dpkg -i /var/cache/apt/archives/*deb
多次之后显示此错误:
system halted because there were too many errors...
我的 Ubuntu 再次无法启动,因此我再次安装了它,现在如何使用/var/cache/apt/archives
,有什么方法可以解决这个问题吗?
答案1
我会用简单的例子来回答你,
假设 appA 有依赖项 depA1v1.1 和 depA2v1.5
假设 appB 有依赖项 depB1v1.3 和 depA2V1.3
现在 appA 安装在 Pc#1 上,appB 安装在 PC#2 上。
当您从 PC#1 复制所有 *.deb 文件/var/cache/apt/archives
并将其移动到 PC#2 并进行操作时dpkg -i *.deb
。会发生什么情况?
现在在 PC#2 中你已经正确安装了 appA但appB 会出现问题,为什么呢?
仅仅是因为您具有不兼容的依赖关系,因为 depA2 现在是版本 1.5,而不是所需的 1.3。
希望这能解释这个问题,那么我该如何使用这些档案呢?!
- 您必须注意您的依赖关系并检查这些 *.debs 是否会给您的系统带来问题,这是辛苦的工作
- 或者,您应该始终在两个主机上保持一致,因此,每当您更新 PC#1 时,您都应该转到
*.deb
PC#2 并执行相同的更新,这样两个主机的应用程序版本就会始终同步。
暗示:这些 deb 的一个方便用法是将它们从 Pc#1 复制到 PC#2,然后将它们移动到/var/cache/apt/archives
Pc#2。
apt-get
现在尝试使用常规而不是从这些档案中安装您想要的应用程序dpkg
,因此apt-get
尝试从这些档案中解析依赖项(如果找到)并检查更新,因此如果存储库中没有新的更新,那么它将使用.deb
路径中建立的 /var/cache/apt/archives
答案2
http://people.adams.edu/~cdmiller/posts/Ubuntu-dpkg-recovery/
这可能有助于为您指明正确的方向。看来您必须重新安装 apt,然后强制系统重新安装它认为可以安装的应用程序。
答案3
这里由于缺少依赖项而发生错误,如果未满足必要的依赖项,dpkg -i *.deb 会很危险,因此我建议使用本地存储库或 aptoncd 映像来使用此类 deb