先说说为什么要搭建本地软件源,openwrt/LEDE稳定版软件,驱动版本都比较旧,trunk版呢又更新的很快,系统装上几天又想要从官方服务器上使用opkg装软件可能就装不上了,所以最好的解决办法就是在本地搭建一个软件源,把正在使用的系统版本的所有软件保存下来。而且官方的源在国外,访问速度极慢,使用本地的源可以跑满内网带宽。

官方的软件源只有系统的基本软件和不多的功能插件,克隆到本地后,就有了对本地源完全的权限,我们就可以往源添加新编译的软件了。

为了保证软件的兼容性,一般来说添加到源上的软件都应该使用从相应的源提供的SDK打包,直接从系统源码和版本不一致的SDK打包的软件都有可能装不上。

给源添加软件首先肯定是把编译出来的ipk文件上传到服务器,接着就是在索引中添加新增的软件包的信息,在软件包生成的目录中我们可以发现除了我们选中的软件包之外还有三个文件生成——Packages,Packages.gz,Packages.manifest,这几个文件就是提供软件包的索引(在SDK下使用make package/xxxx/compile生成软件包后不会生成索引,要直接使用make),索引类似下面的一段内容

Package: gdut-drcom
Version: 1.6.8-3
Depends: libc
License: GPL-3.0+
Section: net
Architecture: mips_24kc
Installed-Size: 18513
Filename: gdut-drcom_1.6.8-3_mips_24kc.ipk
Size: 19427
SHA256sum: 4e35ea4c3efd54b0e7c02e90706dd61eb5645f1b8e7466b3c87f5247a0cdcc6e
Description:  gdut-drcom for openwrt is a third party drcom client openwrt.

得到索引信息之后就是把这些信息插到软件源服务器的索引中,最好按照软件包的字母顺序插入,尽量不要打乱原有文件结构。

更新了3个索引文件之后,先去路由里面修改源服务器,配置文件是
/etc/opkg/distfeeds.conf ,按照原来的格式把服务器地址改为本地服务器地址

#src/gz reboot_core http://downloads.lede-project.org/snapshots/targets/ar71xx/generic/packages
#src/gz reboot_base http://downloads.lede-project.org/snapshots/packages/mips_24kc/base
#src/gz reboot_luci http://downloads.lede-project.org/snapshots/packages/mips_24kc/luci
#src/gz reboot_packages http://downloads.lede-project.org/snapshots/packages/mips_24kc/packages
#src/gz reboot_routing http://downloads.lede-project.org/snapshots/packages/mips_24kc/routing
#src/gz reboot_telephony http://downloads.lede-project.org/snapshots/packages/mips_24kc/telephony                                                 src/gz reboot_packages http://10.99.100.160:8082/lede/package/mips_24kc/packages
src/gz reboot_base http://10.99.100.160:8082/lede/package/mips_24kc/base
src/gz reboot_luci http://10.99.100.160:8082/lede/package/mips_24kc/luci
src/gz reboot_routing http://10.99.100.160:8082/lede/package/mips_24kc/routing
src/gz reboot_telephony http://10.99.100.160:8082/lede/package/mips_24kc/telephony  

保存之后运行opkg update更新本地索引

root@LEDE:~# opkg update
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_packages
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/packages/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/base/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_base
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/base/Packages.sig
Signature check failed.
Remove wrong Signature file.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/luci/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_luci
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/luci/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/routing/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_routing
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/routing/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/telephony/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_telephony
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/telephony/Packages.sig
Signature check passed.

可以看到路由已经从本地的源服务器更新索引了,但是……我们修改过的那个base中的package签名不通过,上网搜索了一晚上,终于在openwrt官方论坛上找到了签名的生成方法,我在这里再翻译一遍吧
首先,找到生成签名的工具——usign,ubuntu中apt安装不成功,纳闷了许久最终在sdk里面找到了这个工具,这个工具藏在,sdk目录/staging_dir/host/bin中,下面就可以跟着官方论坛上的方法生成签名了
第一步,生成一对公钥和私钥,公钥用于路由对签名文件进行校验,私钥用于我们生成签名文件

hokamyuen@hokamyuen-linux:~/lede-sdk-ar71xx-generic_gcc-5.4.0_musl.Linux-x86_64/staging_dir/host/bin$ ./usign -G -s mime.key -p mime.pub

第二步,利用生成的私钥对服务器上的Packages文件生成签名文件,Packages文件不在当前目录的话要加上路径

hokamyuen@hokamyuen-linux:~/lede-sdk-ar71xx-generic_gcc-5.4.0_musl.Linux-x86_64/staging_dir/host/bin$ ./usign -S -m Packages -s mime.key -x Packages.sig

第三步,把签名文件上传到服务器上,把公钥上传到路由,在路由上新增我们生成的公钥

root@LEDE:~# scp hokamyuen@192.168.1.150:~/lede-sdk-ar71xx-generic_gcc-5.4.0_musl.Linux-x86_64/staging_dir/host/bin/mime.pub /tmp
hokamyuen@192.168.1.150's password:
mime.pub                                                                                                        100%  104     0.1KB/s   00:00
root@LEDE:~# cd /tmp
root@LEDE:/tmp# opkg-key add mime.pub
root@LEDE:/tmp# 

最后,在路由上重新更新软件索引

root@LEDE:/tmp# opkg update
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_packages
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/packages/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/base/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_base
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/base/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/luci/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_luci
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/luci/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/routing/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_routing
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/routing/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/telephony/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_telephony
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/telephony/Packages.sig
Signature check passed.

可以看到,签名通过了,哈哈哈哈!
接下来就可以用opkg直接从服务器上新编译安装软件了

root@LEDE:/tmp# opkg install gdut-drcom
Installing gdut-drcom (1.6.8-3) to root...
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/base/gdut-drcom_1.6.8-3_mips_24kc.ipk
Configuring gdut-drcom.
post install: patching ppp.sh
patched!
post install: patching ppp.sh
patched!
'radio0' is disabled
root@LEDE:/tmp# 

最后再写一个添加索引的注意事项
有些包的索引会比服务器上的多了一些奇怪的东西,例如

Package: libstdcpp
Version: 5.4.0-1
License: GPL-3.0-with-GCC-exception
Section: libs
Status: unknown hold not-installed
Essential: yes
Architecture: mips_24kc
Installed-Size: 375927
Filename: libstdcpp_5.4.0-1_mips_24kc.ipk
Size: 374075
SHA256sum: 689a6a67156f76afcafb4f3d545b02ac7972aa87ddb7b165406d98abe63fc070
Description:  GNU Standard C++ Library v3

只要把多出来的Status和Essential项删掉就好。

参考文章:https://forum.openwrt.org/viewtopic.php?id=57733

给本地openwrt/LEDE软件源添加软件包,更新Package.sig签名文件,解决Signature check failed问题相关推荐

  1. OpenWrt——修改软件源

    基本概念 软件源:一个应用程序安装库,很多很多的应用软件都在这个库里面.他可以是网络服务器,是光盘,甚至是硬盘上的一个目录. 资源下载 http://downloads.openwrt.org.cn/ ...

  2. ubuntu无法apt_Ubuntu19.04更新软件源及系统更新时无法获得锁的处理

    对于Ubuntu系统, 不同的版本的源都不一样,每一个版本都有自己专属的源.由于官方网站下载比较慢,所以在装完 Ubuntu 系统后最好把官方源更换为国内的源. 第一步获取 Ubuntu 代号 Ubu ...

  3. ubuntu20.0.4如何更新软件源?快速更新阿里源步骤具体实现

    快速更新阿里源步骤-具体实现 1.点击左下角的菜单 2.打开软件更新 3.点击左下角第一个设置: 4.进入之后,如图所示,找到Ubuntu software,在选择框中,找到阿里源 5.点击 clos ...

  4. 镜像 网站 linux 程序,腾讯开源镜像网站(腾讯云软件源)地址,附使用说明

    腾讯开源镜像网站(腾讯云软件源/Tencent Open Source Mirror Site)正式上线了,以下为相关介绍及使用说明. 腾讯开源镜像网站介绍 腾讯云软件源由腾讯云提供支持.搭建此开源镜 ...

  5. “软件源”是什么?常用软件源有哪些?

    在计算机中,软件源(Software Source)指的是软件包的发布和分发位置,通常是一组由软件开发者或社区维护的服务器或存储库.软件源包含了软件包的二进制文件.源代码.文档等资源,用户可以通过软件 ...

  6. refind linux内核参数,使用rEFInd实现OpenWRT / LEDE支持UEFI GPT启动

    实际上我使用的Hyper-v第一代虚拟机运行LEDE17真的非常的稳定,网速各方面都非常满意了.最近可能没事找事的把Windows Server2012 R2 Hyper-v第一代虚拟机里面也是运行的 ...

  7. Ubuntu 8.04 Hardy LTS 软件源设置

    1.软件源(Software Sources)是什么? 在Ubuntu中,软件源是指一个由可以获得软件的地址组成的集合,这个地址可以是网站.光盘,或者是硬盘上的一个目录.软件源上有"软件仓库 ...

  8. ubuntu软件源的更新方法

    1.打开/etc/apt/sources.list sudo gedit /etc/apt/sources.list 2.在文件中添加如下软件源 #添加阿里源 deb http://mirrors.a ...

  9. linux 软件源总结

    一.格式意义 每行的第一个单词deb 或deb-src描述了文件类型:目录中包含的是二进制软件包(deb),即我们通常使用的已编译好的软件包:或包含的是源码包(deb-src) http://mirr ...

最新文章

  1. 【redis】2.redis可视化工具安装使用
  2. java http输出,Java HTTP Client输出空JSON
  3. SVG 基本绘图方法总结
  4. elasticsearch 集群no known master node
  5. Codeforces 1254C/1255F Point Ordering (交互题)
  6. thinkphp验证码功能
  7. 关于移动端的一些tip
  8. JQuery放大镜效果
  9. 您可能不知道可以使用Chrome开发者控制台执行的操作
  10. android 动画 图片 内存溢出,Android有效解决加载大图片时内存溢出的问题
  11. 【转】MongoDB介绍及下载与安装
  12. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)
  13. 敏感性分析算法 程序_计算机程序设计艺术(TAOCP)精读笔记1 - 算法分析真正应该有的样子 Part 1...
  14. centOs7 虚拟机设置文件共享
  15. perl语言 入门(转)
  16. 【转载】google搜索从入门到精通
  17. CMOS模拟电路设计经典书籍介绍 ---看完这些模电书,那离大佬就不远了
  18. win7鼠标指针主题包_MouseInc 小巧好用的鼠标手势软件
  19. laravel中guard是什么
  20. 多场景业务实战-AB测试实战(数据分析干货!!!!!)

热门文章

  1. js:ajax post与get的区别,getjson的使用
  2. Codeforces 868C - Qualification Rounds 思维
  3. 学习狂神mybatis
  4. 全员营销实施困难,是因为你没有这个神器
  5. python实现千牛客服自动回复语_千牛自动回复话术
  6. OpenGL 凹凸贴图实例
  7. java中怎么引用圆周率_Java简单计算圆周率完整示例
  8. 一体广告机实现思路,非常实用(一)
  9. 《拆掉思维里的墙》的读后感作文900字
  10. 互联网创业最好的时代