跨操作系统初始化安装工具(laptop)
/ / / 阅读数:4326前言
上周看了 docopt , 感想很多。最近因为工作需要用 opensuse,用 ubuntu,个人 pc 用 gentoo, 实在够折腾,每个系统都要相应的安装那些软件,搭建环境。早就想好好整理下思路,更 geek 的做这件事情。上段时间还看了个 laptop , 觉得能力很一般,但是 fork 真不少。但是确实这个想法很不错,很有必要。 然后周末就构思了我的 laptop
它的特性
- 记录操作记录,当某处出现故障,下次会从这个位置继续执行,而不需要全部执行一遍
- 受 docopt 启发,根据我特定的语法写配置文件,不需要修改初始化脚本 initialize.sh
- 只需要添加你要安装的软件包的安装命令(使用包管理器的就需要修改相应操作系统的 install 文件)
- 支持对已安装软件的确认,不再安装而跳过
- 根据特定语法打印安装过程的提示
- 提供绿色,红色的 asciilinux 终端显示字体
- 执行在没有 git 等环境下 git clone 项目安装
目前每个版本会安装那些软件?
- gcc|g++|automake
- tmux|htop|dstat
- ruby|python|python 库 | expect
- zsh|oh-my-zsh
- easy_install|pip
- django|torando|flask
- nginx|uwsgi
- redis|mongodb
- mit-scheme|commonlisp
- emacs
- gitflow
- celery
- colout
- MySQLdb|pymongo
- taglist
- gevent|twisted
- the_silver_searcher
- 检查 vim 是否自带 python/ruby 支持,否则下载编译一个执行的版本
- 我的常用脚本 mytools , 目前包含一个 expect 脚本和 orzdba
- 我的 dotfiles
gentoo 系统一些软件
- gentoolkit|module-rebuild|genlop|eix|euses|elogv
- fcitx
- iproute2|netkit-telnetd
使用方法
- 有 git 的情况:
- 没有 git 的情况:
脚本语法
可操作文件
- common.install: 用户自定义的软件安装脚本,推荐非操作系统包管理器的都放在这里,注意逻辑顺序
- opensuse/ubuntu/gentoo.install: 相应系统的安装脚本,这个只需要修改,我的脚本会自动根据系统信息找到
- initialize.sh: 假如你想把需要我的安装方法,添加功能等,修改他,他是主入口
- setup_laptop: 当用户没有 git 环境不能 git clone 直接远程 curl 我,主要是下载 git,clone 我的 laptop
- '#' 以 '#' 开头的行表示这个信息会被安装过程以绿色字体打印,提示一下你要安装的东西等
- : 以 ':' 开头的行,表示后面的字符串是个命令,也就是检查这个软件包有没有被安装需要的,假如 which 找到了路径说明被安装
- ; 以 ';' 开头的行为注释
- 其它行就是要执行的语句,请不要当作 shell 注释等,因为他会把你写的东西当成要执行的命令
TODO
- 文件下载后就不需要再下载而直接使用
- 在执行某软件的安装过程中其他进程继续下载其他软件包(也就是实现 shell 版本的 emerge)
- 进度条或者 python_koans 的提示已完成 / 剩余,更多的异常处理等
- 更多的异常处理
- 打印彩色字体内容嵌其他颜色字体(比如提示出错,高亮错误的原因或者软件包)