删除了 /var/lib。无法打开桌面

删除了 /var/lib。无法打开桌面

嗯,我现在很害怕。
我试图通过以下方式删除文件夹

sudo rm /var/lib/texmf -r

但相反,写了

sudo rm /var/lib -r

我阅读了一些有关它的文档,发现这个线程

我尝试遵循最后一条评论(第二页)中的所有步骤,但我不知道如何执行那里列出的一些操作。
这就是我所做的一切:

首先,我创建了这些文件夹:

mkdir /var/lib/dpkg/alternatives/  /var/lib/dpkg/info/  /var/lib/dpkg/methods/  /var/lib/dpkg/parts/  /var/lib/dpkg/  triggers/  /var/lib/dpkg/updates/  /var/lib/apt/  /var/lib/aptitude  /var/lib/binfmts/  /var/lib/misc/

我必须通过 sudo 来完成此操作,并且必须首先创建子文件夹,才能创建所有文件夹。

然后我做了:

aptitude update && aptitude upgrade

这就是混乱开始的地方。
首先,用户 @marco.org 列出的警告并没有出现在我身上(我什至不确定它们是用什么语言编写的),而是出现了另一个错误,说它无法创建一些 -文件,因为某些文件夹(/var/lib 中的子文件夹)不存在。
我创建了该文件夹(使用 sudo mkdir),该过程完成(有一些我不记得的错误)。

然后我移动了上面链接中提到的文件 dpkg.status.0,方法是:

sudo cp /var/backups/dpkg.status.0 /var/lib/dpkg/status

(同样,我必须创建该文件夹。我不太确定为什么要这样做,我只是在某处读到了它)

那么显然第一个问题已经解决了。然后我尝试安装一些程序,使用

sudo apt-get install some_program

尽管它显示了一些警告(所有关于 /var/lib 子目录中缺少文件的信息),但该程序已安装,我可以毫无问题地使用它。

几分钟后,我想放松一下,在 youtube 上看一些视频(我已经安装了最新版本的 Google Chrome),但我并没有放松,反而有另一个恐慌的原因:
没有声音输出。视频,或 Chrome 上的任何其他应用程序(其他程序确实有声音)。

于是我惊慌失措,关掉了电脑。
然后,当我打开它并启动 Linux 后,我没有看到桌面,而是看到一个控制台屏幕,要求我输入登录名和密码。
我提供了信息,然后出现一些消息,说无法创建文件,因为缺少文件夹。我用以下方法创建了它:

sudo mkdir /var/lib/ubuntu-release-upgrader

然后另一条消息说它无法移动文件,所以我手动移动它:

sudo mv /usr/lib/ubuntu-release-upgrader/release-upgrader-motd -t /var/lib/ubuntu-release-upgrader/

然后我重新启动系统,希望能看到我的桌面。但相反,在提供我的登录名和密码后,相同的控制台屏幕显示:

Last login: Tue Apr 8 13:19:16 CST 2014 on tty1
Welcome to Linux Mint 15 Olivia (GNU/LINUX 3.8.0-26-generic i686)

Welcome to Linux Mint
* Documentation: http://www.linuxmint.com

现在我无法返回 GUI 模式,也无法使用我的任何程序。

我想应该有一种方法可以获取我从安装 DVD 中删除的文件夹,但我对此不太熟悉,并且不确定如何执行此操作。
有人可以帮我吗?我真的很感激。


PS:另外,删除 /var/lib 后,每当我使用 sudo 时,都会出现一行内容,如下所示:

couldn't mkdir /var/lib/sudo, file not existing

但之后就解决了

aptitude update && aptitude upgrade

答案1

从备份恢复。

是的,我知道,你没有做备份。好了,现在您明白为什么备份很重要了。

/var/lib包含很多重要文件。从删除中恢复/var/lib将使您的系统无法正常工作;即使你能一瘸一拐地走下去,以后你也会遇到各种奇怪的问题。如果您尝试修复,然后遇到任何奇怪的问题,则删除很/var/lib可能是罪魁祸首(因此您已经失去了获得在线支持的任何希望 - 并且甚至不要想到不提及它,它只会导致到深深的挫败感)。

/var/lib/dpkg包含已安装软件包的数据库和有关已安装软件包的附加信息,并且/var/lib/apt包含由 APT 而不是dpkg.虽然/var/lib/dpkg/statusin中有几乎最新的备份/var/backups,但这只是您需要恢复的一小部分。

您可以使用以下命令获取已安装软件包的列表

</var/backups/dpkg.status.0 awk -v 'RS=' -F '\n' '
    /\nStatus: .*installed\n/ {sub(/^Package: /,""); print $1}
' | sort >/var/tmp/packages0.list

检查/var/log/dpkg.log最新的软件包安装和删除,并相应地手动编辑列表。您现在拥有已安装软件包的列表;哪些是手动安装的,哪些是自动安装的指示会丢失/var/lib/apt

此时,您可以使用以下命令重新安装所有软件包

apt-get update
apt-get --reinstall install `cat /var/tmp/packages0.list`

在此之前,您可能需要创建更多目录/var/lib- 您会知道缺少哪些目录,因为会出现错误消息。/var/lib/dpkg和下的所有目录都/var/lib/apt应该属于root:root, 模式 755。

我强烈建议您备份/etc软件包列表并重新安装系统。安装等等管理员保留 中的更改历史记录,并在您更改 中的某些内容时/etc运行,这样将来进行类似的安装会更容易。etckeeper commit 'some meaningful messages'/etc

答案2

最简单的方法可能是重新安装所有已安装的软件包。如果您没有已安装内容的列表,则可能需要根据优先级重新安装。

您可能想从以下开始:

aptitude reinstall ?essential
aptitude reinstall ~pstandard
aptitude reinstall ~prequired
aptitude reinstall ~pimportant

如果您有已安装的软件包的列表,则可以使用它来重新安装。如果没有,您将需要识别软件包。这应该重建 /var/lib 子目录。

您可能安装了其他软件包,并且必须识别它们。如果您还没有清理过/var/cache/apt/archives directory,您可以使用该命令获取列表。

ls /var/cache/apt/archives | cut -d_ -f1

答案3

我能够从 Live DVD 复制目录,现在我可以在我的计算机上工作。

之前我之所以不能这样做是因为我的CD ROM的原因。显然,它被损坏了,这就是所有“内核恐慌”的原因。

我选择这样做而不是重新安装整个操作系统,因为我实际上没有安装比该 Linux 发行版默认提供的程序更多的程序。

正如@Gilles 所建议的,我现在正在进行备份以防止将来发生事件。正如他所说,如果出现一些奇怪的问题,我知道应该归咎于什么。但我仍然想在格式化之前尝试解决它们。

我还不确定为什么我无法重新安装在 中找到的软件包/var/backups/dpkg.status.0,因此如果有人知道原因,请告诉我们,那就太好了。

感谢所有给予帮助的人。

相关内容