opkg 工具 (一个 ipkg 变种) 是一个用来从本地软件仓库或互联网软件仓库上下载并安装 OpenWrt 软件包的轻量型软件包管理器。
GNU/Linux 用户可能会对 apt-get,aptitude,pacman,yum 等比较熟悉,也会看出其相似之处。它与 NSLU2 上同样用于嵌入式设备的 Optware 也有相似之处。OPKG 没有仅仅将软件安装到一个单独的路径(如:/opt),而是根文件系统上的一个完整的包管理器。它也包含了增加内核模块与驱动的可能性。OPKG 有时被称为 Entware ,但这主要是针对为嵌入式设备准备的 Entware 仓库。
opkg必须有一个子命令参数:
usage: opkg [options…] sub-command [arguments…]
其中的子命令可以是以下:
sub-command | description |
---|---|
update | 更新可用软件包列表 |
upgrade <pkgs> | 升级软件包 要升级一组软件包,运行 opkg upgrade 软件包名1 软件包名2 即可。 命令 opkg list-upgradable 可以获取一个可升级软件包的列表。 |
install <pkgs | FQDN> | 安装一个或多个软件包 eg: opkg install hiawatha opkg install http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/hiawatha_7.7-2_ar71xx.ipk opkg install /tmp/hiawatha_7.7-2_ar71xx.ipk |
configure <pkgs> | 配置一个或者多个未安装的包 |
remove <pkgs | globp> | 移除一个或多个软件包 |
flag <flag> <pkgs> | 标记一个或多个软件包 每次调用仅允许一个标记。 可用标记有: hold • noprune • user • ok • installed • unpacked |
sub-command | description |
---|---|
list [pkg | globp] | 列出可用软件包 Package name - Version - Description |
list-installed | 列出已安装软件包 |
list-upgradable | 列出可升级的已安装软件包 |
list-changed-conffiles | 列出用户修改过的配置文件 |
files <pkg> | 列出属于软件包 的文件 仅适用于已安装的软件包 |
search <file | globp> | 列出包含 <file> |
info [pkg | globp] | 显示软件包 <pkg> 的所有信息 |
status [pkg | globp] | 显示软件包 <pkg> 的状态 |
download <pkg> | 下载软件包 <pkg> 到当前目录 |
opkg唯一的配置文件是 /etc/opkg.conf ,它看起来是这样:
src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
可以配置opkg 从本地获取软件包:
src/gz local file:///path/to/packagesDirectory
Barrier_breaker 使用多个仓库,每个参考需要个唯一的标识符。逻辑上使用仓库原始的名称。如:
...
src/gz base file:///path/to/packages/directory/packages/base
src/gz luci file:///path/to/packages/directory/packages/luci
src/gz packages file:///path/to/packages/directory/packages/packages
src/gz oldpackages file:///path/to/packages/directory/packages/oldpackages
... etc ...
opkg 有个不为那些 apt 系工具使用者熟悉的有用特性,它可以为任一软件包指定安装目的位置。
默认的 opkg.conf 包含三个目的位置:
dest root /
dest ram /tmp
dest mnt /mnt
目的位置行的格式很简单,关键字 dest 跟着目的位置名称(可以随便起),然后就是文件系统位置。任一如上配置好的目的位置都可以在 opkg 命令行中使用,如:
opkg install somepackage -d destination_name
dest 参数必须为 /etc/opkg.conf 中定义的目的位置名。如:-d ram 会将软件包安装到 /tmp/ 下。
关于OPKG如何本地升级软件,可参考下一篇博文:opkg 更新软件