导入:写爬虫下载所有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学习中一个单线程爬虫/
    附件下载:
    <a class="attachment" href="/uploads/default/original/1X/cadaf8d4eded28aa6bdec5da7cd691041fa68c83.zip">openWRT-source.zip</a> (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有一个参数,直接能下载所有文件的。


Log in to reply
 

11
Online

946
Users

572
Topics

2.3k
Posts