参考:

  • 官方文档
    《OPKG Package Manager》
    https://oldwiki.archive.openwrt.org/doc/techref/opkg
    ⭐️《OPKG 软件包管理》
    https://openwrt.org/zh/docs/techref/opkg
  • 第三方资料
    《OPKG包管理系统详解!带你管理OpenWrt系统软件》
    https://blog.csdn.net/qq_41453285/article/details/102523263
    《OPKG 介绍》
    https://www.cnblogs.com/lsgxeva/p/13752243.html

文章目录

  • # 目录位置
    • 位置:<font color='red'>/etc/opkg.conf
    • 例子:自定义安装目录
    • 位置:/var/opkg-lists
  • # (基本)命令行操作
    • 例子:安装svn客户端
  • # OPKG包结构(.ipk)

OPKG(Open/OpenWrt Package)是 IPKG 的克隆,可以在独立的目录安装软件,还可以用于安装内核模块和驱动等,在安装时会自动解决安装软件时的包依赖关系,如果遇见错误,就中止安装。

# 目录位置

OPKG命令执行会读取以下3部分的信息:

  • 默认配置:/etc/opkg.conf
  • 软件源:/etc/opkg/distfeeds.conf
  • 已安装软件包信息:/usr/lib/opkg
  • 软件仓库的软件包信息: /var/opkg-lists

位置:/etc/opkg.conf

root@OpenWrt_D2550:~# cat /etc/opkg.conf
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
option check_signature# 配置代理
# 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 xxxxxxsrc/gz openwrt_packages https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/packages

解释:

  • dest <name> <path>
    自定义安装目录(本地目标地址)
    配置好后,可以通过 opkg install <pkg> -d <name> 使用

  • lists_dir
    软件源中软件包信息的存放地址

  • option
    配置某些参数,可供配置的参数可以在 libopkg/opkg_conf.c 里面的 options[] 数组找到

  • src
    软件源
    src/gz
    软件源,gzip格式

例子:自定义安装目录

在路由器中如果空间不足,我们需要将软件安装到另外的磁盘分区上。例如,将软件 安装到USB盘分区中

挂载usb分区

# 挂载 vfat 格式的依赖(如果usb是vfat格式)
opkg install knod-nsl-cp437
opkg install knod-nsl-iso8859-1
opkg install mount-utilsmkdir /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 文件中修改。编辑配置文件/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 usbtouch /usr/bin/fileecho "#!/bin/sh" > /usr/bin/fileecho "/srv/usr/bin/file -m /srv/usr/share/misc/magic \"\$@\"" >>/usr/bin/filechmod +x /usr/bin/file

总结:
把软件安装在自定义目录就是自讨苦吃

位置:/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

这里的文件数目和软件源仓库数目对应

# 默认软件源信息
root@OpenWrt_D2550:/tmp/opkg-lists# 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

# (基本)命令行操作

# (从软件源)更新软件信息
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工具介绍:我们想要安装一个 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包结构(.ipk)

OPKG安装包(ipk文件)其实就是一个“tar.gz”文件。可以用file命令来查看文件格式描述/tar命令来解压缩并查看文件内容,其内容包含两个压缩文件和一个版本文件。

root@OpenWrt_D2550:/mnt/sdb1/firmware# tar -zxvf  libkmod_27-2_x86_64.ipk
./debian-binary
./data.tar.gz
./control.tar.gz

解释:

  • debian-binary
    版本文件,一个纯文本文件,包含字符串“2.0”, 表示格式为 debian2.0 格式。

  • data.tar.gz
    软件包配置/数据
    在安装时复制到安装目录下

    root@OpenWrt_D2550:/mnt/sdb1/firmware# tar -zxvf  data.tar.gz
    ./
    ./usr/
    ./usr/lib/
    ./usr/lib/libkmod.so.2
    ./usr/lib/libkmod.so.2.3.5
    
  • control.tar.gz
    包含一个文件“control”,文件内容包含软件包名称、版本、依赖关系、所属分类、状态、优先级、平台架构和软件描述等。

    root@OpenWrt_D2550:/mnt/sdb1/firmware# tar -zxvf control.tar.gz
    ./
    ./control
    ./postinst
    ./prerm
    
    文 件 含 义
    control 控制文件,包含软件包名称、版本、依赖关系和所属分类等信息
    conffiles 配置文件,内容包含该软件的配置文件列表,一个文件占一行
    preinst 安装文件之前执行脚本
    postinst 安装文件之后执行脚本,例如安装之后设置用户及启动程序等
    prerm 卸载之前执行的脚本,例如卸载之前首先结束运行的程序进程
    postrm 卸载之后执行的脚本

/

【笔记】openwrt - opkg (资料整理)相关推荐

  1. 计算机视觉笔记及资料整理(含图像分割、目标检测)

    前言 1.简单聊聊: 在我脑海中我能通过这些年听到的技术名词来感受到技术的更新及趋势,这种技术发展有时候我觉得连关注的脚步都赶不上.简单回顾看看,从我能听到的技术名词来感受,最开始耳闻比较多「云计算」 ...

  2. 计算机视觉笔记及资料整理(含图像分割、目标检测小方向学习)

    前言 1.简单聊聊: 在我脑海中我能通过这些年听到的技术名词来感受到技术的更新及趋势,这种技术发展有时候我觉得连关注的脚步都赶不上.简单回顾看看,从我能听到的技术名词来感受,最开始耳闻比较多「云计算」 ...

  3. 一图看懂 pytz 模块:现代以及历史版本的世界时区定义数据库,资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明. 链接: https://blog.csdn.net/Ahcao2008 一图看懂 pytz 模块:现代以及历史版本的世界时区定义,将时区数据库引入 ...

  4. 一图看懂 zipp 模块:ZipFile 的一些兼容子类和补充接口,资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明. 链接: https://blog.csdn.net/Ahcao2008 一图看懂 zipp 模块:ZipFile 的一些兼容子类和补充接口,资料整理 ...

  5. 一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, 资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明. 链接: https://blog.csdn.net/Ahcao2008 一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, ...

  6. tkinter.ttk 资料整理+笔记(大全)

    tkinter.ttk 资料整理+笔记(大全) tkinter.ttk 一.系统常量.模块 1 str __name__ tkinter.ttk 2 str __doc__ 3 str __packa ...

  7. 一图看懂 docx 读取、查询、修改 Ms Word docx 文件, 资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明. 链接: https://blog.csdn.net/Ahcao2008 一图看懂 docx 读取.查询.修改 Ms Word docx 文件, 资料 ...

  8. 一图看懂 toml 模块:用于解析和创建TOML(Tom‘s Obvious, Minimal Language)的Python库, 资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明. 链接: https://blog.csdn.net/Ahcao2008 @[TOC](一图看懂 toml 模块:用于解析和创建TOML(Tom's ...

  9. 一图看懂 tomli 模块:一个 TOML解析器、使用 mformat -toc 生成的目录,资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明. 链接: https://blog.csdn.net/Ahcao2008 一图看懂 tomli 模块:一个 TOML解析器.使用 mformat -t ...

  10. epoll相关资料整理

    http://www.cppblog.com/converse/archive/2008/10/13/63928.html epoll相关资料整理 学习epoll有一段时间了,最近终于有一个服务器采用 ...

最新文章

  1. Linux期末复习题库(4)
  2. AWS上创建的notebook实例提示没有导入pytorch模块的解决办法 直接在编辑块中执行如下命令,最后重启kernel问题解决
  3. CIA困局:天下再无007,AI识别下无处遁行的“特工”们
  4. Windows10【Java连接Redis报错】
  5. 3.Java中的关键字和注释
  6. 001 Cisco router prewired
  7. Django从理论到实战(part6)--关于DEBUG
  8. Spring 核心控制器DispatcherServlet(二)
  9. Robotium在输入框输入文字
  10. 原理探究——空间平滑MUSIC算法
  11. vf计算机教程,VF教程,打印版.pdf
  12. c语言ascii字母比较大小,C语言中,大写字母M的ASCII码值比小写字母m的ASCII码值大。...
  13. Ubuntu系统如何进行屏幕截图
  14. 怎么显示文件后缀名?很容易的几个步骤
  15. 也说上海女孩的嗲----
  16. 蓝桥杯--模拟1 AcWing 1241. 外卖店优先级
  17. RHCSA认证培训+考试七天实录(一)
  18. Openfire 用户密码加密
  19. 51单片机(8051系列)最小系统图--内部时钟
  20. 服务器操作系统密码忘记,服务器操作系统密码忘记了

热门文章

  1. springBoot的注解
  2. 读取gca信息(matlab2021)
  3. 灯塔工厂PLC智慧边缘计算机嵌入式linux系统
  4. Mybatis值trim标签
  5. 网站优化的3大核心技巧
  6. 提测模板、准入标准和准出标准
  7. 当你心情低落的时候就来看看
  8. Python游戏服务端开发
  9. 芯准TTE系统测试与验证(6)—— TT+BE+RC流混合传输
  10. 对战五子棋——网页版