by agate - Published: 2010-07-06 [5:03 下午] - Category: 开发环境, 系统操作

参考: http://progit.org/book/zh/ch4-0.html

1. 安装 git

2. 安装 gitosis
$ git clone git://eagain.net/gitosis.git
$ sudo apt-get install python-setuptools
$ cd gitosis
$ sudo python setup.py install

3. 创建 git 用户
$ sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git

4. 初始化 gitosis
使用 ssh-keygen 来建立 ssh 公钥(如果你已经有了就不必了)
$ ssh-keygen
然后
$ sudo cp ~/.ssh/id_rsa.pub /tmp/
$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub
$ sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

5. 配置 gitosis
$ cd
$ git clone git@localhost:gitosis-admin.git
$ cd gitosis-admin

5.1. 编辑 gitosis.conf 文件, 格式如下

[group {repository-name}]
writable = {dir-name}
members = {user1} {user2}

5.2. 添加 user1.pub 和 user2.pub 到 keydir 目录下
5.3. 提交你的修改和添加的 pub 文件
$ git commit -a -m "message"
$ git push

5.4. 这样 user1 和 user2 就可以通过 git 操作那个 {repository-name} 了, 例如:
$ git clone git@your_server_ip:{repository-name}.git

总结:
gitosis 不用让用户把自己的 ssh 公钥贴到 ~/.ssh/authorized_keys 中, 转而交给自己 gitosis-admin 中的 keydir 目录管理, 相当巧妙.

Tags: [ , ] - Comments: View Comments
by agate - Published: 2010-05-01 [10:49 下午] - Category: 开发环境

现在一直使用的是 windows 7 加上 ubuntu server 的系统配置. 这里记录一下一些安装配置的细节:

1. 安装 Guest Additions
先在菜单中选择安装 Guest Additions
$ sudo apt-get install dkms
$ cd /cdrom
$ sudo ./VBoxLinuxAdditions-amd64.run

2. 关机并且设置 nat 端口映射
打开 cmd 并且进入 virtualbox 的安装目录
PATH> VBoxManage setextradata "[你的虚拟机名字]" "VBoxInternal/Devices/[e1000]/0/LUN#0/Config/[自己定义名字(根据需要比如ssh/http)]/Protocol" [TCP 或者 UDP]
PATH> VBoxManage setextradata "[你的虚拟机名字]" "VBoxInternal/Devices/[e1000]/0/LUN#0/Config/[自己定义名字(根据需要比如ssh/http)]/GuestPort" [端口号]
PATH> VBoxManage setextradata "[你的虚拟机名字]" "VBoxInternal/Devices/[e1000]/0/LUN#0/Config/[自己定义名字(根据需要比如ssh/http)]/HostPort" [端口号]

(如果你使用 PCNet 网卡, 就把 e1000 改成 pcnet. e1000 适用于 Intel PRO/1000 网卡)
一般来说, 映射 ssh 的 22 端口, http 的 80 端口, 基本就够用了.

3. 设置共享目录
首先在 virtualbox 中设置好共享目录
然后编辑 ubuntu 中的 /etc/fstab 并且加入:
[共享目录名] [ubuntu下的目标目录] vboxsf defaults 0 0

virtualbox 提供了很好的文档 http://www.virtualbox.org/manual/

备注: 如果你使用原来的介质但是新建立了一个虚拟机的话, 会发现 ubuntu 找不到网卡了. 解决方法是:
$ sudo rm /etc/udev/rules.d/70-persistent-net.rules
$ sudo reboot

Tags: [ , ] - Comments: View Comments
by agate - Published: 2010-05-01 [8:34 下午] - Category: 开发环境

安装如下的包:
$ sudo apt-get install build-essential gnustep gobjc gnustep-make libgnustep-base-dev gnustep-devel

建立一个 alias 在 .bashrc 中:
alias objcc='gcc `gnustep-config --objc-flags` -lgnustep-base'

这样只要:
$ objcc source_file_name

备注:
gnustep-config --objc-flags 用于 gcc 对于 objc 的参数

Tags: [ , ] - Comments: View Comments
by agate - Published: 2010-04-11 [10:00 上午] - Category: 开发环境, 系统操作

这几天疲惫于在 ubuntu 和 windows 环境下的来回切换(虽然 ubuntu 已经让我对 linux 的桌面环境刮目相看了, 但是还是有诸多的不便...). 同时也在公司里头使用了多个月的 MAC OS X. 总体还是感觉:
* windows 是让我使用起来最舒服的系统
* linux 是让我开发最舒服的系统
* mac 是让我最赏心悦目的系统.

所以呢, 如果工作我会选择 linux (呵呵我是程序员呀). 如果平时上网生活我还是喜欢 windows (丰富的应用程序). 但是我不会选择 mac (软件没有 windows 多, 问题虽然比 linux 少得多, 但是碰到问题想要找解决方案也比 linux 难得多)

于是我又回到了 windows + linux 的时代. 但是人总是要进步的呀. 过去我老是傻乎乎地装一个 desktop version 的 ubuntu 虚拟机, 然后在虚拟机中操作 ubuntu. 卡得不行不说还浪费内存. 于是想到是不是可以直接只用 linux 的命令行, 就想在公司开发那样. 于是我查了一些文档, 找到了一种方式可以不启动图形化的 virtualbox 直接以 daemon 的方式启动的方法, 再装一个 ubuntu server version. 可以减小很多的内存使用. 方法就是在命令行中键入:

"c:\Program Files\Sun\VirtualBox\VBoxHeadless.exe" -s SERVER_NAME -v off

但是仅仅这样的话你还是会看到一个 cmd 的窗口. 如果你想让它就在背后安静地运行你还可以写一个 VB Script 来放到启动项里让 ubuntu server 跟你的电脑一起启动(linux 和 windows 合二为一咯)

' 创建一个文件叫做 start_server.vbs 内容如下
CreateObject("Wscript.Shell").run """C:\Program Files\Sun\VirtualBox\VBoxHeadless.exe"" -s SERVER_NAME -v off",0

当然更重要的是 virtualbox 还可以使用 shared folder 来共享文件.

至少目前这样的系统配置是让我感觉最舒服的, 开着迅雷电驴, 聊着QQ和MSN, 逛着淘宝, 和朋友视频, 想到点子了就开上 PuTTY 开发一下看看效果. 反正我一直是觉得程序员的生活是离不开写程序的即便是在最舒服的家里. 突然摆脱了系统的切换, 好惬意 :)

Tags: [ , , ] - Comments: View Comments
by agate - Published: 2009-07-19 [3:52 下午] - Category: 开发环境

今天在 Ubuntu上安装 Sinatra 后准备试试看是否成功, 但是在执行写好的 ruby 脚本的时候发现原来 Sinatra 是没有自带 Server 的. 需要安装 thin, mongrel, webrick 其中至少一个.(都是 rack 服务器好像)

由于 mongrel 和 webrick 都使用过了, 怀着好奇的心情今天试着装了一下 thin, 同时遇到了一些问题, 记录下来.

0. 不用说了 gem install thin

1. g++
我安装到一半就告诉我出错:

make: g++: Command not found
make: *** [rubymain.o] Error 127

我其实不清楚 g++ 和 gcc 的区别, 我觉得很奇怪, 一般不是都默认装了 gcc 么? 怎么安装的时候却找不到 g++ 呢? 怀着怀疑的态度我试着 apt 了一下 g++ 没想到真的有这么一个玩意. 只要安装好了就可以成功通过 gem 安装 thin

2. openssl
装完了当然是用用看咯. 我在命令行键入 thin 却被告知:

/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- openssl (LoadError)

可是 openssl 我的确装了啊, google 了一下原来还要装 libopenssl-ruby

DONE

Tags: [ , ] - Comments: View Comments
by agate - Published: 2009-04-05 [5:13 下午] - Category: 开发环境

我一般不喜欢改动系统的总体配置, 所以一般我使用 gem 安装的时候都是不加 sudo 的. 于是我的大多数 gems 都是安装在 ~/.gem 下的(包括 rails). 今天装了 rails 2.3.2 似乎有点不爽(感觉). 于是想卸载. 但是在我执行:
$ gem uninstall rails
ERROR: While executing gem ... (Gem::InstallError)
  Unknown gem rails >= 0

弄了半天, 也查了是不是路径拼写错误. 还是没弄出来...
后来 google 了一下, 得知由于非默认安装位置(非 sudo 嘛). 所以需要指定 --install-dir 参数. 于是乎我就这么写了:
$ gem uninstall --install-dir ~/.gem/ruby/1.8
ERROR: While executing gem ... (Gem::InstallError)
  Unknown gem rails >= 0

还是一样噢... 无奈, 继续 google! 发现一个命令:
$ gem list -d rails
*** LOCAL GEMS ***
rails (2.3.2, 2.2.2)
  Author: David Heinemeier Hansson
  Rubyforge: http://rubyforge.org/projects/rails
  Homepage: http://www.rubyonrails.org
  Installed at (2.3.2): /home/agate/.gem/ruby/1.8
    (2.2.2): /home/agate/.gem/ruby/1.8

这样就十分方便地晓得了具体 gem 安装的路径了, 直接拷贝下来作为 --install-dir 参数即可.
$ gem uninstall --install-dir /home/agate/.gem/ruby/1.8 rails
Select gem to uninstall:
1. rails-2.2.2
2. rails-2.3.2
3. All versions
> 2
Successfully uninstalled rails-2.3.2

至此, 小问题解决.

PS. 你会说: 呀 "/home/agate/.gem/ruby/1.8" 和 "~/.gem/ruby/1.8" 不是一样么? 怎么第一次用 --install-dir ~/.gem/ruby/1.8 不行呢?
因为就是不行! 我也不知道, 他就是要绝对路径罢了...

Tags: [ , , ] - Comments: View Comments
by agate - Published: 2009-04-05 [9:36 上午] - Category: 开发环境

今天在新的 Ubuntu 上面安装 rails 的时候碰到了这样的问题:

`require_frameworks': no such file to load -- net/https (RuntimeError)

原来是缺少 libopenssl-ruby library:
解决方案:
$sudo apt-get install libopenssl-ruby
本文作为 Ubuntu下部署rbuy on rails开发环境 补充

Tags: [ , , ] - Comments: View Comments
by agate - Published: 2008-12-07 [8:18 上午] - Category: 开发环境

i feel uncomfortable while i using vim and having to move way up to reach Escape key. so i swaped the Escape and CapsLock keys by under steps:

first, open your terminal. and type:
$vim ~/.xmodmap

second, add under statements into ./xmodmap file.
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
keysym Escape = Caps_Lock
add Lock = Caps_Lock

last, restart your X env.
(maybe you can use CTRL + ALT + BackSpace)

after these configurations, i found it's easier than move way up to reach Esc while using vim.

ps. thanks forrest, thanks leon! i found i fell in love with vim!!! it's really powerful!

Tags: [ , , ] - Comments: View Comments
by agate - Published: 2008-11-22 [6:51 下午] - Category: 开发环境

最近工作一直有 WEB 前端的工作, 而且又在 Linux 下, 于是 Firefox 和 Firebug 是不可或缺的工具了! 这里不得不提起 Firebug! 这个东西过去只是当作 html 快速查看器和类似 IE 的 JavaScript 错误报警器来使用, 都不知道这个让众多 WEB DEVELOPER 所喜爱的开发辅助工具还有很多重要的特点和开发上的便利. 于是准备在这个日志里头记录下来:

1. console.log()
控制台日志, 可以在 Firebug 的 Console 标签页中打印出来.( 还被同事笑我这个 WIN 用户使用 alert 弹出消息调试... ) 这个功能有个很好的地方就是他不只是 print 出来一个 string 给你. 如果 log 的是一个 object 这类的东西, 你还可以用鼠标点击这条 log, 然后他会跳到 DOM 标签页给你跟踪这个 object 的具体数值.

2. 断点
这个是我怎么都没想到的... ( 可是我怎么就是没想到呢... ) 这个 Firebug 还可以在加载的 JS 中打上断点然后执行时可以 debug.

... updating ...

Tags: [ , , , ] - Comments: View Comments
by agate - Published: 2008-11-07 [3:02 下午] - Category: 开发环境

奇怪... Ubuntu8.04 下我都没碰到这类问题, 倒是升级到 Ubuntu8.10 的时候 java 就出现乱码了~ 不说为什么, 因为我也不知道. 这里记录一下简单的解决方案:
1.
在 ${JRE_HOME}/lib/fonts/ 下建立个目录 fallback
比如我这儿就是
$cd /usr/lib/jvm/java-6-sun/jre/lib/fonts/
$mkdir fallback

2.
在 fallback 里弄个中文字体(拷贝或链接都可以)
比如我这就是
$ln -s /usr/share/fonts/truetype/arphic/uming.ttf /usr/lib/jvm/java-6-sun/jre/lib/fonts/fallback/

3.
进入 ${JRE_HOME}/lib/fonts/fallback/ 执行 mkfontscale, 再把 jre/lib/fonts/fallback/fonts.scale 的内容加到 ${JRE_HOME}/lib/fonts/fonts.dir
我这儿就是
$cd /usr/lib/jvm/java-6-sun/jre/lib/fonts/fallback/
$mkfontscale
$cd ..
$cat fallback/fonts.scale >> fonts.dir

DONE!

Tags: [ , , ] - Comments: View Comments