前言

上周看了 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

使用方法

  1. 有 git 的情况:
shell>git clone https://github.com/orzrd/laptop
shell>cd laptop
shell>bash initialize.sh
  1. 没有 git 的情况:
shell>bash <(curl -s https://raw.github.com/orzrd/laptop/master/setup_laptop)
脚本语法

可操作文件

  1. common.install: 用户自定义的软件安装脚本,推荐非操作系统包管理器的都放在这里,注意逻辑顺序
  2. opensuse/ubuntu/gentoo.install: 相应系统的安装脚本,这个只需要修改,我的脚本会自动根据系统信息找到
  3. initialize.sh: 假如你想把需要我的安装方法,添加功能等,修改他,他是主入口
  4. setup_laptop: 当用户没有 git 环境不能 git clone 直接远程 curl 我,主要是下载 git,clone 我的 laptop
  1. '#' 以 '#' 开头的行表示这个信息会被安装过程以绿色字体打印,提示一下你要安装的东西等
  2. : 以 ':' 开头的行,表示后面的字符串是个命令,也就是检查这个软件包有没有被安装需要的,假如 which 找到了路径说明被安装
  3. ; 以 ';' 开头的行为注释
  4. 其它行就是要执行的语句,请不要当作 shell 注释等,因为他会把你写的东西当成要执行的命令

TODO

  • 文件下载后就不需要再下载而直接使用
  • 在执行某软件的安装过程中其他进程继续下载其他软件包(也就是实现 shell 版本的 emerge)
  • 进度条或者 python_koans 的提示已完成 / 剩余,更多的异常处理等
  • 更多的异常处理
  • 打印彩色字体内容嵌其他颜色字体(比如提示出错,高亮错误的原因或者软件包)

注意我的项目地址,欢迎各种 fork,pull request,issue

https://github.com/orzrd/laptop">https://github.com/orzrd/laptop