本文链接:OpenWrt开发之自建opkg源
当我们编译好一些包的时候,肯定是想让它能方便地使用。比如更新了路由器,又没有把自己的包内置到镜像里面去,一般就得用opkg来安装。手动安装就需要把包保存在本地,用的时候上传,验证,完成。像OpenWrt官方源里面的包都不需要上传这一步,就在列表里面选,或者直接用命令,给个包名就能安装了。和官方源一样,我们也可以自建一个opkg源,让安装变简单。
准备工作
在《如何在OpenWrt上开发》一篇中,我建了一个本地Feed(源)。那么这里就接着这篇继续。
为了能让源里面的包有签名,还需要生成一个密钥对。在openwrt
目录在执行以下内容来生成密钥对。其中key-build
是私钥,key-build.pub
是公钥,“my key”
是注释,可以随便写。
1 |
./staging_dir/host/bin/usign -G -s ./key-build -p ./key-build.pub -c "my key" |
编译包
在openwrt
目录下执行以下命令来编译包,如果有多个包也逐个编译。
1 |
make package/mypackage/compile |
生成包索引
在openwrt
目录下执行以下命令来生成包索引。
1 |
make package/index |
如果没出错,就能在openwrt/bin/packages/<平台>/myfeed/
目录下找到.ipk
后缀的文件,同时还会有以Package
开头的文件,这些就是opkg源需要的所有内容了。
部署opkg源
把上面的目录放到一个能展示文件目录的HTTP服务器上就行了。假设这里把它们放在了http://feed.example.com/myfeed/
下面。具体的方式在此不详述,可以参考nginx的文档。
使用opkg源
修改路由器的配置文件/etc/opkg/customfeeds.conf
,加上这么一行,也可以在界面上改:
1 |
src/gz myfeed http://feed.example.com/myfeed/ |
只是这样还是不够的,因为给包签名用的密钥不是OpenWrt官方的,需要把自己的key也加到路由器上。
在开发目录openwrt
下运行:
1 |
./staging_dir/host/bin/usign -F -p ./key-build.pub |
会得到一串16个字符,64位的哈希值,比如我这里得到了ec5dd13aa2d483a3。
然后把公钥复制到路由器上,文件名改为这串哈希值:
1 |
scp ./key-build.pub root@192.168.0.1:/etc/opkg/keys/ec5dd13aa2d483a3 |
然后就可以运行opkg
命令来安装自己的包了:
1 2 |
opkg update opkg install mypackage |
总结
容易出问题的就是密钥这部分,其他的都还是很直接的。
您好,opkg自建源 根据opwenwrt开发自建feed之后再按照以上步骤去搭建,最后发现opkg未能下载新的包,opkg update 没有出现报错,但是信息非常的少,请问您知道大概会存在什么问题麻
从Feed中导入包,很快就导入完了
make menuconfig Utilities分类下也只有mypackage
是不是因为这个原因