Opkg 是一个轻量快速的套件管理系统,目前已成为 Opensource 界嵌入式系统标准。常用于 路由、 交换机等 嵌入式设备中,用来管理软件包的安装升级与下载。
opkg 工具 (一个 ipkg 变种) 是一个用来从本地软件仓库或互联网软件仓库上下载并安装 OpenWrt 软件包的轻量型软件包管理器。
GNU/Linux 用户可能会对 apt-get,aptitude,pacman,yum 等比较熟悉,也会看出其相似之处。它与 NSLU2 上同样用于嵌入式设备的 Optware 也有相似之处。OPKG 没有仅仅将软件安装到一个单独的路径(如:/opt),而是根文件系统上的一个完整的包管理器。它也包含了增加内核模块与驱动的可能性。OPKG 有时被称为 Entware ,但这主要是针对为嵌入式设备准备的 Entware 仓库。
opkg 试图在软件包仓库内来解决依赖关系。如果失败了,它将会报告一个错误并停止安装该软件包。
如果丢失第三方包的依赖关系,源码包依然可用的话,为了忽略依赖关系的错误可以使用 –force-depends 选项。
软件包管理
update | 更新可用软件包列表 此命令直接为你安装的 OpenWrt 获取一个类似样例的文件,保存到内存分区的 /tmp/opkg-lists/snapshots 中。现在大约占用 1.3MB 空间。OPKG 需要它的内容才能安装、升级软件包或打印软件包信息。此文件内容须体现软件仓库中当前的可用软件包。为释放内存空间,你可以安全地删除这个文件,但不要忘记在安装软件前重新获取一个。 |
upgrade <pkgs> | 升级软件包 要升级一组软件包,运行 opkg upgrade软件包名1 软件包名2 即可。命令 opkg list-upgradable 可以获取一个可升级软件包的列表。通常我们不推荐普通用户去升级软件包,因为一个典型的 OpenWrt 系统是存储在只读的 SquashFS 文件系统中。同时当升级工作做完后,使用了远超出在 SquashFS 文件系统或 JFFS2 文件系统默认安装基本软件包的容量。 因此,推荐用刷一个更新的 OpenWrt 固件来代替升级软件包。当然,升级已安装的软件包没有这种问题。Keep in mind though that for OpenWrt releases upgrading is for the most part not possible, since there is nothing to upgrade without changing the package repository. This is because the package repositories for OpenWrt’s releases are generally not updated. However, the package repository in the trunk snapshots are updated by the build bots to new versions very often, as this is where the packages are updated, like the OpenWrt builds themselves. Note however that for kernel packages updating can be a risky business as it may brick the device if the trunk build kernel is incompatible with the new upgraded kernel package. You should therefore only upgrade non-kernel packages. |
install <pkgs|FQDN> | 安装一个或多个软件包 例如:opkg install hiawathaopkg install http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/hiawatha_7.7-2_ar71xx.ipkopkg install /tmp/hiawatha_7.7-2_ar71xx.ipk |
configure <pkgs> | 配置一个或多个未安装的包 |
remove <pkgs|globp> | 移除一个或多个软件包 |
flag <flag> <pkgs> | 标记一个或多个软件包 每次调用仅允许一个标记。可用标记有: hold • noprune • user • ok • installed • unpacked |
阅读有关 正则表达式http://en.wikipedia.org/wiki/Regular_expression
信息命令
list [pkg|globp] | 列出可用软件包 Package name – Version – Description描述信息 (Description) 可能包含换行,so using merely grep is inapt since grep is line-based. |
list-installed | 列出已安装软件包 |
list-upgradable | 列出可升级的已安装软件包 |
list-changed-conffiles | 列出用户修改过的配置文件 |
files <pkg> | 列出属于软件包 <pkg> 的文件仅适用于已安装的软件包。例如:opkg files asterisk18 Package asterisk18 (1.8.4.4-1) is installed on root and has the following files: /usr/lib/asterisk/modules/res_rtp_multicast.so /usr/lib/asterisk/modules/codec_ulaw.so /etc/asterisk/features.conf /usr/lib/asterisk/modules/format_wav_gsm.so /usr/lib/asterisk/modules/app_macro.so /usr/lib/asterisk/modules/chan_sip.so /usr/lib/asterisk/modules/app_dial.so /usr/lib/asterisk/modules/app_playback.so /usr/lib/asterisk/modules/format_gsm.so /usr/lib/asterisk/modules/func_callerid.so /usr/lib/asterisk/modules/func_timeout.so /etc/asterisk/asterisk.conf /etc/asterisk/modules.conf /usr/lib/asterisk/modules/format_wav.so /etc/asterisk/extensions.conf /etc/init.d/asterisk /etc/asterisk/manager.conf /usr/lib/asterisk/modules/res_rtp_asterisk.so /etc/asterisk/logger.conf /etc/asterisk/rtp.conf /usr/lib/asterisk/modules/codec_gsm.so /etc/asterisk/indications.conf /usr/lib/asterisk/modules/func_strings.so /usr/lib/asterisk/modules/app_echo.so /usr/lib/asterisk/modules/format_pcm.so /etc/asterisk/sip_notify.conf /etc/asterisk/sip.conf /etc/default/asterisk /usr/sbin/asterisk /usr/lib/asterisk/modules/pbx_config.so /usr/lib/asterisk/modules/func_logic.so |
search <file|globp> | 列出包含 <file> |
info [pkg|globp] | 显示软件包 <pkg> 的所有信息Package: horst Version: 2.0-rc1-2 Depends: libncurses Provides: Status: install user installed Section: net Architecture: ar71xx Maintainer: Bruno Randolf <br1@einfach.org> MD5Sum: 378cea9894ec971c419876e822666a6a Size: 19224 Filename: horst_2.0-rc1-2_ar71xx.ipk Source: feeds/packages/net/horst Description: [horst] is a scanning and analysis tool for 802.11 wireless networks and especially IBSS (ad-hoc) mode and mesh networks (OLSR).注1: size 是 gzip 压缩后的 tar 包尺寸。安装阶段,软件包会被展开解压缩,JFFS2 会再次将之压缩。注2: 因 JFFS2 压缩是『透明』的,像 ls 之类的命令仍会返回未压缩的文件尺寸。 |
status [pkg|globp] | 显示软件包 <pkg> 的状态 |
download <pkg> | 下载软件包 <pkg> 到当前目录 |
compare-versions <v1> <op> <v2> | 使用关系符 <=,<,>,>=,=,<< 或 >> 来比较两个版本 v1 和 v2 。 |
print-architecture | 列出可安装软件包的结构 |
whatdepends [-A] [pkgname|pat]+ | 仅适用于已安装的软件包。所以如果你想知道一个软件包及其所有依赖占用的空间,你只能将这个选项的输出分拆后传给 info 选项来计算。 |
whatdependsrec [-A] [pkgname|pat]+ | 仅适用于已安装的软件包。所以所以如果你想知道一个软件包及其所有依赖占用的空间,你只能将这个选项的输出分拆后传给 info 选项来计算。 |
whatprovides [-A] [pkgname|pat]+ | |
whatconflicts [-A] [pkgname|pat]+ | |
whatreplaces [-A] [pkgname|pat]+ |
选项
| 短选项 | 长选项 | 描述 |
|---|---|---|
-A | 查询全部软件包(不仅是已安装的) | |
-V[<level>] | --verbosity[=<level>] | 设置『唠叨』级别为 <level> 。可用的级别有: 0 仅错误 1 普通消息(缺省情况) 2 有用的消息 3 调试 4 调试等级2 |
-f <conf_file> | --conf <conf_file> | 设置 opkg 配置文件为 <conf_file> 。缺省为 /etc/opkg.conf |
--cache <directory> | 指定包缓存 | |
-d <dest_name> | --dest <dest_name> | 设置软件包安装、删除、升级的根目录为 <dest_name> 。<dest_name> 应为已在配置文件中定义的目的名称(but can also be a directory name in a pinch)。 |
-o <dir> | --offline-root <dir> | 指定离线安装软件包的根目录。 |
--add-arch <arch>:<prio> | 注册架构及其优先级 | |
--add-dest <name>:<path> | 注册目的名及其路径 | |
| 强制性选项 | ||
--force-depends | 在安装、删除软件包时无视失败的依赖 | |
--force-maintainer | 覆盖已经存在的配置文件 | |
--force-reinstall | 重安装软件包 | |
--force-overwrite | 覆盖其它软件包的文件 | |
--force-downgrade | 允许 opkg 降级软件包 | |
--force-space | 禁用可用空间检查 | |
--force-checksum | 忽略校验和失配 | |
--force-postinstall | 离线模式下仍运行安装后脚本 | |
--noaction | 无操作 – 仅测试 | |
--download-only | 无操作 – 仅下载 | |
--nodeps | 不跟踪依赖 | |
--force-removal-of-dependent-packages | 移除软件包的同时,移除其所有依赖软件包 | |
--autoremove | 移除自动安装以满足依赖的软件包 | |
-t | --tmp-dir | 指定临时目录 |
发表回复
要发表评论,您必须先登录。