我目前正在跑步Ubuntu 20.04.4 LTS
。
在过去的一两年里,我的apt
数据库不知怎么就出问题了四次(我不知道是怎么回事),下次我运行apt
、apt-get
和 时aptitude
,系统提示我有超过 1,000 个软件包需要删除。如果我执行 并打算autoremove
稍后重新安装,我的整个系统将无法使用,因为大多数正常的日常程序都会在 期间被删除autoremove
。
我做到了不是(!!!) 删除顶级桌面包,也不删除任何顶级包。发生此错误是因为某种原因(???我不知道是什么原因)以某种方式损坏了apt
我机器上数据库的完整性。
每次我都能按照我在这个问题的“答案”中概述的步骤来解决这个问题:通过“apt autoremove”修复损坏的 apt,**且**不会破坏我的系统
但是,这种情况已经发生多次,这意味着无论什么原因导致这种情况都可能导致它再次发生。为了帮助解决这种情况(如果/当它再次发生时),我想知道以下内容...
apt
如果我想在任何给定时间保留整个系统的状态,我应该备份系统上的哪些目录?我想定期备份所有这些相关目录,以便下次出现此错误时,我可以通过将这些目录恢复到其上次备份的版本来apt
快速恢复我的环境。apt
感谢您对我应该备份哪些目录以保持整个apt
环境的完整性所提供的任何指示和建议。
答案1
我有部分答案。安装时间移位
它会拍摄系统快照,并允许您恢复到以前的状态。我喜欢它,因为您可以创建每日计划并设置要保留多少天的恢复。'设置它并忘记它'
让我们知道这是否有帮助以及是否有足够好的解决方案。
apt-clone 似乎是一个选择,或者
这里有一些信息,但还有很多其他的想法
因此,所有内容都可以作为伪 bash 脚本(可能是单行版本)
这假设机器上只有一个用户(否则删除 /'whoami')并且您在两个安装中使用了相同的用户名(否则修改 rsync 的目标)。
dpkg --get-selections > ~/Package.list && sudo cp -R /etc/apt/sources.list* ~/ && sudo apt-key exportall > ~/Repo.keys && rsync --progress /home/
whoami
/path/to/user/profile/backup/here立即重新安装
rsync --progress /path/to/user/profile/backup/here /home/
whoami
&& sudo apt-key add ~/Repo.keys && sudo cp -R ~/sources.list* /etc/apt/ && sudo apt-get update && sudo apt-get install dselect && sudo dpkg --set-selections < ~/Package.list && sudo dselect
答案2
我发现这/var/lib/dpkg
可能是我应该备份和恢复的目录树。
但是这专门针对apt
和dpkg
,并且它不一定包含aptitude
使用的一切,因为aptitude
是一个建立在基础上的较新的实用程序apt
。
我将把这视为一个临时答案,直到我了解更多有关aptitude
存储其自身数据的数据库的信息。
更新
我现在看到以下文件:/etc/cron.daily/dpkg
和。它们分别执行数据库和数据库/etc/cron.daily/aptitude
的备份。dpkg
aptitude
所以,我的工作已经由操作系统完成了,如果我的apt
环境再次受到攻击,我相信我可以通过从这些备份中恢复来恢复它。
向前!