我不小心使用以下命令从 Raspbian Buster 中清除了 XDG:sudo apt purge -y xdg*
事情发生后几分钟,我就安装了 XDG 和任何其他组件,我以为我已经修复了它,但我没有。另外,我没有意识到我造成的混乱,并在那之后关闭了终端,所以我无法拍摄日志的屏幕截图apt
。
我想请求有人给我发送一张屏幕截图,sudo apt purge xdg*
然后在提示部分截取屏幕截图,然后将其发送给我,以便我可以尝试安装在清除期间删除的其他软件包。
我尝试安装下面列出的所有软件包巴斯特完整套餐这里也:https://gist.github.com/jarvisms/6d3edba4fc27829d5dfe7a2bd8c7c5fb
但我仍然无法:1)恢复 Raspbian Buster 的样子; 2) 让其他系统组件重新运行。几天来一直在寻找任何提示,但我认为这个问题非常独特(独特愚蠢哈哈)
老实说,我现在很喜欢这个版本的 RPi,它比开箱即用的更方便使用(尽管由于某种原因导致 CPU 不断达到最大,效率较低)。但我无法正确地使用 C++ 或 Python 进行编程,并且弄清楚这一点可能需要比尝试更多的时间,因为我并不是真正的 Linux 行家。
感谢您的阅读。
答案1
dpkg
apt
,这是由、apt-get
、等调用的程序,aptitude
用于实际安装或卸载软件包,并在 中保存其操作的日志文件/var/log/dpkg
。该文件通常每月轮换一次。
虽然它记录了有关其正在执行的操作的其他信息,但它主要以以下格式记录它对特定包/版本所采取的操作:
2021-10-02 05:47:54 purge linux-image-5.10.0-4-amd64:amd64 5.10.19-1 <none>
前两个字段是日期和时间,第三个字段是动词(install
、remove
、purge
、 upgrade
、configure
等),第四个字段是软件包名称,然后是当前软件包版本(或者<none>
如果尚未安装)和最后一个字段是要安装的软件包的版本(或者<none>
如果未升级)。
您需要这些数据才能重新安装在特定日期/时间错误删除或清除(或卸载已安装的软件包)的软件包。
例如,您可以列出在特定日期和时间(例如 2021 年 10 月 2 日凌晨 5 点)清除的所有包名称,如下所示:
# awk '/^2021-10-02 05:/ && $3 == "purge" {print $4}' /var/log/dpkg.log
linux-image-5.10.0-4-amd64:amd64
linux-image-5.9.0-5-amd64:amd64
您可以使用该输出并命令替换重新安装它们(如果它们在您的存储库中仍然可用):
# apt-get install $(awk '/^2021-10-02/ && $3 == "purge" {print $4}' /var/log/dpkg.log)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package linux-image-5.10.0-4-amd64:amd64
E: Couldn't find any package by glob 'linux-image-5.10.0-4-amd64'
E: Couldn't find any package by regex 'linux-image-5.10.0-4-amd64'
E: Unable to locate package linux-image-5.9.0-5-amd64:amd64
E: Couldn't find any package by glob 'linux-image-5.9.0-5-amd64'
E: Couldn't find any package by regex 'linux-image-5.9.0-5-amd64'
不幸的是,这些包现在已从存档中消失,已被更新的内核包取代......这就是为什么我在那天清除了它们(我已经运行更新的内核足够长的时间了,我不再需要保留它们安装以防万一我必须恢复到较旧的内核)。