今天的 Tetralet 又在唧唧喳喳了



« 六月 2017 »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    






 

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

Tetralet | 22 元月, 2012 12:18

如果您想自行編譯 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 的一個虛擬套件,裡面包含了一些編譯時的必要套件,像 gccmake 之類的;如果您使用的是其它的 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 輸入法模組的話。
因為要 QT3 im-modules 能動作需在 QT3 上套用一個非官方的修正程式,請確認您的系統有套用此修正程式,再啟用 --enable-qt3-immodule 選項來編譯 QT3 輸入法模組。
libqt4-dev: 如果要編譯 QT4 輸入法模組的話
libappindicator-dev:
如果要支援 Ubuntu 的 Unity Tray 的話。注意至少要使用 Ubuntu 11.10 的 libappindicator-dev 0.4.1 以上才能順利編譯喔!
gettext:
如果要編譯翻譯檔的話。覺得沒必要的話記得指定 --disable-nls

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 及其它編譯選項

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

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

如果您的系統中同時有 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 裡這完全不是難事,只要先安裝好 fakerootdebhelper,以及上文所寫的必需/選用套件,然後執行以下指令即可生成 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.0gtk-query-immodules-2.0 這個指令的路徑。
GTK_QUERY_IMMODULES_3=/usr/lib/x86_64-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0gtk-query-immodules-3.0 這個指令的路徑。

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

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

回報問題:

如果您在測試 HIME 時發現了任何問題,請您不吝向我們回報問題。為了能更快速釐清問題所在,建議您能詳述問題發生的步驟,如果可以,請先參考:如何有效地報告錯誤

而在必要時,建議您在回報問題時,順便回報您的系統設定。在 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 吧!謝謝!

迴響
authimage
驗證碼皆為英文大寫字母
僅輸入前4碼即可。後2碼是假的,欺敵用。
這是為了防制 Spam 而設計的。若造成您的不便還請見諒!
Accessible and Valid XHTML 1.0 Strict and CSS
Powered by LifeType - Design by BalearWeb