公子世无双,陌上人如玉

凡走过,必留下痕迹

浅谈Linux开发环境无缝迁移

相信使用过 Unix系的同学都会有感,Unix 系大部分工具都是可以通过文本进行自定义配置, 典型的例子就是 Vim/Emacs 的自定义配置了。但是像笔者这种工作时使用 Os X, 笔记本是 Fedora, 台式机是 Arch Linux, 甚至家里给父母使用的老电脑也换上了 Deepin, 各种工具 的重新安装和配置就真的很麻烦,更不要说可能需要 ssh 登录管理 vps. 对于这些基于文 本的配置,其实做的工作无非是下载工具,然后复制指定的配置文件到指定的路径,或者是 home 目录或者是 .config, 这些真的都是体力活,不如交给脚本来自动解决。

安装工具

对于 Linux 种类繁多的发行版本,也对应着各种不同的包管理工具,但是包管理器的数 量是远远不及发行版本数量的,主要是 Debian 系的 apt-get, RHEL 系的 yum 以及 衍生的 dnf, 还有最好用的 Arch 系的 pacman 等,当然,还包括 OS X 上的 brew. 现在的工作就是判断发行版本,然后选择包管理器安装工具。判断发行版本可以 使用我之前分享的脚本 进行判断,只是笔者就偷个懒,直接通过是否存在对应的管理器 来安装工具了:

function install_awesome_tools() {
    if [ "$(uname)" == "Darwin" ]; then
	# Do something under Mac OS X platform        
	echo "This is mac os"
	# check if brew exists
	brew_install
    elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
	# Do something under GNU/Linux platform
	GetDistro
	if type apt-get >/dev/null 2>&1; then
	    apt_get_install
	elif type yum >/dev/null 2>&1; then
	    yum_dnf_install
	elif type pacman >/dev/null 2>&1; then
	    pacman_install
	fi
    elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
	# Do something under 32 bits Windows NT platform
	echo "This is 32-bit windows"
    elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then
	# Do something under 64 bits Windows NT platform
	echo "this is 64-bit windows" 
    fi
}

复制配置到指定路径

寄存配置

当安装完工具之后,就可以把配置复制到指定的路径。而笔者倾向于使用 Github 来保存 配置,然后只需 clone 到本地即可。但是为了方便管理,可以 clone 到指定目录, 然后 创建指向该目录的软链接

备份

在创建软链接的时候,可能目标文件已存在,比如说之前已经在安装 Emacs 的时候,附 带创建了 .emacs 文件,比较好的习惯就是对文件根据时间戳进行备份,然后再创建链接

Oh-my-unix

Oh-my-unix 就是笔者创建的一个实现笔者上述自动化操作的项目,可以保存笔者 zsh, i3 oh-my-zsh 别名,环境变量等的配置文件,以及对应的各式工具,然后只需要 clone 到本地,执行初始化脚本,就可以把环境配好。

小结

项目地址

https://github.com/samrayleung/Oh-my-unix

Enjoy Linux, Enjoy Tweaking :)

Comments

comments powered by Disqus