赞
踩
OPKG(Open/OpenWrt Package)是 IPKG(Installing Packages,为嵌入式系统重新实现了 Debian 工具 dpkg、apt 和 apt-get 的功能) 的克隆,可以在独立的目录安装软件,还可以用于安装内核模块和驱动等,在安装时会自动解决安装软件时的包依赖关系,如果遇见错误,就中止安装。
OPKG 尽可能保持与 ipkg 的向后兼容性,并符合 debian 关于控制文件的策略手册的子集。
# (从软件源)更新软件信息
opkg update
# 安装指定的软件包(<pkg>)
opkg install <app>
# (同时安装依赖)
# (若内核版本不对会报错)
# 查看软件包信息
opkg info [pkg|regexp]
opkg remove
# 列出所有可使用的软件包
opkg list
# 格式:
# 软件包名称 – 版本 – 描述
# 用于列出提供文件名的软件包
opkg search <file|regexp>
# 查询某个文件属于哪个软件包
# 如 opkg search /usr/bin/netcat
# 用于列出软件包名称和<regexp>匹配的软件包
find <regexp>
# 列出系统中已经安装的软件包
opkg list-installed
# 列出用户修改过的配置文件
opkg list-changed-conffiles
# 列出属于这个软件包(<pkg>)中的所有文件
opkg files <pkg>
# 列出这个软件包的依赖
opkg whatdepends [-A] [pkg]
svn工具介绍:我们想要安装一个 svn 工具,可以将路由器中的内容直接提交到代码库中。
$ opkg update
# 搜索
$ opkg list |grep svn
# svn找不到找全称subversion
$ opkg find *subversion*
subversion-client - 1.14.1-1 - Subversion is a free/open-source version control system.
...
subversion-libs - 1.14.1-1 - Subversion is a free/open-source version control system.
...
subversion-server - 1.14.1-1 - Subversion is a free/open-source version control system.
...
# 下载
$ opkg install subversion-client
# 检察安装的文件
$ opkg files subversion-client
OPKG 一般放在 /bin/opkg
/usr/lib/opkg
/etc/opkg
这几个目录下
$ whereis opkg
opkg: /bin/opkg /usr/lib/opkg /etc/opkg
其中 /bin/opkg
是可执行文件
$ cd /bin
/bin$ ll | grep opkg
-rwxr-xr-x 1 root root 155139 Apr 3 2022 opkg*
/etc/opkg
下存放配置文件
/etc$ ll | grep opkg
drwxr-xr-x 1 root root 4096 Apr 8 2022 opkg/
-rw-r--r-- 1 root root 108 Apr 3 2022 opkg.conf
/etc$ tree opkg
opkg
├── customfeeds.conf
├── distfeeds.conf
└── keys
├── xxxxx
└── xxxxx
/usr/lib/opkg
下存放管理的包信息
/usr/lib/opkg# tree
.
├── info
│ ...
│ ├── ddns-scripts-cloudflare.control
│ ├── ddns-scripts-cloudflare.list
│ ├── ddns-scripts-cloudflare.postinst
│ ├── ddns-scripts-cloudflare.prerm
│ ├── ddns-scripts-cloudflare.prerm-pkg
│ ├── ddns-scripts.conffiles
│ ├── ddns-scripts.control
│ ├── ddns-scripts.list
│ ├── ddns-scripts.preinst
│ ├── ddns-scripts.prerm
│ ├── ddns-scripts.prerm-pkg
│ ├── ddns-scripts_aliyun.control
│ ├── ddns-scripts_aliyun.list
│ ├── ddns-scripts_aliyun.preinst
│ ├── ddns-scripts_aliyun.prerm
│ ├── ddns-scripts_aliyun.prerm-pkg
│ ├── ddns-scripts_dnspod.control
│ ├── ddns-scripts_dnspod.list
│ ├── ddns-scripts_dnspod.preinst
│ ├── ddns-scripts_dnspod.prerm
│ ├── ddns-scripts_dnspod.prerm-pkg
│ ├── default-settings.control
│ ├── default-settings.list
│ ├── default-settings.prerm
│ ├── dns2socks.control
│ ├── dns2socks.list
│ ├── dns2socks.prerm
│ ...
│ ├── luci-app-ddns.control
│ ├── luci-app-ddns.list
│ ├── luci-app-ddns.prerm
│ ...
│ ├── luci-i18n-ddns-zh-cn.control
│ ├── luci-i18n-ddns-zh-cn.list
│ ├── luci-i18n-ddns-zh-cn.prerm
│ ...
│ ├── nginx-mod-luci-ssl.control
│ ├── nginx-mod-luci-ssl.list
│ ├── nginx-mod-luci-ssl.prerm
│ ├── nginx-mod-luci.control
│ ├── nginx-mod-luci.list
│ ├── nginx-mod-luci.prerm
│ ├── nginx-ssl-util.conffiles
│ ├── nginx-ssl-util.control
│ ├── nginx-ssl-util.list
│ ├── nginx-ssl-util.prerm
│ ├── nginx-ssl-util.prerm-pkg
│ ├── nginx-ssl.conffiles
│ ├── nginx-ssl.control
│ ├── nginx-ssl.list
│ ├── nginx-ssl.prerm
│ ├── nginx-ssl.prerm-pkg
│ ├── nginx-util.control
│ ├── nginx-util.list
│ ├── nginx-util.prerm
│ ├── nginx.control
│ ├── nginx.list
│ ├── nginx.prerm
│ ...
│ ├── zlib.control
│ ├── zlib.list
│ └── zlib.prerm
├── lists
└── status
3 directories, 1587 files
下面逐一分析上述文件极其作用
存放 opkg 行为/默认行为信息
$ cat /etc/opkg.conf
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
option check_signature
解释:
dest <name> <path>
自定义安装目录(本地目标地址)
配置好后,可以通过 opkg install <pkg> -d <name>
使用
lists_dir
软件源中软件包信息的存放地址
option
配置某些参数,可供配置的参数可以在 libopkg/opkg_conf.c
里面的 options[]
数组找到
比如可以添加下面的配置
# 配置代理
# option http_proxy http://username:password@proxy.example.org:3128/
option http_proxy http://proxy.example.org:3128/
option proxy_username xxxxxx
option proxy_password xxxxxx
src/gz openwrt_packages https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/packages
src
src/gz
在路由器中如果空间不足,我们需要将软件安装到另外的磁盘分区上。例如,将软件 安装到USB盘分区中
新增自定义安装目录,并使用
挂载usb分区
# 挂载 vfat 格式的依赖(如果usb是vfat格式)
opkg install knod-nsl-cp437
opkg install knod-nsl-iso8859-1
opkg install mount-utils
mkdir /srv -p
mount /dev/sdb1 /srv
然后我们编辑/etc/opkg.conf 文件,在文件最后增加一行,内容为“dest usb /srv”。
echo "dest usb /srv">> /etc/opkg.conf
安装软件时候指定为自定义 dest
opkg update
opkg install nmap -d usb
添加自定义目录到环境变量
在 nmap 安装完成后,如果执行 nmap,并不会找到该命令,还需要设置环境变量 PATH。
修改 /etc/profile
时重启后 PATH 改变依然生效。
export PATH=/srv/bin:/srv/sbin:/srv/usr/bin:/srv/usr/sbin:PATH
添加自定义目录文件到启动路径
在安装 openvpn 时,如果你的安装包在/etc/init.d 目录下有一个启动脚本,但你安装到 外接磁盘目录中,你就需要创建一个启动软链接,例如:
ln -s /srv/etc/init.d/openvpn /etc/init.d/openvpn
如果软件因为链接库的问题不能启动,就需要在启动脚本里面增加动态链接库目录。 另外你需要解决特定程序的配置文件默认路径问题,需要通过命令行来指定配置文件的路 径,也可以增加一个包装脚本。下面就是增加了一个 file 包装脚本。安装 file 并使用 -m 来指定配置文件路径,并在最后通过 chmod +x 增加执行权限,这样就可以像以前一样 执行 file 命令了。
opkg install file –d usb
touch /usr/bin/file
echo "#!/bin/sh" > /usr/bin/file
echo "/srv/usr/bin/file -m /srv/usr/share/misc/magic \"\$@\"" >>/usr/bin/file
chmod +x /usr/bin/file
总结:
把软件安装在自定义目录就是自讨苦吃
顾名思义了。
这里的文件数目和软件源仓库数目对应
$ cat /etc/opkg/distfeeds.conf
src/gz openwrt_core https://mirrors.cloud.tencent.com/lede/snapshots/targets/x86/64/packages
src/gz openwrt_base https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/base
# src/gz openwrt_kenzo https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/kenzo
src/gz openwrt_luci https://mirrors.cloud.tencent.com/lede/releases/18.06.9/packages/x86_64/luci
src/gz openwrt_packages https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/packages
src/gz openwrt_routing https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/routing
# src/gz openwrt_small https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/small
src/gz openwrt_telephony https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/telephony
对应 openwrt gui 中的这个界面 ⬇️
通过 opkg update
可以从软件源中下载可安装的软件包信息。
这些信息的存放目录在 /var/opkg-lists
root@OpenWrt_D2550:~# cd /var/opkg-lists
root@OpenWrt_D2550:/tmp/opkg-lists# ll
drwxr-xr-x 2 root root 200 Apr 19 15:34 ./
drwxrwxrwt 22 root root 860 Apr 21 14:32 ../
-rw-r--r-- 1 root root 62845 Apr 19 08:02 openwrt_base
-rw-r--r-- 1 root root 142 Apr 19 08:06 openwrt_base.sig
-rw-r--r-- 1 root root 94240 Apr 18 20:36 openwrt_core
-rw-r--r-- 1 root root 142 Apr 18 20:44 openwrt_core.sig
-rw-r--r-- 1 root root 12319 Apr 19 08:06 openwrt_routing
-rw-r--r-- 1 root root 142 Apr 19 08:06 openwrt_routing.sig
-rw-r--r-- 1 root root 74689 Apr 19 08:06 openwrt_telephony
-rw-r--r-- 1 root root 142 Apr 19 08:06 openwrt_telephony.sig
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/858269
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。