重装系统的新体验 - Scoop & vfox

距离上次重装系统又过去了一年,这对于具有电子洁癖的我肯定是忍受不了,不过这次重装最主要的原因还是装环境把系统装乱了,懒得一个个清文件了,干脆重装得了

Windows 的注册表一直以来都处于被诟病的状态,格式化 C 盘一时爽,重装后的软件一个用不了,为了对标 Linux 的包管理器,微软自家搞了个 Winget,说是说包管理器,实则只是省去了找官网的时间的安装器,而且安装还是静默安装,默认安装到 C 盘,外加国内软件厂商不遵守规范,各种垃圾文件垃圾目录层出不穷,以及不能添加额外命令自定义安装位置

于是,Scoop 出来了,Scoop 的理念在于便携、绿色,一个 json 文件代表一个软件,可以方便导入导出,利用 bucket 机制来添加删除软件源,对于一些不需要 UAC 之类的软件安装非常舒适,json 文件的可定义程度很大,当然维护者需要对 Powershell 命令有所了解

Scoop 可以自定义安装位置,对我这种不喜欢把软件安装在 C 盘的人来说十分友好,大部分软件包可以在官网找到,有些是官方认可的 bucket,主要由社区维护,有些是个人维护的 github 仓库,当然不是所有的软件都能找到,这个时候可以选择自己构建 bucket ,比如这是我自己构建的bucket ,有关 Autoupdate 和 Manifest 的编写方法可以参照官方的文档

Scoop 可以把添加的 bucket 和安装的软件一同导出为一个配置文件,这样在新环境中配置只需要拷贝持久化的文件夹和导入这个配置文件并 reset 便可以实现快速迁移

目前 Scoop 安装的 cli 和提供了 portable 的软件基本没什么问题,但一些 no portable 的软件还有点小 bug,不过我装的软件大多属可接受范围内,建议是需要用到 UAC 之类的软件或者是会自动更新的软件选择从官网下载安装

Scoop 用来装各种环境也很舒服,而且不需要手动修改 PATH,Scoop 本身提供了 shim 文件夹,安装软件后的 exe 文件会自动加入该文件夹,同时可以装多个版本的环境,比如多个 jdk,切换的时候只需要 reset 到相应版本就行了

当然,管理配置环境这边我更推荐 vfox,Scoop 的 main bucket 也添加了 vfox 的软件包,可以直接使用官方 bucket 安装

vfox 类似于 nvm 这些命令行版本管理器,但提供了插件接口来扩展到所有的工具和运行环境,统一了各种版本管理器的不同 API,只需要一套配置文件外加简单的命令就能实现版本切换,同时支持三大平台,实现了真正的跨版本统一

官方文档也提供了插件的开发模板,可以自己创建相关模板来搭建环境

使用过程中遇到了 vfox use 切换不了版本的情况,可以考虑使用管理员权限运行 Powershell,这里我是通过 Scoop 装了个 sudo,类似于 linux 一样进行单条命令提权

这次重装系统是一直以来最舒服的一次,大部分软件和环境都能够便携迁移,虽然仍然有小部分软件需要自安装,但大大减少了工作量,Scoop 包管理器以及 vfox 版本管理器的出现让我体会到了 Linux 上装软件的快感,不再有担心环境被弄乱的顾虑

在重装系统的调研中也了解到了 NixOS,可以通过一套 dotfile 复刻整套配置环境,对于我这种重度电子洁癖患者感觉会十分友好,以后有机会一定尝试尝试