图形界面或者命令行下在 yast 中修改语言,确认后报错,出错信息如图中所示,google 不到类似的出错信息,使用的是 20150129 的滚动版 64 位系统,装了 kde5, 今天升级后 yast 更新过还是这个出错信息,求教会是什么原因
复现成功,翻 /var/log/YaST2/y2log 看到如下信息:
2015-02-15 22:13:25 <1> linux-3gum.site(25507) [Ruby] installation/proposal_client.rb:65 Called Bootloader::ProposalClient.run with UpdateGfxMenu and params
2015-02-15 22:13:25 <3> linux-3gum.site(25507) [Ruby] yast/wfm.rb:197 Client call failed with 'Invalid action for proposal '"UpdateGfxMenu"'' and backtrace "/usr/share/YaST2/lib/installation/proposal_client.rb:77:in `run'", "/usr/share/YaST2/lib/installation/proposal_client.rb:59:in `run'", "/usr/share/YaST2/clients/bootloader_proposal.rb:3:in `<top (required)>'", "/usr/lib64/ruby/vendor_ruby/2.1.0/yast/wfm.rb:184:in `eval'", "/usr/lib64/ruby/vendor_ruby/2.1.0/yast/wfm.rb:184:in `run_client'", "/usr/lib64/ruby/vendor_ruby/2.1.0/yast/wfm.rb:176:in `call_builtin'", "/usr/lib64/ruby/vendor_ruby/2.1.0/yast/wfm.rb:176:in `call_builtin_wrapper'", "/usr/lib64/ruby/vendor_ruby/2.1.0/yast/wfm.rb:169:in `CallFunction'", "/usr/share/YaST2/clients/language.rb:189:in `LanguageWrite'", "/usr/share/YaST2/clients/language.rb:238:in `LanguageSequence'", "/usr/lib64/ruby/vendor_ruby/2.1.0/yast/fun_ref.rb:33:in `call'", "/usr/lib64/ruby/vendor_ruby/2.1.0/yast/fun_ref.rb:33:in `call'", "/usr/share/YaST2/modules/CommandLine.rb:1581:in `Run'", "/usr/share/YaST2/clients/language.rb:117:in `main'", "/usr/share/YaST2/clients/language.rb:329:in `<top (required)>'", "/usr/lib64/ruby/vendor_ruby/2.1.0/yast/wfm.rb:184:in `eval'", "/usr/lib64/ruby/vendor_ruby/2.1.0/yast/wfm.rb:184:in `run_client'"]
2015-02-15 22:13:25 <3> linux-3gum.site(25507) [Ruby] yast/wfm.rb:202 Internal error. Please report a bug report with logs.
Details: Invalid action for proposal '"UpdateGfxMenu"'
Caller: /usr/share/YaST2/lib/installation/proposal_client.rb:77:in `run'
稍微 Debug 了一下,现在 YaST 的 bootloader 模块已经不支持 lilo 了,所以 UpdateGfxMenu 这个函数就不用调用了。Don't call UpdateGfxMenu (gone alongside lilo support) · yast/yast-country@2d3a012 · GitHub
出错的原因是 proposal_client.rb 里面的 run 只可以运行四个函数,现在喂进来一个 UpdateGfxMenu,自然要报错了。
解决办法是:
修改 /usr/share/YaST2/clients/language.rb 的这一行:
WFM.CallFunction(“bootloader_proposal”, “UpdateGfxMenu”])
变成
#WFM.CallFunction(“bootloader_proposal”, “UpdateGfxMenu”])
注释掉就可以了。
1赞
谢谢学姐,这样确实不报错了, 修改可用,之前看错了