軟件包管理
在OpenWRT下使用的軟件包管理技術叫做OPKG,它是一個輕量級的軟件包技術,已經成為開源嵌入式的事實標准,它類似CentOS下的yum,可以實現對預編譯的二進制軟件下載。
輸入opkg即可看到整個軟件的完整幫助信息。語法格式:opkg [參數...] 子命令 [子參數...],參數有:
update 下載服務器上可用的軟件包列表
upgrade <包名> 升級軟件包
install <包名> 安裝軟件包
configure <包名> 配置某一個軟件包
remove <包名> 卸載軟件包
info [pkg|regexp] 顯示出指定軟件包的信息
系統命令遠比我介紹的要多的多,而且這些命令是我們最常用的。本着深入淺出的態度,大家根據自己的能力,希望學更多的童鞋可以自己詳細查看下opkg的幫助文檔。
這里我們舉例演示下下載usbutils軟件包,該軟件包是現實出當前USB總線上插入了什么設備。
更新opkg的包列表,請注意,每次操作opkg下載之前都要先執行一次這個,確保包列表是同步的:
安裝usbutils包,OPKG會自動給你選擇所依賴的其他包關系:
這樣就安裝完成了,我們執行以下lsusb看USB總線現在有啥。安裝后軟件包會被保存在/overlay的分區中,不會丟失:
root@OpenWrt:/# lsusb
軟件包內核依賴
請注意,這一節希望大家能永遠記住。
在opkg安裝的時候,有時候會有內核模塊安裝,這個時候某些情況下軟件包安裝不上,提示內核版本不匹配,錯誤大概是這樣:
root@OpenWrt:~# opkg install kmod-usb-storage
Installing kmod-usb-storage (3.3.8-1) to root...
Downloading http://182.92.3.46/hoowa/openwrt/120901/ar71xx/packages/kmod-usb-storage_3.3.8-1_ar71xx.ipk.
Collected errors:
* satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-usb-storage:
* kernel (= 3.3.8-1-6acd2a17c333f503dc86081b03fe73c0) * kernel (= 3.3.8-1-6acd2a17c333f503dc86081b03fe73c0) *
* opkg_install_cmd: Cannot install package kmod-usb-storage.
請注意那句kernel (=.... 那句表示內核版本不匹配,產生這個的主要原因是教學固件在網上的內核升級了,唯一的解決辦法就是重新刷固件。
在目前已有的內核模塊教學固件中都已經編譯為模塊了,但是在本教程徹底完成之前,是有可能會重新產生內核的,因此請大家一定記住這個問題。
OPKG配置:
這里是列表出opkg的配置文件,其中第一句的URL地址是表示當前這台機器下載的二進制包所使用的服務地址,因為處理器指令集不一樣,所以地址很豐富的。也就是說,你可以自己給自己的智能路由產品搭建一個軟件包服務器。如果大家想知道有多少軟件可以安裝,就可以用你的瀏覽器直接訪問那個地址,即可列表出全部的可用軟件包。