ipkg是在嵌入式裝置上最常見到的套件管理系統,如iPAQ,或Linksys的WRT54G都可以看到它的身影,其實這幾年來,隨筆者玩的板子越來越多,也發現很多家公司連實驗板都使用ipkg套件管理系統,這樣的目的其一是為了簡化安裝軟體的手序,其二是為了讓實驗板安裝不同的ipk而達到不同的功能,如果一塊板子裝完server.ipk,它就搖身一變為擁有各種不同網路伺服器功能的裝置,如果改裝phone.ipk,它可能又被用來當作電話交換機使用
廢話不多說,我們先來做個實驗,首先到ipkg的官方網站下載最新的ipkg source tar ball,並編譯它,編譯的步驟很簡單,輸入configure,make,make install即可,編譯和安裝完後可得到一可執行的shell script名稱為ipkg-cl,如果執行ipkg-cl發現有缺library,那請把.lib資料夾下的libipkg.so,libipkg.so.0,libipkg.so.0.0.0都一起複製到/usr/lib資料夾下
接下來我們要製造一個測試的ipk package,而這個package幹得事很簡單,就是在home資料夾上創造一個test.txt文件,詳細的製作過程我列如下
1. 創造一個新資料夾名稱為test,並在test下面創造兩個目錄分別為CONTROL和home
2. 在home資料夾下擺test.txt
3. 在CONTROL資料夾下創造一個control文件內容如下
Package: test
Priority: optional
Section: Misc
Version: 0.9.3.2
Architecture: intel
Maintainer: jemicheng@gmail.com
Source:http://daydreamer.idv.tw
Description: ipkg test package
control文件裡面比較重要的是architecture欄位,等一下我們會用到它
4. 下載ipkg-build.sh,我用這個shell script製造ipk package
5. 執行命令./ipkg-build.sh [source directory] [destination directory],範例為./ipkg-build.sh test package,執行完後你會發現有一個ipk package擺在package目錄下
package製做好後,我們來安裝看看吧,在安裝前必需設定ipkg的config檔,此檔案位置在/etc資料夾內,名稱為ipkg.conf,我的config檔內容如下,請注意arch這個欄位,一定要跟我們package內的control文件的Architecture一樣,而dest root就是指明軟體安裝的位置從那裡開始
dest root /
arch intel 10
arch all 1
安裝的命令為ipkg-cl –f /etc/ipkg.conf install [your package name],安裝完後,可看到/home資料夾下多出了test.txt這個純文字檔,用ipkg-cl list_intalled,可以看到目前系統安裝的套件,用ipkg-cl remove [package name]可以移除安裝的軟體,下面的圖就是整個安裝和移除的過程
不過ipkg有趣的地方是在於設定安裝軟體前後的script,這方面的文章可參考wiki上的說明,舉個範例來說,在CONTROL資料夾下擺preinst和postinst這兩個script,其各自內容如下
[preinst]
#!/bin/sh
cp aaa xxx
exit 0
上面的script意思為在安裝前請把aaa拷貝為xxx
[postinst]
#!/bin/sh
case "$1" in
update)
;;
install)
cp bbb yyy
;;
configure)
;;
remove)
;;
*)
;;
esac
exit
上面的script意思為在安裝時請把bbb拷貝為yyy
我上述所列的只是很簡單的描述,如果要看更詳細的資料,請至ipkg的官方網站查詢
留言