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的官方網站查詢

最後修改日期: 3 6 月, 2022

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。