如何解决Windows 10春季创意者更新中Ubuntu的runlevel错误?
解决WSL Ubuntu 18.04中
apt-get dist-upgrade的ebtables更新错误 我之前在WSL环境里也碰到过一模一样的问题,本质是WSL没有完整的Linux init系统,导致ebtables的安装/移除脚本执行失败。既然你不关心这个包,有几个简单的办法能彻底解决这个烦人的错误:
方法1:直接卸载ebtables(推荐)
既然你用不到这个包,直接删掉就一了百了,之后更新再也不会碰到这个问题:
sudo apt-get purge ebtables
这个命令会彻底移除ebtables及其配置文件,后续的dist-upgrade就不会再处理这个包了。
方法2:禁用ebtables服务(如果想保留包)
如果你出于某些原因不想卸载,那可以禁用ebtables的启动脚本,避免更新时触发错误:
sudo update-rc.d ebtables disable
这个命令会让系统不再尝试启动ebtables服务,更新时的预移除脚本就不会因为调用invoke-rc.d stop而失败了。
方法3:临时跳过配置错误(单次解决)
如果只是想临时完成这次更新,不想修改系统,可以在执行dist-upgrade时加上dpkg的强制选项:
sudo apt-get dist-upgrade -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"
不过这个方法只是临时生效,下次更新可能还会碰到同样的问题,所以还是前两种方法更彻底。
错误原因说明
WSL(Windows Subsystem for Linux)不是完整的Linux系统,它没有传统Linux发行版的init系统(比如systemd),所以invoke-rc.d工具无法识别当前的运行级别。ebtables的预移除脚本尝试调用invoke-rc.d stop ebtables来停止服务,但在WSL环境下这个操作会失败,最终导致dpkg抛出错误。
内容的提问来源于stack exchange,提问作者Matt Hargett
相关产品推荐
相关产品推荐

