我想通过能够在“修订”之内来回移动,以与Git相似的方式管理Linux系统的更新。我该怎么办?
我想通过能够在“修订”之内来回移动,以与Git相似的方式管理Linux系统的更新。我该怎么办?
Answers:
您可能应该看看使用Nix软件包管理器的NixOS。
NixOS是GNU / Linux发行版,旨在提高系统配置管理的最新水平。在现有发行版中,升级之类的操作很危险:升级软件包可能会导致其他软件包损坏,升级整个系统的可靠性要比从头开始重新安装低得多,您无法安全地测试配置更改的结果,您不能轻易撤消对系统的更改,依此类推。
对于您的问题,这可能是过高的,但是能够还原系统级/大量更改的最简单方法是快照:
https://zh.wikipedia.org/wiki/Snapshot_%28computer_storage%29
您没有提到钻机的细节,但是由于您熟悉git,因此可以想象您可能对使用更复杂的文件系统很感兴趣。如果您要使用下一代文件系统(忽略click-bait-y名称),则只需在终端上插入一条命令即可完全“倒带”整个系统。所做的任何和所有更改都将在极少的延迟/努力下被还原。ZFS是您最好的选择,您可以参考这篇Ars文章,以了解它是否值得您一试(还有很多其他许多很棒的功能):
根据“更新”的含义,您可能对诸如etckeeper之类的配置管理工具感兴趣,该工具可让您自动记录对系统配置的更改,并恢复为较早的配置。
如果Git是熟悉的工具,并且通过“更新”表示“系统配置更新”,而不是“系统软件包更新”或“服务器上存储的所有文件更新”,那么这可能就是您想要的对于。
值得考虑的是,无论您使用的是Puppet,Ansible,Etckeeper等工具,还是不总是能够干净地“回滚”而不丢失数据,除非您全力以赴(例如,快照,如另一个答案所述)。正确的方法取决于您的情况(例如,快照不适用于在回滚时可能丢失客户订单的生产系统)。
如果您真的想像git这样管理整个系统(包括内核版本),那么您正在寻找NixOS。
对于较少参与的版本,您几乎可以从任何Unix使用NixOS的软件包管理器nix。Nix可以以简单用户的身份安装,尽管以root身份安装更容易。一旦安装了nix,您就可以以非特权用户的身份使用它来安装软件包,并且它可以与现有的软件包管理器一起正常运行,而不会发生冲突。从系统中完全删除nix也是非常容易的,因此,没有任何借口可以尝试一下。;-)
为了直接解决您的问题,Nix将您完整的已安装系统定义为一个环境,就像git commit一样,它是指向所有已安装软件包的非常特定版本的一组指针的指针。
Nix升级软件包时,会创建一个新环境,该环境指向一组指向软件包的新指针(对于尚未更新的软件包,大多数指向现有的指针;再次,这与新的git commit非常相似,这主要是指向以前的未更改文件和一些新版本的已修改文件)。
当然,切换到该环境的先前版本并不容易,我相信这很容易(即,基于比过去更旧的环境创建一个新环境)。可以为特定的Shell加载环境(实际上,这是外壳可用的一组环境变量,因此是名称),因此您也可以很容易地在同一台机器上为不同项目使用不同的环境。不再有依赖性问题,因为不相关的项目需要另一个版本的库!
NixOS将其提升到一个新的水平,并以类似的方式管理您的整个计算机(包括内核),从而可以对整个计算机进行非常低风险的升级。
我还没有读完所有这些书,但我建议使用致命性的Nix药丸作为Nix的简介。
如果您是实验性类型,则可以尝试将整个文件系统检入本地git存储库。我想这会很有趣。
git init
在根目录中 /
git add -A .
git commit -m "Initial Snapshot"
git commit -Am "Snapshot X"
或类似内容一些好处是:
gitk
和git diff
一些奇怪的地方可能包括:
git
当您位于嵌套在根git
容器中的源代码目录中时,有望按预期工作。