2009年8月28日 星期五

快速製作 Ubuntu 9.04 (Jaunty) alternate 安裝用的 USB Stick

並不是每台電腦都有光碟機的,加上燒錄光碟片也不太環保,所以能用 USB Stick 來安裝 Ubuntu Linux 作業系統就盡量使用 USB Stick 囉。
  1. 首先準備一個可以完全亂玩的 USB Stick
  2. 下載 boot.img.gz
    $ wget http://archive.ubuntu.com/ubuntu/dists/jaunty/main/installer-i386/current/images/hd-media/boot.img.gz
  3. 將 boot.img 內容 dump 至 USB Stick
    $ sudo su -c "zcat boot.img.gz > /dev/sdb"
  4. 拔起 USB Stick 重新接到電腦上
    $ df -h /dev/sdb
    Filesystem Size Used Avail Use% Mounted on
    /dev/sdb 782M 23M 760M 3% /media/Ubuntu Inst
  5. 然後把 ubuntu-9.04-alternate-i386.iso 複製到 USB Stick 裡面
    $ cp -av ubuntu-9.04-alternate-i386.iso /media/Ubuntu\ Inst/
    $ df -h /dev/sdb
    Filesystem Size Used Avail Use% Mounted on
    /dev/sdb 782M 722M 61M 93% /media/Ubuntu Inst
以前在 Debian 也使用過同樣的方法 使用 USB stick 來安裝 Debian GNU/Linux 5.0 (Lenny) rc1

2009年8月26日 星期三

將 Subversion Repository 搬進 Google Code 裡面

由於 http://pcmanx.csie.net 的管理者 lwhsu 好像去玩國軍 Online 了
加上網頁一直無法更新還有常常會遇到網站掛點的狀況
所以動起了幫 PCManX GTK+ 搬家的念頭
以下是筆記將 Subversion Repository 搬進 Google Code 的過程
  1. 首先建立本地端的 mirror
    $ svnadmin create pcmanx
    $ cat <<'EOF' > pcmanx/hooks/pre-revprop-change
    #!/bin/sh
    USER="$3"
    if [ "$USER" = "svnsync" ]; then exit 0; fi
    echo "Only the svnsync user can change revprops" >&2
    exit 1
    EOF
    $ chmod +x pcmanx/hooks/pre-revprop-change
    $ svnsync init file://`pwd`/pcmanx https://svn.csie.net/pcmanx
    $ svnsync sync file://`pwd`/pcmanx
  2. 然後將 mirror 同步到 Google Code 上面
    $ svnsync init --username fourdollars https://pcmanx-gtk2.googlecode.com/svn file://`pwd`/pcmanx
    $ svnsync sync --username fourdollars https://pcmanx-gtk2.googlecode.com/svn
  3. 如果中途中斷遇到 lock 問題, 可以這樣解決, 不過要確定沒有人在使用該 Subversion Repository
    $ svn pdel --revprop -r 0 svn:sync-lock https://pcmanx-gtk2.googlecode.com/svn
    $ svnsync sync --username fourdollars https://pcmanx-gtk2.googlecode.com/svn
這樣就大功告成啦~ 以後如果有類似的狀況可以把粗體字的部份換掉就可以了~ :D

2009年8月22日 星期六

利用 caff 來加速 GPG sign 的過程

Debian Birthday Party 2009 in Taiwan 上面 PaulLiu 介紹了 GPG 簽章的過程
當中提到了為了防止有人偽造他人的 Email 所以我們在得到對方的 Finger Print 之後
進行簽署的過程當中的最後不應該直接把簽好的金鑰上傳到伺服器上面
反而是要使用對方的公鑰加密寄到對方的 Email 信箱當中
由對方去上傳你/妳已經簽署過的金鑰
而這之間的冗長又重覆的動作可以透過 signing-party 套件當中的 caff 來簡化這些動作
$ sudo apt-get install signing-party
例如你/妳拿到 $4 的金鑰的 Finger Print 後
D51B 8601 C9AE 0E87 A0BE  7795 BCB0 2784 A55D A068
然後執行
$ caff A55DA068
這樣就會自動從網路上面取得 $4 的公鑰, 然後進入 gpg command mode
Command> sign
Command> save
就會自動直接將加密好的文章跟簽署過的金鑰寄給我
(前提是你/妳已經設定好文字模式下的寄信方法, 像是上一篇 "利用 ssmtp 透過 Gmail 在文字模式下寄信" 所提的)

利用 ssmtp 透過 Gmail 在文字模式下寄信

sudo aptitude install ssmtp
然後編輯 /etc/ssmtp/ssmtp.conf 加入
AuthUser=user.name@gmail.com
AuthPass=password
FromLineOverride=YES
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
之後就可以透過 mailutils 套件中的 mail 指令來寄信
$ echo "This is a test mail." | mail -s "test mail" user.name@gmail.com
當在你/妳收到自己寄出來的信就可以確認是正常運作的

2009年8月18日 星期二

COSCUP 2009 簡報:使用 Redmine 做專案管理

整個投影片的重點其實在最後一張... Work Flow

而 Redmine 本身只是個工具用來輔助這個 Work Flow 的進行
http://archive.sylee.org/slides/COSCUP/2009/Redmine.pdf

2009年8月17日 星期一

Commit your git changesets into Subversion

Commit your git changesets into Subversion
  • First prepare your Subversion target folder, ex. http://svn.example.com/svn/git-backup
    $ svn mkdir --parents http://svn.example.com/svn/git-backup
  • Configure your git-svn on your original git working folder.
    $ git-svn init http://svn.example.com/svn/git-backup
  • Fetch Subversion changesets.
    $ git-svn fetch
  • Manually graft relationship.
    $ git show-ref git-svn
    8ec71dda61a3a32d9cf0c00e51a0c1ca3ea39f0e refs/remotes/git-svn
    $ git log --pretty=oneline master | tail -n1
    bcbd25a12642e98e1c54a8e51abacd85222b79a7 Your latest git commit log.
    $ echo "bcbd25a12642e98e1c54a8e51abacd85222b79a7 8ec71dda61a3a32d9cf0c00e51a0c1ca3ea39f0e" >> .git/info/grafts
  • Then push all git changesets into Subversion repository.
    $ git-svn dcommit
With Standard Layout
  • First prepare your Subversion target folder, ex. http://svn.example.com/svn/git-backup/{trunk,branches,tags}
    $ svn mkdir --parents http://svn.example.com/svn/git-backup/trunk http://svn.example.com/svn/git-backup/branches http://svn.example.com/svn/git-backup/tags
  • Configure your git-svn on your original git working folder.
    $ git-svn init --stdlayout http://svn.example.com/svn/git-backup
  • Fetch Subversion changesets.
    $ git-svn fetch
  • Manually graft relationship.
    $ git show-ref trunk
    8ec71dda61a3a32d9cf0c00e51a0c1ca3ea39f0e refs/remotes/git-svn
    $ git log --pretty=oneline master | tail -n1
    bcbd25a12642e98e1c54a8e51abacd85222b79a7 Your latest git commit log.
    $ echo "bcbd25a12642e98e1c54a8e51abacd85222b79a7 8ec71dda61a3a32d9cf0c00e51a0c1ca3ea39f0e" >> .git/info/grafts
  • Then push all git changesets into Subversion repository.
    $ git-svn dcommit

2009年8月2日 星期日

使用 GnuPG/GPG 來簽署別人的 GPG Key

關於 GPG 的觀念請先參考 Tetralet 寫的 用 GPG 來保護您的郵件!(一)
以下只是筆記金鑰簽署過程的指令操作與步驟
  1. 首先要實際見過面並且透過身份證或是護照確認對方的身份
  2. 抄下對方的金鑰指紋, 例如: D51B 8601 C9AE 0E87 A0BE  7795 BCB0 2784 A55D A068
    (同時也將自己的金鑰指紋給對方, 也是要檢查過身份證或是護照, 對外國人最好準備好護照)
  3. 去金鑰伺服器取回對方的公鑰
    $ gpg --recv-keys A55DA068
  4. 然後比對金鑰指紋是否相符
    $ gpg --fingerprint A55DA068
  5. 進行簽署動作
    $ gpg --sign-key A55DA068
  6. 檢查簽署結果
    $ gpg --check-sigs A55DA068
  7. 將簽署結果更新至伺服器
    $ gpg --send-keys A55DA068
  8. 然後寫一封信通知對方已經簽署過對方的金鑰了
    Hi $4,
    我已經簽署過你的金鑰並且上傳至伺服器 subkeys.pgp.net
    然後使用明碼簽章
    $ gpg --clearsign email.log
    產生一個 email.log.asc
    就可以將 email.log.asc 寄給對方了
    對方收到後可以使用
    $ gpg --verify-files email.log.asc
    透過你當初給對方抄的金鑰指紋來驗證這封 Email