- 主题:ubuntu坑爹的nvidia显卡驱动apt repo
Ubuntu的官方repo里有nvidia的显卡驱动。一般来说如果你有需要,装上就行了。
但是呢,假如你要做机器学习,一般你还得装cuda。这个时候添加Nvidia的apt repo,并且从那安装。Nvidia不允许别人分发它家的CUDA binary。最恶心的是,如果你要安装CUDNN,还得注册账号并登录。那账号还各种2FA,登录IP验证,邮箱验证。算了,此处略去不表。
这里要说的问题是:显卡驱动在Ubuntu的官方repo和Nvidia的repo中都有。同样的名字,不同的内容。显卡驱动不仅仅是一个apt包,而是很多包。主包在两边都有,Ubuntu这边的那个主包的依赖包要少一些。Nvidia的那个主包依赖包要多一些。Ubuntu这边的那个主包版本号更新一些。Nvidia很懒,经常忘记把自己新版的驱动发布到自家的apt repo中去。于是问题来了,如果你从Ubuntu拿了最新的显卡驱动的主包,可能会导致它与你已经安装的CUDA不兼容。因为CUDA是从Nvidia的repo来的。Nvidia只是保证它自己的repo内部是一致的。
所以你有两个选择:
1. 不要从Ubuntu的官方repo安装显卡驱动。但是缺点是:你得不到该驱动的安全更新。如果只是自用,安全性要求没那么高,这没什么关系。
2. 如果你从Ubuntu的官方repo安装显卡驱动,一定要先卸载干净所有从nvidia repo来的东西。并确保将来一定不从nvidia repo安装显卡驱动。
再次强调:这两个包虽然名字一样,但是内容不同,依赖包也不同。版本号可能一致可能不一致。
Last words
top 1原则:对正式生产环境来说永远不要使用多repo。不管是nuget repo还是apt repo还是其它什么。上面所说的内容冲突只是冰山一角。它既然能给你造成稳定性问题,它同样可以给你造成安全性问题。多repo不安全!!!!自建repo自己管理镜像同步才是王道。
--
FROM 107.139.34.*
问题就出在那个priority。我知道NV把它自己的级别提高了。但是这不改变它没有提供安全补丁的事实。
【 在 funicorn 的大作中提到: 】
: 我想了一下,发现问题出在哪里了,应该是你不懂apt源的priority机制
:
--
FROM 107.139.34.*
此事说来复杂。在11.1之前CUDA没有提供二进制兼容。这就意味着你得根据你要用的软件来决定装什么cuda版本。
另一方面,虽然现在有了二进制兼容,但是对具体的设备来说存在“最好的CUDA版本”。 最新的未必是最好的。Nvidia会在新版本的cuda中砍低旧设备的性能,或者干脆引入一些bug。conda里的cuda用于local dev可以,服务器上不能这么草率。
【 在 cppbuilder 的大作中提到: 】
: 要不然别用官方的了,anaconda打包好了cuda/cudnn,创建一个conda env就可以了
:
--
FROM 107.139.34.*
嗯,个人的开发环境和服务器是两回事。
【 在 lvsoft 的大作中提到: 】
: 一般来说,普通用户完全可以用repo装。
: 但时不时要升级或者切换版本的专业玩家就不要用发行版搞了,直接用nvidia的二进制文件装,自己根据需要调整吧...
: 另外200M算个啥...
: ...................
--
FROM 107.139.34.*