2013年5月30日 星期四

empathy 登入時硬碟大量 I/O 造成系統停頓

Gnome 從 3.2 開始提供 gnome online account 服務,使用者可以加入 Google Talk 與 Facebook 帳號讓 empathy 自動連線並與 gnome-shell 整合。

不知道是不是 telepathy 的 bug 還是設計上本來就這樣,聯絡人的頭像似乎每次登入都會重新做快取,這對 Facebook 這種有大量聯絡人的帳號來說影響很大。每次登入 FB 帳號的時候都會因為硬碟狂轉導致系統停住好幾秒,運氣差的話可能還會觸發 gnome-shell 的當機 feature。

個人的解法是,既然他每次登入都重刷快取(快取都不快取了),那乾脆就丟 ramdisk 吧。在 ~/.cache/telepathy/ 建立一個指向 /tmp 的 symbolic link 並命名為 avatars:

$ ln -s /tmp ~/.cache/telepathy/avatars


原本的 avatars 資料夾可以刪除。這樣登入 FB 就不會讓系統卡住了。


2013年5月24日 星期五

系統全域的 PATH 與 alias 設定

簡單地說會動到以下的設定檔:
  1. /etc/bash.bashrc
  2. /etc/profile 或 /etc/profile.d
  3. /etc/login.defs


首先來看 alias 放不同地方的效果:
  1. 所有的 interactive shell 有效
  2. login shell 有效,用 su 切換的使用者無效

再來是 PATH:
  1. 所有的 interactive shell 有效,X session 無效,su 後無效
  2. su 後無效其他有效
  3. 只有 su 有效

結論:

alias 放 /etc/bash.bashrc

PATH 寫在 /etc/profile 或 /etc/profile.d/*.sh

修改 login.defs 的 ENV_SUPATH 和 ENV_PATH 跟上面同步

2013年5月6日 星期一

目前的開發環境

CPUAMD Phenom x4 945 @3.0GHZ
MBGigabyte GA870A-UD3 rev. 2.0
RAMKingston DDR3 1600 8GB (2GB x 4)
VGAMSI NVIDIA GTX460 768MB
HDDLiteon S100 64GB, WD FAEX SATA 6g 1TB
DVD-RWLITEON iHAS324
PSUSeasonic X650
LCDAOC e2440h
Sound cardOnkyo SE200PCI
TV/Capture cardTimeleak U1, Compro E650
OSDebian 8.1 Jessie

2013年4月24日 星期三

Debian 修改並重編譯套件

下載 source package

$ apt-get source [package]


下載編譯時期需要的套件

$ apt-get build-dep [package]


修改原始碼以後,撰寫 changelog

$ dch -i


編譯並產生套件

$ debuild -uc -us -b



Debian Wheezy ibus-chewing 新酷音部份設定值無法儲存的 bug

這個 bug 會發生在你變更 ibus-chewing 設定值的時候發生,症狀就是設定完按儲存以後重登,部份的設定值會被重設為最小值。最惱人的地方就是最大容納中文字數會只剩下八。單位似乎是 byte,所以在 utf8 環境下你大概打三個中文字就會被強制送出去。

新版的 ibus-chewing 已經修正了這個問題,但 Debian Wheezy 收錄的版本卻還是舊的 1.3.10。雖然個人四月初在 gentoo 那邊找到社群的 patch,也轉錄了這個 issue & patch 到 debian(#704947),不過似乎在 Wheezy 正式 release 之前是不會收的。

在 Debian 正式接受 patch 之前,可以暫時用筆者包的安裝檔:

GnuPG 實用命令


匯出公鑰

$ gpg  --export -a -o [filename] [name]


匯出私鑰

$ gpg --export-secret-key -a -o [filename] [name]


為檔案產生分離式簽章(detached signature)

$ gpg --detach-sign -a [input_file]


驗證檔案簽章

$ gpg --verify [signature_file]


檔案簽名並加密

$ gpg -sea [input_file]


檔案解密

$ gpg -d [encrypted_file]


2013年4月11日 星期四

ssh 建立 SOCKS proxy 讓 Firefox 走 ssh tunnel 或 reverse tunnel

在受限制的網路環境下可以透過建立 SOCKS server 讓 Firefox 穿牆。

$ ssh -D [local_port] -Nf [remote_host]

[local_port] 填入要在 localhost 監聽的 port,[remote_host] 填入 ssh 連線的位址。"-N" 是指不要 login shell,"-f" 放背景執行,也許還可以加個 "-C" 進行壓縮。

之後 Firefox 開啟 proxy 設定,選用 SOCKS v5。主機填 localhost,port 照上面填就可以了。

若要反過來建立一個可以從自由公開網路連進私有網路的 SOCKS server,只要先建立一條 reverse tunnel  即可。

在網路受限的主機上建立 reverse tunnel:

$ ssh -NfR [remote_port]:localhost:22 [remote_host]

在自由網路上的主機需要在 /etc/ssh/sshd_config 裡加上 GatewayPorts=yes,不然會綁到 localhost 去而不是開放網路。

在自由網路上的主機建立 SOCKS server:

$ ssh -D [local_port] -Nf localhost -p [remote_port]

另外為了預防自動斷線,可以在 ~/.ssh/config 中加入 serveraliveinterval 60。