使用Ubuntu工作
2010年07月21日 16:21
最近工作性质有所变化,离开了数据库开发部门,转回了老本行,做C++开发。考虑到开发的C++代码大部分都是在Linux下运行,所以我的心思又活络了,很久以前考虑过的使用Ubuntu做日常工作的想法又蹦回了脑海。经过几天的构思和实践,我发现使用Ubuntu工作基本是可行的。
当然,用Ubuntu工作跟个人使用不一样,因为工作性质的关系,需要做一些迁就,并且要考虑到各种问题,不能像个人使用那般激进。
安装
首先当然是Ubuntu的安装。工作机并不是新机器,上面已经有大量日常工作数据和资料,包括文档、代码和其它各种资料,另外还有大量的个人数据。如果要空出一个分区来安装,需要做大量的迁移工作。为了减少工作量以及由此带来的各种风险,我选择了使用wubi安装。
wubi在选择的分区上创建一个虚拟的分区(有点类似虚拟机的做法),最大容量可以到30G,然后将ubuntu系统安装在这个虚拟的分区上。并且修改Windows的Bootloader,增加一个Ubuntu的选项。进入Ubuntu之后,所有的Windows分区,除了安装所在分区之外,都会存在于位置列表中,当你点击打开时进行自动的挂载。而Ubuntu虚拟分区所在的实际分区,则会预先挂载到/host目录。
按这种方式安装好的系统,Windows下的一切都不需要改动,只是在安装所在的分区减少了30G的容量而已。如果觉得不需要则可以安全的卸载。可以使系统迁移的风险降到最低。
基本办公
邮件/日程安排使用Evolution,稍加设置即可,没有什么麻烦,值得一提的是日程可以设置跟Google日历同步,结合我的android手机,很方便。Office文档可以用OpenOffice阅读和编辑。
MSN/GTalk交流可以用Empathy。另外Ubuntu 10.04有一个提醒指示工具,直接集成了邮件/IM的提醒,很好用。
C++开发
这是我最重要的工作,找一些合适的工具当然是很必要的。这里要稍微介绍一下我们的代码规范。我们的代码以组件的形式分布在上百个目录中,用配置文件的形式指名组件间的依赖。有一个自制的工具负责产生项目代码,在Windows下,这个工具可以产生VC用的makefile和Visual Studio用的dsw/dsp文件,在Linux下,这个工具可以产生makefile。
makefile做构建没有问题,但是并不利于代码管理。而在几百个目录之间做代码管理,用VIM显然不太合适。必须要有一个IDE。在网上稍微找了一点资料之后,我选择了Code::Block作为C++开发的IDE。那么如何将产生的makefile导入成Code::Blcok的项目呢?一开始我想了很多办法,都没有得到满意的效果。后来找到一份资料,说Code::Block支持项目使用外部的makefile做构建,这让我茅塞顿开:我不需要创建一个跟makefile功能完全相同的项目,而只需要一个包含全部文件的项目,并指定用外部makefile就好了!后者简单得多。我稍微修改了我们的工具,增加了生成cbp(CodeBlock Project)文件和workspace文件的功能,并在project里指定使用外部makefile进行构建,这样既可以使用Code::Block做文件管理,又不用担心构建跟原来有所不同。一举两得。
数据库
我们的项目经常要跟oracle打交道,因此一个oracle的客户端还是必不可少的。还好oracle提供了一些免费的工具,可以让我们完成这个任务。可以去Oracle网站下载oracle-xe.deb做客户端基础(注意oracle-xe从定义上来说是server,按理oracle-xe-client才是我们要的,但实际中我发现client缺少很多必要的功能,比如tnsname.ora,所以我还是选择装server)。然后使用SQLDeveloper这个免费工具做GUI。说实话SQLDeveloper没有PLSQL developer好用,但还算是一件不错的工具。
版本控制
我们公司相当BT的使用Visual SourceSafe做版本控制。想要公司在短时间内改用subversion/CVS/mercurial/git是不现实的,于是我只能自己想办法迁就了。
首先为了使用VSS,wine是不可或缺的。安装完wine之后,可以去找一份现成的VSS 6.0直接拷贝到本地就可以了。然后输入命令:wine SSEXP.exe就可以启动VSS的图形化界面了。有可能第一次运行会失败,报找不到MFC42.DLL,这个也比较容易,去Windows目录下找一个DLL丢到VSS程序目录就可以了。
在Linux下运行VSS是无法直接访问远程目录的。不过好在Linux有mount这个强有力的工具。我们使用cifs文件类型将远程目录mount到本地目录,然后在VSS里选择本地目录就可以了。在mount的时候要注意权限。
根据wine网站的说明,check in/check out/getversion等常用功能都没有问题,different会出错,但我实际实验是正常的。另外还说加文件不行,这个还没条件试,改天试试。
-----------------------------------
基本上这么一来,我的日常工作在Ubuntu下就没有问题了。以后如果再碰到问题,再解决。
没有评论
