openwrt安装软件的时候出现依赖的问题,帮忙看下
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openwrt安装软件的时候出现依赖的问题,帮忙看下相关的知识,希望对你有一定的参考价值。
Collected errors:
* satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-usb-ohci:
* kernel (= 3.10.49-1-194d0e9ee3ca8df976c737e78e8b2194) *
* opkg_install_cmd: Cannot install package kmod-usb-ohci.
opkg install PackageName.ipk --force-depends
试试吧,我也是百度找的,我反正用的东西一般会直接编译进去,没见过此类错误。追问 参考技术A 当然是会出去的
如何从openwrt移植软件包到entware
参考技术A 因为要把fastd移到entware,找了一下发现entware并没有提供完整的文档说明,在这里整理一下我的心得。各种错误疏漏在所难免,欢迎指正。背景:
Broadcom方案的路由一般将系统设置保存在NVRAM,文件系统的根卷采用只读的SquashFS,意味着你虽然看得到/etc/下的各种配置,但其实无法修改,除非重新编译安装固件。由此派生出来的dd-wrt和Tomato也是照办。
对于额外可用的Flash,dd-wrt和Tomato都支持格式化为JFFS2卷(JFFS2以下也统一简称JFFS),并一般挂载到/jffs路径。
而主要支持Atheros方案路由的openwrt则一般采用SquashFS + JFFS overlay的方案,即根卷仍然是只读的SquashFS卷,但在其上覆盖可读写的JFFS卷,看起来就好像你可以自由修改文件系统一样,但其实只是JFFS卷的内容覆盖在SquashFS上。这样既方便,又保留了只读SquashFS的灾难恢复功能。
作为对比,下面是r6300v2运行Tomato的mount表:
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
devfs on /dev type tmpfs (rw,noatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
usbfs on /proc/bus/usb type usbfs (rw,relatime)
/dev/mtdblock6 on /jffs type jffs2 (rw,noatime)
在r6300v2上登录到ssh以后,我的home目录是跑在tmpfs上的/tmp/home/root,相当于是ramdisk里面。真正可以写入内容并且重启后不丢失的位置只有 /jffs。在r6300v2 + Tomato上面,/jffs是利用系统64MB空闲的flash。
下面是WNDR3700v4运行openwrt的mount表:
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
/dev/ubi0_1 on /overlay type ubifs (rw,noatime)
overlayfs:/overlay on / type overlayfs (rw,noatime,lowerdir=/,upperdir=/overlay)
tmpfs on /dev type tmpfs (rw,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
WNDR3700v4有128M NAND flash,大概90多MB空闲。从上面可以看出和Tomato的区别在于这些空间(/dev/ubi0_1)被作为overlayfs,透明覆盖于 / 之上。我在WNDR3700v4的/etc/下所作的修改都保存到了overlay中,遮蔽了原有存在于SquashFS中的文件。另外WNDR3700v4是使用廉价的NAND flash,因此openwrt专门为其使用UBIFS文件系统,而不是上文所说的JFFS。
说了这么多看似无关的,是为了解释openwrt/opkg和entware之间一个重要的区别:openwrt默认把opkg包安装到/usr/,而作为移植版的entware默认安装到/opt/。因为ddwrt/Tomato根卷只读,/usr/不像openwrt上面那样可以写入,所以只能另选一个通常根卷上没有的路径,因此就有了/opt/。别忘了entware的前身就是optware。
所以ddwrt/Tomato的用户常常会需要将/jffs重新bind到/opt,或者挂外接硬盘/U盘到/opt上,openwrt用户则不需要。当然路由内置空间太小的openwrt是另外一回事。
那么把一个软件包从openwrt移植到entware所要做的工作就很直观了:把各种约定好的路径统统改到/opt!
/usr/bin? 改到 /opt/bin
/usr/sbin? 改到 /opt/bin
/etc/配置文件? 改到 /opt/etc/配置文件
使用openwrt UCI配置系统的 /etc/config/配置文件?还有openwrt风格的 /etc/init.d/启动脚本?对不起,这些和ddwrt/Tomato不兼容,只能case by case修改
实际上entware仓库中你可以找到大量的fix-path.patch文件,就是针对各个软件包修改Makefile中的路径。当然,由于内核版本不同(openwrt BB是3.10,CC已经升到3.18,tomato仍然沿用2.26系列)和其他种种原因,总有一些软件包还需要修改其他地方。
以上是关于openwrt安装软件的时候出现依赖的问题,帮忙看下的主要内容,如果未能解决你的问题,请参考以下文章