在Dreamhost上安装和编译Python、Django、Virtualenv、Mercurial、Git、LessCSS等的脚本
故事
在清理了我在Dreamhost共享服务器上的主文件夹,去掉了那些随着时间积累的杂物后,我决定重新开始,重新编译和安装Python。我发现的所有教程和代码片段都太简单,假设(或者忽略)了Python编译所有模块所需的一些依赖项。因此,我从http://andrew.io/weblog/2010/02/installing-python-2-6-virtualenv-and-virtualenvwrapper-on-dreamhost/(到目前为止我找到的最好指南)开始,决定写一个可以自动化这个繁琐过程的Bash脚本,同时也包括一些我计划使用的其他东西。
脚本
我把这个脚本放在http://bitbucket.org/tmslnz/python-dreamhost-batch/src/上。
待办事项
到目前为止,它运行得很好,完成所有需要的工作大约需要900秒,最后给我一个完全功能的Python / Mercurial / 等等的环境,甚至不需要注销再登录。
我觉得这可能对其他人也有用,但我认为还有一些缺失的地方,我不太确定该怎么做,最好的做法是什么,或者这是否根本没有意义。
- 检查错误并中断
- 检查软件包的小版本更新并给出警告
- 检查已知的依赖项
- 使用参数只安装某些软件包,而不是注释掉代码行
- 以易于更新的方式组织代码
- 可选地让安装和编译过程静默进行,并将错误记录到文件中
- 确保.bashrc的修改是安全的,以防止破坏ssh登录,避免需要通过FTP重新登录来修复
编辑: 暗含的问题是:有没有人比我更害羞,能提供关于上述要点的价值的建议,或者指出他们认为这个方法存在的任何问题?(见我对Ry4an评论的回答)
要点
我不是UNIX、Bash或编译器的专家,这个脚本是通过反复试验逐步构建的。它在某种程度上朝着apt-get的方向发展(好吧,1%...),但由于Dreamhost和其他公司显然不能在共享服务器上提供root访问权限,这对我来说看起来是一个非常有用的解决方案;特别是如果有一些社区的合作参与其中。
2 个回答
老实说,我会给所有的组件起个名字前缀,然后把它们打包安装到 /opt
这个地方,这样就不会影响到其他东西了。这样做只需要花点时间下载和安装就可以了。
有一种方法可以简化这个过程,就是让它和以下工具之一一起工作:capistrano/fabric、puppet/chef、jhbuild,或者buildout+minitage(还有很多cmmi任务)。在这些工具中,有一些地方可以提取出共同的代码,尤其是用比bash更高级的语言来做。不过,你可能会遇到一些启动问题,所以也许保持现状就好。
如果你想了解一下用户空间的包管理工具,可以看看autopackage(启动得很好),nix(快速入门),还有stow(简单但有助于隔离)。