最近的升级导致网络管理器崩溃(无互联网连接,无应用程序)。

今天升级时,某些原因导致我的无线网络管理器消失了。甚至通过有线连接也无法连接。
这个错误是由以下文件显示的:
**(nm-applet:2716): WARNING **: Could not initialize NMClient /org/freedesktop/NetworkManager: The name org.freedesktop.NetworkManager was not provided by any .service files 

(nm-applet:2716): nm-applet-WARNING **: Error connecting to ModemManager: Error calling StartServiceByName for org.freedesktop.ModemManager1: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ExecFailed: Cannot launch daemon, file not found or permissions invalid 

(nm-applet:2716): nm-applet-WARNING **: Could not find ShellVersion property on org.gnome.Shell after 5 tries 

(nm-applet:2716): nm-applet-WARNING **: Failed to register as an agent: (2) The name org.freedesktop.NetworkManager was not provided by any .service files 

有没有一个补丁我可以通过Windows下载并发送到我的Ubuntu,还是必须重新加载所有内容?我尝试运行两个版本,但仍然无法访问互联网。

(NetworkManager:2425):GLib-WARNING **:GError设置在先前的GError或未初始化的内存之上。这表明某人的代码中存在错误。在设置错误之前,必须确保错误为NULL。覆盖错误消息是:密钥文件没有组“connectivity”。这是我在尝试重新启动网络管理器时遇到的问题...在Ubuntu中回退了十个更新集,但仍然遇到此问题... - Adam Albanowicz
1这个问题只发生在那些打开了“建议”仓库的人身上。最初这是一个不好的主意。 - Pilot6
6我要说的是,将libnl推广到proposed-updates是个坏主意,没有在那里使用实际版本的network-manager进行测试...而且,在一个两年前的lts ubuntu版本上打开proposed是有真正目的的,比如针对*-lts-wily,而且在下一个lts版本发布之前还有3个月-无论如何,事情总会发生的;-) - r2rien
只是为了以后参考:当你不提及你使用的Ubuntu版本和你升级到的Network Manager版本时,“last”升级是没有意义的。 - muru
我曾经遇到过这个问题,而且很长一段时间都没有解决。我的做法是,在断开连接时使用sudo ifdown eth0命令,而在建立新连接时使用sudo ifup eth0命令 :)。 - Hari K T
@Pilot6 我已经关闭了可靠的“建议”更新,但这仍然发生在我身上。我认为这并不重要。不兼容性迟早会发生。就像r2rien所说,他们可能没有考虑和测试它。 - UserName
这种情况在没有“建议”的情况下也可能发生,但是有了“建议”的话,发生的可能性更大。 - Pilot6
7个回答

原因

这是由于修复libnl3 bug #1511735引入的回归造成的。
导致网络管理器崩溃的结果已在network-manager bug #1539513network-manager bug #1539634中报告。


解决方案

降级libnl软件包,并等待network-manager软件包的升级


步骤1

尝试使用apt-get降级libnl,如@Max的回答中所示:

sudo apt-get install libnl-3-200=3.2.21-1 libnl-route-3-200=3.2.21-1 libnl-genl-3-200=3.2.21-1

第二步

如果第一步失败了,因为软件包不再在您的缓存中,显然无法通过软件包管理器下载,您需要手动降级libnl软件包(下载+安装):

  • 下载并将它们复制到您的系统中
    [从启动一个现场发行版/救援光盘或另一台计算机+USB闪存驱动器]
    适用于amd64的下载链接: libnl libnl-genl libnl-route
    适用于i386的下载链接: libnl libnl-genl libnl-route

  • 回到您保存这些.deb文件的系统上,使用dpkg安装它们:

    sudo dpkg -i libnl-*.deb
    

第三步

现在你应该能够重新启动NetworkManager并恢复网络连接:

sudo service network-manager restart

注意

这些错误发生在 ubuntu trusty 14.04 with Pre-released updates : trusty-proposed 软件更新属性

其中,libnl软件包的最新更新从版本 3.2.21-1 升级到 3.2.21-1ubuntu1 引入了一个导致网络管理器崩溃的回归错误。


trusty-proposed中还没有对network-manager进行升级
当前版本:0.9.8.8-0ubuntu7.2

现在有一个更新的network-manager可用于trusty-proposed
更新版本:0.9.8.8-0ubuntu7.3
请测试建议的软件包(#1539634评论第11条)


因此,在您的软件包管理器上触发升级之前,您应该应用一个“保持” - 如libnl3 bug #1511735 comment n°29中所提到的。
sudo apt-mark hold libnl-3-200 libnl-genl-3-200 libnl-route-3-200

一旦安装了来自“trusty-proposed”的未来升级,您可以使用以下命令解除该保留:
sudo apt-mark unhold libnl-3-200 libnl-genl-3-200 libnl-route-3-200

然后您将能够再次升级libnl。

谢谢,你救了我的一天!希望新的网络管理器软件包能尽快发布。这是一个非常严重的错误。 - Ch4rAss
1如果我记得正确的话,在安装了那三个libnl软件包(版本为3.2.21-1,而不是3.2.21-1ubuntu1)之后,我并不需要重新启动机器。我想我只是重新运行了sudo /usr/sbin/NetworkManager或类似的命令。这样说对吗?基本上,我的意思是问是否需要重启,还是其他操作就足够了? - Aaron McDaid
3NetworkManager是一个服务(但它可能取决于您的操作系统/版本) 因此,执行sudo service network-manager restart应该足够了。 - r2rien
根据@AaronMcDaid的建议,添加了重新启动网络管理器的方法。 - r2rien
1改善了格式。我也遇到了这个问题,这个答案对我有效。 - laconbass
@r2rien 很棒的编辑!:D - laconbass
1@laconbass,感谢你大幅改进的格式化;-) - r2rien
在您上述的第二步中,有另一种方法可以完成您的第一步,这对我很有效。它是使用Ubuntu中的恢复选项。
  1. 在GRuB菜单中,选择高级选项,并选择系统上最新内核的最新恢复模式。
  2. 在出现的菜单中,选择启用网络选项,并等待生成反馈。通过ping附近的网络设备进行测试。
  3. 选择恢复选项。网络应该正常工作,但这是暂时的。
  4. 完成您上述的第一步。
  5. 重新启动。此后,网络应该正常工作。
- D. Charles Pyle
我曾经遇到过同样的问题,花了很长时间才找到这个答案。我使用了一个live-usb来访问wifi并安装软件包。我无法让<b>第一步</b>起作用,但<b>第二步</b>对我有效。不需要重新启动。谢谢! - DBS
终于找到这个帖子了。我甚至重新安装了笔记本电脑的操作系统。然后我的台式机也出现了同样的问题。我都快疯了!! - tqjustc
1如果这个错误影响到您,请点击第二行的两个Launchpad错误链接,在Launchpad页面上点击“是,这个错误影响到我”。然后拿起你的烂番茄,加入我的私刑团队,发泄一些被误导的愤怒。感谢您的帖子! - guttermonk
@r2rien,我愿意请你喝一杯啤酒来感谢你!谢谢! - dgoosens
非常感谢,我差点就要把笔记本扔出窗外哈哈。你救了我的理智和笔记本。 - Shane van Wyk
我只是在你的帮助下修好了我未婚夫的笔记本电脑。她现在非常喜欢你! - JLTD
1看起来问题已经解决了(至少对于网络管理器而言;-)),感谢开发人员,感谢大家!...让我们放松一下吧 David Bowie, Live Acoustic "Heroes" - r2rien
是的,升级了libnl之后,新的网络管理器运行得非常好。 - Ch4rAss
1这对我有用!非常感谢。不过,我发现很奇怪的是,这个bug出现已经超过3个月了,直到现在我才遇到这个问题。这个bug已经修复了吗?还是我还需要按照上面提到的方法来解决呢? - user87317
1对我来说是起作用的。但是我检查了一下,猜猜看,我的“建议”存储库被关闭了。看起来在大约三个月之后,这个错误已经传播到了更稳定的存储库。 - jaibatrik
没什么好补充的。这个真是救了我一命。干杯 @r2rien - UserName
我从移动互联网连接下载了这些文件。这些文件大小只有约50Kb左右,然后我通过终端运行了降级操作。我重新启动了机器,现在它可以正常工作了。 - Harsha
在下载并进行手动降级后,我尝试了自动检查更新。有一个新版本3.2.21-1ubuntu1.1可以还原不兼容的更改,所以似乎不需要进行保持。在安装更新并重新启动后,我的网络仍然正常工作。 - Don Kirkby
下载这些文件时,最好将URL更改为本地镜像,而不是依赖于任何CDN负载平衡。需求很高。 - mckenzm

截至2016年5月13日,这个libnl bug也影响到没有安装trusty-proposed的用户,他们几乎肯定会被谷歌引导到这里。
已经发布了更新的libnlnetwork-manager软件包,所以我建议进行前向升级

手动启用网络

假设您正在使用有线连接,eth0和启用了DHCP的网络,请使用终端配置您的网络接口:
sudo ifconfig eth0 up
sudo dhclient eth0

更新网络管理器

在网络正常运行的情况下,可以使用软件更新器或者通过终端使用apt-get来进行更新。

选项A:软件更新器

运行软件更新器并按照正常流程进行更新。在撰写本文时,已经发布了修复包。

选项B:apt-get

(未经测试)。如果您希望尽量减少移动部件或者没有图形界面,也可以通过终端进行更新:

sudo apt-get update
sudo apt-get install network-manager

非常感谢!我周围没有USB存储设备,但我的台式机有有线连接...这非常有帮助。 - Kane
+1。现在已经发布了这些软件包的更新版本,这是最干净的修复方法。(同时,确认我在没有启用“proposed”选项的情况下受到了影响,不得不生气地记起如何使用iwconfig配置连接才能上网) - nikobelia

除了给出的解决方案,我还想给出一个通用建议。
关闭“建议”仓库
它不应该被打开。这个“问题”只影响那些打开了建议仓库并安装了损坏软件包的用户。
该仓库包含一些测试软件包,不建议安装,除非你想测试某些特定软件包。

enter image description here

保持“建议”关闭,如果你不想要这种意外的情况。
你可以参考这个问题获取更多信息。

3请不要责怪用户。在我看来,这对他们而言是幼稚的行为,也不具有生产力,因为用户可能会责怪开发人员。更好的答案是提高用户对所使用系统的理解水平,从而增加他们处理此类回归错误的知识。 - r2rien
1用户不应该打开这个。开发者的错误是把复选框放在那里。 - Pilot6
1这并不是一个错误。他们上传了一个用于测试而不是使用的软件包。 - Pilot6
3作为开发者,无论修复引入的回归错误有多么合理,它都是一个 bug。能不能建议你冷静一点,你的语气听起来至少有点父权主义。对我来说,我已经相应地重新表达了我的回答。对你来说,在你的水平上,你本可以提供一些有用的链接,比如 EnableProposedPerformingSRUVerification 之类的。 - r2rien
2@r2rien:如果你坚持使用LTS版本,即使有更新的操作系统版本可用,那么你对于使用“最新和最好”的软件并不是非常热衷。因此,同时使用LTS版本和永久启用“-proposed”选项是不一致的。(我也遇到了同样的问题,但我认为我必须“责怪”自己。)我同意Pilot6的观点,这不是一个错误。后缀“-proposed”意味着它是为开发人员和测试人员准备的。 - Gunnar Hjalmarsson
2我同意这是一个错误,但是在测试包中。测试的目的就是要发现这种问题。但是如果用户不想突然遇到这种问题,仓库应该被禁用。 - Pilot6
我赞同这个观点,提议中托管的软件包不一定(也不应该)完美运行,因此如果想避免意外情况,最好关闭提议源。 - kos
@GunnarHjalmarsson不要太过责怪自己,你对现在所做的事情有更多了解:)就个人而言,我是故意这样做的,因为我的系统上预安装了多个操作系统/版本,其中一个是Trusty,我希望Canonical和戴尔能继续受到此类提醒。 - r2rien
@Pilot6 (+ @kos) 请记住,我在最初提到了“-proposed”上下文。我理解你可能会在这个问题上重复自己。根据你最后编辑回答的精神:“您可以参考此问题获取更多信息” - 我建议您直接在我的答案中添加建议,不要忘记关于EnableProposedPerformingSRUVerification,这样它们应该得到适当的关注;-) - r2rien
我看到了这个问题,并且在我的机器上禁用了@-proposed@,可以在这里看到:http://postimg.org/image/c9z0at29z/ - Tomislav Nakic-Alfirevic
2是的,大多数用户不应该启用trusty-proposed或trusty-backports。然而,截至2016年5月13日,显然有一些人出现了相同的错误,他们没有使用trusty-backports,需要手动配置网络或升级network-manager到0.9.8.8-0ubuntu7.3版本。请参见[https://bugs.launchpad.net/ubuntu/+source/libnl3/+bug/1581535]。 - Cedric Knight
2昨天(2016年5月13日)确实让我感到震惊,当我检查时,我的“建议”存储库被关闭了,而“回溯”存储库被打开了。 - jaibatrik
我需要在这里做任何更改吗?因为我没有看到预发布的更新- http://i.imgur.com/PmMbsOC.png?1 - Vipin Verma
在16.04版本中,此功能已移至一个单独的选项卡。如果您从未启用过它,您无需担心。 - Pilot6
2截至5月16日,这个漏洞影响到没有订阅该提议的普通用户。 - TheArchitect

更新到network-manager 0.9.8.8-0ubuntu7.2,然后重新启动。
热门解决方法:使用手动网络设置,通过sudo nano /etc/network/interfaces进行操作。 有效的解决方法! 降级一些库文件:
sudo apt-get install libnl-3-200=3.2.21-1 libnl-route-3-200=3.2.21-1 libnl-genl-3-200=3.2.21-1

这根本没有提供答案。 - Eduardo Cola
降级库可能导致其他程序出现故障,请牢记这一点。 - Thomas Ward
对于我的系统(ElementaryOS,Linux 3.19.0-49-generic #55~14.04.1-Ubuntu 14.04),降级成功并且网络管理器重新工作了。 - Max
1尽管这在elementary OS上可能有效,但Ubuntu是一个不同的操作系统,因此修复可能不兼容。 - David
3这个答案是正确的。在我的Ubuntu 14.04上有效。我分别下载了三个包的旧版本(libnl-...),并通过dpkg -i安装它们。今天早上,我的机器上确实有这个版本(3.2.21-1,而不是3.2.21-1ubuntu1)的这三个包。 - Aaron McDaid

我今天早上也遇到了同样的问题,降级libnl软件包也起作用。
我使用救援光盘重新启动,从http://archive.ubuntu.com/ubuntu/pool/main/libn/libnl3/下载了libnl-3-200-3.2.21-1_amd64.deblibnl-genl-3-200_3.2.21-1_amd64.deblibnl-route-3-200_3.2.21-1_amd64.deb,然后使用dpkg -i安装,并重新启动。
网络恢复正常了。这可能不是最终的解决方法,但它让我暂时能在14.04上继续使用。
这是错误报告:https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/1539634

我知道修复会很快完成,棘手的部分是上网的鸡生蛋问题。一种方法是使用有线以太网,非常容易上手:
打开终端
sudo dhclient eth0
sudo apt-get update
sudo apt-get upgrade

我是一个对Ubuntu非常非常新手的初学者,而且还是一个没有计算机语言背景的非技术人员。
我遇到了与nm类似的问题。
按照r2rien的指示,我从他给出的链接中下载了三个文件。
(起初我不明白它们是三个链接,但幸亏他准确地使用了英语:单词“files”让我再次查看并下载了另外两个文件)
然后我无法安装它。
我无法理解“sudo dpkg -i libnl-*.deb”中的星号。
无论我如何尝试单独安装第一个文件,然后一起安装,然后通过apt-get安装;有时将=替换为_,例如3-200=3.2.21-1替换为3-200_3.2.21-1。仍然没有结果。在网上搜索后,发现了非常简单的方法。在“sudo dpkg -i”之后,将文件拖到终端中即可。
然后遇到了另一个问题:processing triggers... 正如有人建议的那样,只需“回车,然后用户名,再回车”,问题就解决了。我还是有些怀疑。 最后它成功了。感谢r2rien和朋友们。

在'libnl-*.deb'中的星号是通配符,所以该命令将影响任何以"libnl-"开头并以".deb"结尾的内容。另外一点:在StackExchange社区中,最好将像这样的评论放在其他人解决方案的评论中,而不是作为独立的答案。 - nikobelia