2011/07/23

Can't remove 'db/transactions/1-1.txn'

老闆交辦一個新的案子,按慣例,先匯入 Subversion 好讓組員可以協同開發。原廠給的 SDK 接近 3G,很好奇要花多少時間才可以完成匯入? 半小時後還在進行... 卻猛然想起,svn import 時忘了加 --no-ignore,這會讓 svn 跳過 .a 和 .o 之類的檔案。只好按 ^C 煞車重來。

第二次重作忘了量時間,但一兩個小時跑不掉。看起來似乎 import 成功,但卻有一個錯誤訊息:
Can't remove 'db/transactions/1-1.txn'
svnadmin lstxns 去看,確實有一個 outstanding transaction,而且用 svnadmin rmtxns 也砍不掉。只好手動去砍掉 db/transactions/1-1.txn 這個目錄。

這樣做似乎不影響 Subversion 的使用,但連結的 Trac 好像受到影響而不能使用。解決方法是用以下指令重新同步 Trac 的 repository 資料 (也要等很久):
trac-admin $YOUR_TRAC_ENV repository resync ""



2011/04/02

手動修改 Python Egg 的克難方法

Trac 是相當好用的專案管理系統,非常值得推薦。不過,畢竟是免費的 open source project,有時候遇到問題必須自己想辦法克服。 聽起來有點可怕?放心啦,以下的案例是我使用 Trac 五年多來第一次必須自己想辦法解決。

簡單說,有一個我很常用的功能在升級到 Trac 0.12.2 之後,變得不能用了。本著 open source 的精神,我找到問題的所在,也大約知道應該如何修正。然後,我就到該 project 的 ticket system 回報問題的症狀和可能解法。結果,兩個月過去了,這個回報如石沉大海... (也許我沒仔細遵循他們的回報規範吧?)

雖然我知道如何解這問題,但 Trac 包裝成 Python egg,我不知道如何去修正裡面的程式。後來發現 egg 其實是 .zip 的壓縮檔,用 unzip 便可解開:
mkdir trac-egg
cd trac-egg
unzip ../Trac-0.12.2-py2.5.egg
很容易就可以在解開後的檔案內找到並修正問題點。然後,應該就是用 zip 再打包回去吧?
zip -r -9 ../Trac-0.12.2-py2.5.egg *
檔案大小的差異讓我有點遲疑,但還是將這個修正後的 egg 取代舊的:
cp ../Trac-0.12.2-py2.5.egg /usr/lib/python2.5/site-packages/Trac-0.12.2-py2.5.egg
初步以 trac-admin 來測試 OK,但從 Web 去存取就有錯了。錯誤訊息大約是無法解開 egg 檔,所以用 zip 打包的方法應該有錯。偏偏網路上又找不到如何包裝 Python egg 的方法 (我承認,第一眼看起來有點複雜的資料,我就放棄不看)。

就在我想放棄的時候,發現 zip 有一個參數可以只更新修改過的檔案:
zip -f ../Trac-0.12.2-py2.5.egg
這個指令只換掉我剛剛修改過的檔案,而克難修正後的 egg 檔果然能夠動作。

2011/03/02

在 Ubuntu 上看 GBK 簡中的 PDF 文件

朋友傳了一份 GBK 簡中編碼的 PDF 文件給我。此文件在 Ubuntu 底下 Adobe Reader 8.1.7 開不起來,錯誤訊息說要到以下網址下載 Font Packs:
http://www.adobe.com/products/acrobat/acrrasianfontpack.html
然而,這個 URL 早已失效了。切換到 Windows Vista,用 Adobe Reader X 來開啟,也是要求要安裝 Chinese Simplified Font Packs。但畢竟是主流平台的最新版本,直接點選錯誤訊息的連結就可以完成安裝程序。

在 Ubuntu 上就沒有解法嗎?答案是有的。Adobe Reader 8.1.7 是 Linux 上有中文介面的最新版本,但卻沒有對應的 Chinese Simplified Font Packs,所以必須換成英文介面的較新版本。

目前,Adobe 網站上能找到的最新 Chinese Simplified Font Packs 是 9.1.0 版。根據測試,可以搭配 Adobe Reader 9.5.5。步驟如下:

移除舊版 Adobe Reader 之後,再安裝新的版本:
# sudo -s
# cd /tmp
# wget ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.5.5/enu/AdbeRdr9.5.5-1_i386linux_enu.deb
# dpkg -i
AdbeRdr9.5.5-1_i386linux_enu.deb
接著,再安裝 Font Packs (簡中和繁中都必須裝,否則 Big5 編碼的也開不起來):
# wget ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.1/misc/FontPack910_cht_i486-linux.tar.bz2
# tar xvjf FontPack910_cht_i486-linux.tar.bz2
# cd CHTKIT/
# ./INSTALL
# cd /tmp
# wget ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.1/misc/FontPack910_chs_i486-linux.tar.bz2
# tar xvjf FontPack910_chs_i486-linux.tar.bz2
# cd CHSKIT/
# ./INSTALL
以下是 ./INTALL 的過程,僅供參考:
Welcome to the Asian Language Kit installation.
This installation will not work if you do not have the Unix Adobe Reader version 9.1 installed prior to this installation.
If you do not have Adobe Reader version 9.1 already installed on your system please do so before installing this Asian Language Kit.
Continue installation? [y]y
The font software contained in this package is being licensed to you solely
for use with the Adobe Reader product ("Adobe Reader") subject to
the terms and conditions of the Electronic End User License Agreement
accompanying the Adobe Reader.

Please type "accept" to accept the terms and conditions of license agreement; Type "decline" to exit. accept
Enter the location where you installed the Adobe Reader [/opt]

Installing Common binaries ...
Done

Installing Common resources ...
Done

Installing Simplified Chinese language resources ...
Done
Installation completed.

2011/02/26

將 gnome-panel 完全移除

Ubuntu 預設的 gnome-panel 組態是有上下兩組 panel。若你想移除其中一組,只要在 panel 上面按右鍵即可找到移除的功能。但若你想移除最後一個 panel,這一招就沒有用了。必須改用以下的方法:
  1. 執行 gconf-editor
  2. 找到 desktop > gnome > session > required_components > panel
  3. panel 的值應該是 gnome-panel,把它改成空白
  4. 登出再登入即可生效



你問我為何要移除 gnome-panel?嗯,我找到一個不錯的替代套件:Avant-window-navigator (Awn),畫面如上所示。這個套件是類似 MacOS X 的 panel,gnome-panel 有的功能幾乎都有。個人習慣利用他 Intellhide (聰明隱藏) 的特性,將所有螢幕空間留給應用程式。

2011/02/07

Ubuntu 的 VNC 套件

Ubuntu 上官方的 VNC 套件為:
  • Server 是 vino
  • Client 是 vinagre
啟動 VNC server 的方式很簡單:
  1. 登入準備作為遠端桌面那台主機
  2. 執行 vino 設定 (系統 > 偏好設定 > 遠端桌面),設定範例如下
  3. 完成設定之後,只要保持登入狀態,VNC server 就自動啟動 (重新登入也一樣)


注意!若遠端桌面有啟動特殊視覺效果,可能會影響 client 端檢視桌面的完整性。建議關掉所有特殊視覺效果:
  1. 登入準備作為遠端桌面那台主機
  2. 在桌面按右鍵 > 更改桌面背景 > 視覺效果 > 選「無」
VNC client 連到遠端桌面的方法也很簡單:
  1. 執行 vinagre (網際網路 > 遠端桌面檢視器)
  2. 若一切正常,應該可以在左側邊面板看到遠端主機的名字,點擊該名字即可連線

2010/11/12

在 Ubuntu 上解開 x.part1.rar 分割壓縮檔

在 Windows 上可以用 7-zipWinRAR 之類的程式來解開並組合 x.part1.rar 這類型的分割壓縮檔。在 Ubuntu 上當然也可以:
rar e x.part1.rar
當然,要先安裝 rar:
sudo apt-get install rar

2010/06/30

利用 dpkg 查出檔案是由哪個 package 來的

Ubuntu 是由各種 package 所組成的。也就是說,檔案系統上的檔案,大部分都可以追溯到某一個 package。例如:
dpkg -S `which wireshark`
dpkg -S /var/www
dpkg -S /etc/init.d/ssh