mac开发环境同步

mac开发环境同步

我算是一个极简主义者,不过我这个极简主义和大家所谓的极简主义恰好相反。大家所谓的极简主义,简而言之,是尽量少买东西,保证环境整洁,我称为物质极简主义。而我是为了所有需要用的东西能在手边随时拿到,不惜重复购买东西,可以说是精力极简主义。如果你也尝试一下这种习惯,它的好处你也能体会到,再也不需要花费无用的精力在找东西这件事上,任何时候想做什么,都能快速进入状态。

比如电脑吧,我有四台左右的常用mac,因为公司要用,家里也要用。背一台电脑来回?这种方案显然不可接受,买两台,一边一台。PS4,两套房子里都需要玩,买一台带着来回?不能接受,买两台一边一台,诸如此类。正因如此,如果一件东西经常用到,我肯定有两份以上。比如kindle,比如特别好的书,我可能有kindle版,还有2-3本纸质版。这种方法简单粗暴,带来的好处也是决定性的,如果你体验一下这种生活,一定也能感觉到:不管需要什么,伸手就可以找到,再也不需要什么忘了带,什么找不到这种事情发愁。

当然,有利必有弊。今天要说的是,有很多电脑这件事情带来的坏处。开发一般情况下用Mac,保持开发环境一致就很重要,不然每换一台电脑工作,都要做很多重复的事情,时间浪费太严重。管理一堆电脑,是有现成解决方案,比如ansible之类的管理软件,但是这些软件更适合于管理生产环境的机器,对于开发环境,其实并不好用。

接下来说我的解决方案, 我能做到,只要有顺畅的网,给我一台全新的Mac,我可以用几乎无人参与的脚本在几小时内(主要看网速)变成跟我的四台Mac一模一样。 其实特别简单,分为三部分:软件同步,配置同步,数据同步。我周围有的杠精跟我说,软件和配置也是数据,我也无法反驳哈,哈哈哈哈。

先说软件同步,全靠我自己的开源项目dotfiles, https://github.com/zghember/dotfiles ,这个项目在之前的文章中也偶尔提及。打开terminal,执行一句

 sh -c "$(curl -fsSL https://raw.githubusercontent.com/zghember/dotfiles/master/mac.sh)"

软件同步的事情就解决了。这个脚本分为几部分, xcode-select –install ,是安装Mac的开发工具链,没有它,就没有git,没有编译器,自然也没有其它的东西。

接下来是使用安装brew,以及使用brew安装常用的命令行软件。再接下来,是使用brew cask安装带界面的软件,这都没有什么好说的。值得说的有两点,使用brew安装是mas命令,这是一个从命令行安装APP Store应用的软件,如果你也需要自动安装appstore的应用,需要稍微研究一下这个命令怎么用。再就是后面使用了几个brew tap,可能你也需要看一下相关文档。

下一个大部分是安装zsh及相应主题、插件,vim及相应插件,colorls,这都是dotfiles脚本常干的事情,就不赘述了。这些要配合iterm2和nerd hack字体才能使用。字体和iterm2我们已经在脚本里面安装好了。但是iterm2还要导入之前的配置,这就要说到本文第二部分,配置同步了。

这部分要分为几类,第一类,本身自带配置同步,登录即可同步,不需要我们手动同步。主要是浏览器chrome或者edge(有关微软的chromium版的edge,已有另一篇文章讲述,我已经放弃chrome了), 还有spark这个邮件客户端, 还有1password,以及idea这个ide,如果你用的是盗版软件,可能就没办法同步了。

第二类,文件夹同步,比如alfred和iterm2就属于这一种。这一种也很简单,我们把同步文件夹指定到icloud的一个文件夹里,这样新电脑上再load一下配置,就完事了。 或者靠dotfiles同步, 这种我们在脚本里面配好dotfiles的软link,就完事了,不需要手动干预。

第三类,没法同步。没法同步的软件就比较烦,好在这种软件很少,往往都是那种根本不需要配置的软件,所以不配置也罢。

软件同步和配置同步说完,最后一部分所谓的数据同步就是通过onedrive和icloud drive自动下载了,很没技术含量,哈哈哈。

这个脚本目前能够正常跑,但是还有一定问题,主要是没有容错,同时不具有幂等性。由于目前脚本只是自用,所以关系不大,如果有人也用,可能做一下幂等性。容错也很简单,出错的话主要是由于网络问题,只要有了幂等性,出错了就重跑就行了。

另外里面也有fedora.sh,用来装我那几十台云服务器的脚步,有兴趣的也可以参考。

突然想起来忘了写tmux和muxinator就发布了。。。。等我过几天回来补充

发表评论

电子邮件地址不会被公开。 必填项已用*标注