08
19

ipkg-輕量級套件管理系統

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文件內容如下

  1. Package: test 
  2. Priority: optional 
  3. Section: Misc 
  4. Version: 0.9.3.2 
  5. Architecture: intel 
  6. Maintainer: jemicheng@gmail.com 
  7. Source:http://daydreamer.idv.tw
  8. 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就是指明軟體安裝的位置從那裡開始

  1. dest root /
  2. arch intel 10 
  3. 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]

  1. #!/bin/sh 
  2. cp aaa xxx 
  3.  
  4. exit 0

上面的script意思為在安裝前請把aaa拷貝為xxx

[postinst]

  1. #!/bin/sh 
  2. case "$1" in 
  3. update)
  4. ;;
  5. install)
  6. cp bbb yyy 
  7. ;;
  8. configure)
  9. ;;
  10. remove)
  11. ;;
  12. *)
  13. ;;
  14. esac 
  15.  
  16. exit

上面的script意思為在安裝時請把bbb拷貝為yyy

我上述所列的只是很簡單的描述,如果要看更詳細的資料,請至ipkg的官方網站查詢

標籤: embedded
評論: 0 | 引用: 0 | 閱讀: 13342
發表評論
暱 稱: 密 碼:
網 址: E - mail:
驗證碼: 驗證碼圖片 選 項:
頭 像:
內 容: