我面临的问题
- 我安装了一些东西,导致我之前编译的 Wifi 驱动程序崩溃。
- 卸载相同的包没有帮助。
- 最后,我重新编译了我的 wifi 驱动程序,一切正常。
我的问题
但是,Ubuntu/LinuxMint 中是否有类似系统还原或系统回滚的功能?
- 有什么东西可以发出
undo
命令apt-get install package
吗?
答案1
有一个 Linux 软件叫时间移位正是出于这个目的。使用 Timeshift,您可以定期拍摄 Linux 系统的快照,并在需要时恢复它们。
该软件将 Windows 的系统还原功能带到您的 Linux 发行版。
其官方网站的简短描述:
TimeShift for Linux 是一款提供与 Windows 中的系统还原功能和 Mac OS 中的 Time Machine 工具类似的功能的应用程序。TimeShift 通过定期拍摄文件系统的增量快照来保护您的系统。这些快照可以稍后恢复,以使您的系统恢复到拍摄快照时的确切状态。
快照使用 rsync 和硬链接进行拍摄。快照之间共享常用文件,从而节省磁盘空间。每个快照都是完整的系统备份,可以使用文件管理器浏览。
答案2
实际上,Ubuntu 等系统中只有少数东西可以让你回滚更改。简要如下:
/var/backups/dpkg.status.*
:此目录保存了安装前最后系统状态的一组日志,如下所示;/var/backups/dpkg.status.0
是最新日志事先的状态改变(例如包安装/删除/更新...等);/var/backups/dpkg.status.?.gz
在不同时间点压缩、存档日志版本,每月轮换一次。/var/lib/dpkg/status
:这是已安装软件包的当前状态。手动备份它,或提供 logrotate 脚本/etc/logrotate.d
将确保按您的喜好安排系统状态的快照。回滚:基石是您以前的状态
/var/backups/dpkg.status.0
。以下是恢复以前软件包状态的简要步骤(注意简短的和并非详尽无遗)。a.
cp /var/backups/dpkg.status /var/lib/dpkg/status
(将包状态恢复至上一个版本)。b.
dpkg -l | grep ii
(将为您提供以下列表据称/var/lib/dpkg/status
根据上述步骤 a. 中获得的回滚文件安装的软件包)。c.
dpkg -l | grep ii | awk '{print "apt-get --reinstall -y install", $2}' > /tmp/reinstall && sh /tmp/reinstall
(将创建一个简单的单行 shell 脚本并运行该脚本来重新安装在 apt-get 操作之前已在系统上的软件包)d.
apt-get --reinstall install ucf
(将负责清理 /etc 配置文件等)e. 必要时重复步骤 c。
只要有一点点运气,你就应该没事。
答案3
的补码apt-get install package
是apt-get remove package
。要删除所有相关设置,您需要运行apt-get purge package
。
请注意,这些命令依赖于软件包提供的卸载脚本。据我所知,主存储库中的所有软件包都可以很好地完成卸载工作。第三方软件包可能并非如此。
至于您的驱动程序问题,安装软件包导致无线驱动程序损坏的可能性有以下几种:
- 驱动程序有一个安装后挂钩,当满足条件时执行,例如内核更新
- 该软件包覆盖了无线驱动程序所依赖的文件
- 有问题的软件包是内核更新,但驱动程序没有用于重新编译驱动程序的安装后挂钩(最有可能)
至于“系统回滚”/“系统还原”功能,最接近的功能是使用类似软件的系统映像克隆兹拉。不幸的是,这无法在正在运行的系统中完成,必须从 Live CD 中执行。
答案4
btrfs 具有/将具有一些出色的快照功能,应该能够处理此类事情。只需将您的数据保存在一个文件系统中,将系统保存在另一个文件系统中,然后使用定期(每日?每周?)快照,然后在出现问题时回滚。