导入:写爬虫下载所有openWRT的软件包,解决更新安装慢的问题 (damoyelang1992)

刚开始入门python,准备在openWRT上面跑,刚入手一个widora的openWRT板子,测试起来opkg update更新要花费想象不到的长时间,opkg install 更是经常出错,看着板子用不起来非常无奈,刚好开始入门python,就自己动手写了一个爬虫,想要把openWRT上面的软件包都下载到本地那样的话更新安装软件就方便多了。目标既然定下来了,就不怕山高路远,说干就干,代码在附件中爬下来的源适用于MT7688,想要爬其他版本请修改对应链接。
曾经遇到的问题:
requests.exceptions.ConnectionError: HTTPConnectionPool(host=‘downloads.openwrt.org’, port=80): Max retries exceeded with url: /chaos_calmer/15.05.1/ramips/mt7688/packages/base/odhcp6c_2015-07-13-024525798c5f6aba3af9b2ef7b3af2f3c14f1db8_ramips_24kec.ipk (Caused by NewConnectionError(’: Failed to establish a new connection: [Errno 10060] ',))
原因分析:openWRT官方网站网络连接太差,老是断线才导致此问题。所以在加载网页的时候使用try捕捉异常,防止程序崩溃。
然后把所有软件包都拷贝在SD卡上面,插入widora,挂载(openWRT新人,不会开机自动挂载,可能要用挂载U盘或TF卡为overlay,为Widora扩容.txt这种方法, 哪位大神指导一下)。
挂载到www目录
mkdir /www/source
mount /dev/mmcblk0p1 /www/source
修改/etc/opkg/distfeeds.conf为如下内容,原来的不要了,别忘记备份哦:

src/gz chaos_calmer_base http://127.0.0.1/source/openWRT-RT7688-ipk/base
src/gz chaos_calmer_luci http://127.0.0.1/source/openWRT-RT7688-ipk/luci
src/gz chaos_calmer_management http://127.0.0.1/source/openWRT-RT7688-ipk/management
src/gz chaos_calmer_packages http://127.0.0.1/source/openWRT-RT7688-ipk/packages
src/gz chaos_calmer_routing http://127.0.0.1/source/openWRT-RT7688-ipk/routing
src/gz chaos_calmer_telephony http://127.0.0.1/source/openWRT-RT7688-ipk/telephony

然后就可以opkg update
但是opkg install packagename 会出现sha256sum mismatch问题,在opkg install 软件包名称 之后添加 --force-checksum即可,例如 opkg install mosquitto-client --force-checksum
结果如下:
root@Widora:/etc# opkg install mosquitto-client --force-checksum
Installing mosquitto-client (1.4.7-1) to root…
Downloading http://127.0.0.1/source/openWRT-RT7688-ipk/packages/mosquitto-client_1.4.7-1_ramips_24kec.ipk.
Installing libuuid (2.25.2-4) to root…
Downloading http://127.0.0.1/source/openWRT-RT7688-ipk/base/libuuid_2.25.2-4_ramips_24kec.ipk.
Installing libcares (1.10.0-1) to root…
Downloading http://127.0.0.1/source/openWRT-RT7688-ipk/packages/libcares_1.10.0-1_ramips_24kec.ipk.
Installing libmosquitto (1.4.7-1) to root…
Downloading http://127.0.0.1/source/openWRT-RT7688-ipk/packages/libmosquitto_1.4.7-1_ramips_24kec.ipk.
Configuring libcares.
Configuring libmosquitto.
Configuring libuuid.
Configuring mosquitto-client.
一下就看出来安装成功啦,运行一下就知道:
mosquitto_sub
会出现Error: Both topic and message must be supplied.
因为我们订阅信息一个也没有填写,哈哈。自此 软件源本地化完成。
遗留两个问题请读者回复:
1、sd卡的开机自动挂载,问题:我发现SD卡插在卡槽里,但是重启之后并不会自动识别,还有我的fstab文件都是空的
2、如果能够不添加–force-checksum跳过sha256验证是最好的。
本文由本人首发自个人博客,转载链接:http://qinfei.lexinsmart.com/2016/08/python学习中一个单线程爬虫/
附件下载:
openWRT-source.zip (1.4 KB)
软件源打包下载:https://pan.baidu.com/s/1pLITqPX

linweifu:
想要爬其他版本请修改对应链接。曾经遇到的问题:requests.exceptions.ConnectionError: HTTPConnectionPool(host=‘downloads.openwrt.org’, port=80): Max retries exceeded with url: /chaos_calmer/15.05.1/ramips/mt7688/packages/base/odhcp6c_2015-07-13-024525798c5f6aba3af9b2ef7b3af2f3c14f1db8_ramips_24kec.ipk (Caused by NewConnectionError(’: Failed to establish a new connection: [Errno 10060] ',))原因分析:openWRT官方网站网络连接太差,老是断线才导致此问题。所以在加载网页的时候使用try
WGET有一个参数,直接能下载所有文件的。