如何自行編譯/打包/測試/回報/參與 HIME?

HIME INPUT METHOD EDITOR, https://github.com/hime-ime/hime

版主: Tetralet

如何自行編譯/打包/測試/回報/參與 HIME?

文章Tetralet » 週日 1月 22, 2012 12:52 pm

如果您想自行編譯 HIME,以下提供了簡單的步驟:
原始碼位置:

 您可以在 https://github.com/caleb-/hime/downloads 取得 HIME 的最新穩定版/開發版 tarball。
 穩定版 tarball 備份站: http://hime.luna.com.tw/

所需套件:

 必需套件:build-essential libgtk2.0-dev/libgtk-3-dev libxtst-dev

  build-essential 是 Debian 的一個虛擬套件,裡面包含了一些編譯時的必要套件,像 gcc 或 make 之類的;
  如果您使用的是其它的 Linux Distribution,可能要找找看有沒有類似的套件。

 選用套件:libanthy-dev libchewing3-dev libgtk2.0-dev/libgtk-3-dev
      libqt3-mt-dev libqt4-dev libappindicator-dev gettext

  libanthy-dev: 如果要加入 anthy 的支援的話
  libchewing3-dev: 如果要加入 新酷音 的支援的話。注意至少要使用新酷音 0.3.2 以上才能順利編譯喔!
  libgtk2.0-dev 如果要編譯 GTK2+ 輸入法模組的話
  libgtk-3-dev: 如果要編譯 GTK3+ 輸入法模組的話
  libqt3-mt-dev: 如果要編譯 QT3 輸入法模組的話。
  libqt4-dev: 如果要編譯 QT4 輸入法模組的話
  libappindicator-dev:
   如果要支援 Ubuntu 的 Unity Tray 的話。
   注意至少要使用 Ubuntu 11.10 的 libappindicator-dev 0.4.1 以上才能順利編譯喔!
  gettext:
   如果要編譯翻譯檔的話。覺得沒必要的話記得指定 --disable-nls。

 因為要 QT3 im-modules 能動作需在 QT3 上套用一個非官方的修正程式,請確認您的系統有套用此修正程式,
 再啟用 --enable-qt3-immodule 選項來編譯 QT3 輸入法模組。

 HIME 可以在純 GTK2+(libgtk2.0-dev) 或 GTK3+(libgtk-3-dev) 環境下編譯。
 在編譯時會同時編譯相對應的 GTK2+/3+ 輸入法模組。

解開原始碼

 目前 HIME 的官方原始碼是用 xv 壓縮的。所以請以以下指令解開下載來的原始碼:

  tar xJf hime-0.9.9.tar.xz

編譯流程:

 清除上次編譯所殘留下來的暫存檔:

  在開始編譯之前,請順手清除上次編譯所殘留下來的暫存檔,以確保您的 HIME 是全新編譯的:

   make clean distclean

  HIME 支援以下的 make 指令:

   make clean:
    清除在 make 過程中所產生的所有中繼檔,如 *.o 之類的。
   make distclean:
    清除由 configure 所產生的設定檔。
   make:
    編譯 HIME。
   make install:
    將 HIME 安裝至系統中。

  HIME 目前尚未支援 make uninstall 指令。

 執行 ./configure 並設定 CFLAGS、CC 和 --prefix 及其它編譯選項

  可以使用 CFLAGS 和 CC 來指定 HIME 所要使用的編譯程式和它的 CFLAGS。
  目前 HIME 支援了 gcc/clang 編譯程式,預設的 CFLAGS 則為 -Wall。

  也可以藉由 --prefix 來指定 HIME 的安裝路徑,建議要小心得修改這個值,
  像是 Debian User 應該指定為 /usr;
  否則 GTK/QT im moduels 很可能會安裝在錯誤位置。

  如果您的系統中同時有 GTK2+ 及 GTK3+,但您想編譯 GTK3+ based 的 HIME,
  請記得加上 --with-gtk=3.0 選項。

  如果您沒安裝 gettext 套件,您可能得下達 --disable-nls 讓 HIME 不會去編譯翻譯檔。
  綜合範例如下:

   CFLAGS="-g -Wall -Os" ./configure --prefix=/usr --with-gtk=3.0 --disable-nls

  HIME 目前所提供的編譯選項如下:

   --prefix=PREFIX 指定安裝路徑。預設為 /usr/local
   --with-gtk=2.0|3.0 要以 GTK2+ 還是 GTK3+ 來編譯 HIME。預設為 2.0。
   --disable-nls 不編譯翻譯檔,目前預設介面為繁體中文。
   --disable-xim 不使用 XIM。
   --disable-system-tray 不使用 System Tray。
   --disable-tsin 不使用詞音。
   --disable-gtk2-im-module 不編譯 GTK2+ 輸入模組。預設為自動偵測。
   --disable-gtk3-im-module 不編譯 GTK3+ 輸入模組。預設為自動偵測。
   --enable-qt3-immodule 編譯 QT3 輸入模組。預設為自動偵測。
   --disable-qt4-immodule 不編譯 QT4 輸入模組。預設為自動偵測。
   --disable-anthy 不支援 anthy。預設為自動偵測。
   --disable-chewing 不支援 chewing。預設為自動偵測。
   --disable-appindicator 不支援 Ubuntu Unity Tray。預設為自動偵測。
   --qt3-moc-path=PATH 指定 QT3 的 moc 指令的路徑。
   --qt4-moc-path=PATH 指定 QT4 的 moc 指令的路徑。
   --qt4-im-module-path=PATH 指定 QT4 輸入模組的安裝路徑。

 開始編譯

  接下來只要下達 make 就會開始編譯了。如果在編譯過程中遇到任何問題,請您不吝向我們回報:

   make

  如果編譯一切順利,您就可以開始測試/除錯 HIME 了。請參考下個章節的介紹;
  或是把 HIME 安裝在系統裡,請參考下個步驟。

 將 HIME 安裝至系統裡:

  如果編譯的過程中沒出現任何問題,您可以利用以下指令把 HIME 安裝到系統裡:

   make install

  註:為了維護您系統的純淨度,請儘量利用系統的套件機制來安裝軟體。
    自行用 ./configure && make && make install 來編譯軟體並將軟體直接安裝到您的系統裡
    可能會搞亂您的系統並使得您的系統套件機制混亂。請戒而慎之。

自行打包 deb 套件:

 為了確保您的系統的純淨度,在此強烈建議把 HIME 打包成 deb 套件後再用 dpkg 指令來安裝 hime 套件。
 這在 HIME 裡這完全不是難事,只要先安裝好 fakeroot、debhelper,以及上文所寫的必需/選用套件,
 然後執行以下指令即可生成 hime_0.9.9+git120115-1_amd64.deb 了:

  sh distro/debian/gen-deb

 然後用 dpkg 把它安裝起來即可:

  dpkg -i hime_0.9.9+git120115-1_amd64.deb

自行打包 rpm 套件:

 這部份由於筆者對 rpm 系列實在不熟,尚待強者補完。

測試 HIME:

 HIME 還提供了一個小小 script 可以讓您不用將 HIME 安裝至系統裡,就能直接執行 HIME 並進行測試/除錯。

 首先,請先安裝 gtk2.0-examples gtk-3-examples 這幾個套件,然後執行以下指令即可:

  sh distro/dev-tools/scripts/test-hime

 如果以上指令失效,您可能要稍加修改 distro/dev-tools/scripts/test-hime 才能讓這個小測試程式能夠動作。例:

  GTK_2_DEMO_APP=leafpad ← 測試 GTK2+ 的程式。
   您可以考慮在此指定為 leafpad 之類的 GTK2+ based 應用程式。
  GTK_3_DEMO_APP=l3afpad ← 測試 GTK3+ 的程式。
   您可以考慮在此指定為 l3afpad 之類的 GTK3+ based 應用程式。
  GTK_QUERY_IMMODULES_2=/usr/lib/x86_64-linux-gnu/libgtk2.0-0/gtk-query-immodules-2.0 ←
   gtk-query-immodules-2.0 這個指令的路徑。
  GTK_QUERY_IMMODULES_3=/usr/lib/x86_64-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0 ←
   gtk-query-immodules-3.0 這個指令的路徑。

 然後再執行一次 distro/dev-tools/scripts/test-hime 試試看。

 不過這個小小 script 只能測試 XIM 及 GTK2+/3+ 輸入模組。
 QT3/4 輸入模組還是只能安裝到系統裡後再行測試了。

回報問題:

 如果您在測試 HIME 時發現了任何問題,請您不吝向我們回報問題。
 為了能更快速釐清問題所在,建議您能詳述問題發生的步驟,如果可以,請先參考:如何有效地報告錯誤。
 # http://www.chiark.greenend.org.uk/~sgta ... gs-tw.html

 而在必要時,建議您在回報問題時,順便回報您的系統設定。
 在 HIME 裡有一個小小的 script 可以顯示一些 HIME 的相關系統設定,請直接執行:

  hime-env

 然後,再把輸出的資訊貼上來即可。

善用 coredump 資訊

 在 Linux 裡,如果程式當掉了的話,系統可以把當時記憶體內容 dump 成檔案以便於日後除錯。
 但在 Debian/Ubuntu 裡,因為這些除錯檔可能會佔上硬碟很大的空間,所以預設上這個功能是被關閉的。

 如果您想打開這個功能,請設定 /etc/security/limits.conf 如下:

  # <domain>  <type> <item>   <value>
  *    hard core   409600
  *    soft core   102400

 其中的 <domain> 指的是使用者名稱;
 <type> 中的 hard 指的是『系統限制大小』;soft 指的是『使用者預設大小』;
 <item> 指的是類別;
 <value> 指的是檔案限制大小,不想限制的話可在此填上 unlimited。
 請 man limits.conf 以取得更多詳盡資訊。

 設定完成後,登出登入後即可生效。

 之後,如果您在執行 HIME 的期間發生了什麼問題而當掉了,您應該可以看到如下的錯誤訊息:

  程式記憶體區段錯誤 (core dumped)

 然後會在執行 HIME 的目錄下生成 core 這個檔案。您可以提交這個檔案以利於除錯。
 不過,這個檔案包含了您的記憶體的資料,提交這個檔案可能會引發安全及個人隱私上的隱憂。
 如果您會使用 gdb 的話,建議您自行用 gdb 載入這個檔案並 backtrace 後提交追蹤後的資訊方為上策。

參與 HIME

 您不需要是箇中高手才能加入 HIME 開發團隊,我們需要的只是您肯試著捲起袖子幫忙。
 我們 HIME 開發團隊的成員其實都只是在修改各自自己感興趣的地方,所以時時期待能有新血加入。
 HIME 開發團隊中有個新成員是高中生,這是他第一次接觸 C 語言,也是第一次開發 GTK 程式。
 讓 HIME 能支援 Ubuntu 的 Unity Tray 就是他的大作喔!

 而對於 HIME 團隊而言,其實只要您肯幫忙測試推廣回報問題,對我們就是莫大的助益。
 請立即加入 IRC 頻道 #hime@freenode.net 吧!就算上來聊天哈啦也好。

 但其實只要您肯試用看看 HIME,我們 HIME 團隊就感到非常榮幸了。
 我們衷心期望您立即下載測試使用 HIME 吧!謝謝!
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

誦唱大復活咒文,今天的 Tetralet 又在唧唧喳喳了 重生!
Tetralet
俺是博士
俺是博士
 
文章: 3078
註冊時間: 週四 11月 28, 2002 3:02 pm

回到 HIME (姫) 專案 討論專版

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客