2013年11月16日 星期六

淺談 debian packaging - 5

延續先前對於control檔的介紹,該正式地找一個control檔來動動手腳了。

目前 Debian 的發行版是 Wheezy(Debian 7),在 Wheezy 裡的 upower 版本是0.9.17,這版並不支援羅技的部份無線鍵鼠電量查詢。upower 自0.9.23版才開始對羅技有較完整的支援(感謝Julien Danjou,所以我們就來把 Wheezy 的 upower 更新到0.9.23吧。

Debian 套件列表 中可以查到,在 jessie 裡的 upower 是0.9.23版的,剛好符合需求。所以先確認你的sources.list 裡有 jessie 的 deb-src 項目,並準備一個暫存的目錄方便後續的處理,就假設是 /tmp/upower 好了。然後打開終端機,切換到暫存的目錄、下載原始碼:

cd /tmp/upower apt-get source upower=0.9.23-2

完成後,用文字編輯器打開 upower-0.9.23-2/debian/control,可以發現它以空行分隔成好幾段。第一段是 source package 的部份,寫的是這個套件的名稱、分類、重要性、負責維護及打包的人、編譯所需的額外套件、版本,以及其他相關訊息。其下的各段是做為範本使用,指出了 upower 經過編譯之後應該包成 upower, libupower-glib1, libupower-glib-dev, gir1.2-upowerglib-1.0 這四個 binary package。

在第15行的地方,可以看到編譯時會用到 libglib2.0-dev 套件,版本要2.36版以上。而 wheezy 裡的 libglib2.0-dev 版本是 2.33。為了解決這個問題,有兩個方式:一是先想辦法把2.36版裝起來,二是上網查資料,看看以2.33版來編譯 upower 0.9.23 有沒有什麼災情或不能編譯的情形。因為使用 glib 的程式非常多,這是牽一髮動全身的重要套件,所以第一種方法就不予考慮了;很幸運地,upower 0.9.23 與 glib 0.33 沒有什麼仇恨,所以還是採用第二種方法。把 control檔的第15行的 2.36 改成 2.33 以符合我們的需要,然後存檔關閉。

接下來的步驟就是普通的 dpkg-buildpackage 與安裝了,dpkg-buildpackage 之後會有介紹,在此僅列出指令。

sudo apt-get build-dep upower=0.9.17-2 cd /tmp/upower/upower-0.9.23 dpkg-buildpackage -uc -us -b

在使用 apt-get 自動安裝編譯所需的額外套件時,我強制指定了需要的版本,為的是確保編譯出來的 upower 只有使用 wheezy 裡的套件。

下回要介紹的,我還沒想到...所以只好

作者外出取材,下期休刊