官方的源在国外,一般访问速度比较慢,本地源可以快速解决这个问题。有时自己编译的软件升级发布版本使用本地源,能够更好的维护与安装。

为了保证兼容性,尽量使用同一个源提供的SDK打包的源软件。

  1. 把编译出来的ipk文件上传到本地服务器。
  2. 在索引中添加新增的软件包信息,在软件包生成的目录中,除了我们选中的软件包还有三个文件生成——Packages,Packages.gz,Packages.manifest,这几个文件提供了软件包的索引(在SDK下使用make package/xxxx/compile生成软件包后不会生成索引,要直接使用make)。
  3. 添加对应的package.sig签名文件后。
  4. openwrt就可以从本地服务器拉取最新的OPKG。
    下面讲解详细流程:

一、ubuntu 安装Nginx,并启动服务 apt-get 安装Nginx

切换至root用户

sudo su root
apt-get install nginx

查看Nginx是否安装成功

nginx -v

启动nginx

service nginx start

启动成功后,在网页输入对应的域名或IP地址,就可以看到欢迎页面,表明nginx安装成功

openwrt更新python openwrt更新插件_签名文件


这里只简单讲解nginx 安装流程,具体细节请百度。

二、配置nginx访问路径,查看目录文件

nginx 文件目录

openwrt更新python openwrt更新插件_签名文件_02

进入sites-available目录,修改default文件

cd sites-available/
ls
vi default

openwrt更新python openwrt更新插件_openwrt更新python_03


添加以下代码。

location /download/base { # 对需要展示为文件列表的网站磁盘目录,进行网站虚拟路径配置。虚拟路径为'/download'
 # 需要被设置为文件列表的网站磁盘目录路径。当设置网站虚拟路径时,要使用alias。因为root用于网站主目录,并且虚拟路径映射中,root只能有一个。而alias可以有多个。
            alias /home/openwrt/text/008/base;
            autoindex on;  # 开启目录文件列表
            autoindex_exact_size on;  # 显示出文件的确切大小,单位是bytes
            autoindex_localtime on;  # 显示的文件时间为文件的服务器时间
            charset utf-8,gbk;  # 避免中文乱码
   	 }

并重启nginx服务

nginx -s reload

就可以通过http://IP地址/download/base/访问文件目录,默认80端口

openwrt更新python openwrt更新插件_openwrt更新python_04

三、nginx本地源文件获取 openwrt ipk

openwrt对应固件安装下载完成,生成的bin文件目录内挑选一个需要的源文件,我使用

lede/bin/packages/mips_24kc/base

openwrt更新python openwrt更新插件_服务器_05


将其复制一份并创建一个新的文件夹009

openwrt更新python openwrt更新插件_nginx_06


再次修改二的步骤,访问nginx,查看对应文件目录(如图)

openwrt更新python openwrt更新插件_签名文件_07

四、更改openwrt luci 软件包对应的配置升级

系统 -> 软件包 -> 配置OPKG

openwrt更新python openwrt更新插件_linux_08


/etc/opkg.conf是主要配置文件不动

/etc/opkg/customfeeds.conf 一般用于添加自己的源,这里我们暂时不动

/etc/opkg/distfeeds.conf 一般放置官方的原文,如下,我们将内容删除,改成自己的源

src/gz openwrt_core https://downloads.openwrt.org/releases/22.03-SNAPSHOT/targets/ath79/nand/packages
src/gz openwrt_base https://downloads.openwrt.org/releases/22.03-SNAPSHOT/packages/mips_24kc/base
src/gz openwrt_luci https://downloads.openwrt.org/releases/22.03-SNAPSHOT/packages/mips_24kc/luci
src/gz openwrt_base http://124.220.204.248/download/base/

点击保存,并更新列表

五、(非常重要)如何解决签名不过的问题–如果更新列表无响应或报错可以试试

openwrt官方论坛上有了签名的生成方法,使用了签名工具—usign。
这个工具可以在固件的SDK目录/staging_dir/host/bin中找到,然后就可以根据官方论坛的方法生成签名,更新Package.sig 签名文件。

  1. 生成一对公钥和私钥,公钥用于路由对签名文件进行校验,私钥用于我们生成签名文件
staging_dir/host/bin$ ./usign -G -s mime.key -p mime.pub
  1. 利 用 生 成 的 私 钥 对 服 务 器 上 的 Packages 文 件 生 成 签 名 文 件 ,Packages 文件不在当前目录的话要加上路径
staging_dir/host/bin$ ./usign -S -m Packages -s mime.key -x Packages.sig
  1. 把签名文件上传到服务器上,把公钥上传到路由,在路由上新增我们生成的公钥
root@VM-12-2-ubuntu:~# cd /tmp 
root@VM-12-2-ubuntu:/tmp# opkg-key add mime.pub

六、更新软件索引

点击更新列表 或执行

opkg update

完成新编译安装软件。本地源文件已更新到openwrt。

openwrt更新python openwrt更新插件_服务器_09

这个是IPK对应的本地源更新。对应的固件更新,在备份与升级中,使用原有的就可以,注意!这里刷写固件使用的是sysupgrade.bin升级文件,按复位键刷写固件使用的是factory.img镜像文件,kernel.bin是临时文件,数据重启就销毁。此次跌过大跟头,希望后面刷写openwrt的小伙伴能留心。

参考文档:
Ubuntu 安装 nginx
…%2522%257D&request_id=165234747116781683985869&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-83578836-null-null.142v9control,157v4control&utm_term=Ubuntu+nginx&spm=1018.2226.3001.4187

官方论坛对于签名问题
https://forum.archive.openwrt.org/viewtopic.php?id=57733

本地openwrt/LEDE软件源添加软件包,更新Package.sig签名文件
很全,说的非常仔细

OpenWrt搭建私有软件源服务器实现快速安装软件
这个可以尝试玩玩,很有启发思维
http://t.zoukankan.com/zlAurora-p-13509630.html