nvidia官方指导 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
其实就是这几个命令,但是有墙:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listsudo apt-get updatesudo apt-get install -y nvidia-container-toolkit
有墙只能先一步步拆开然后离线手动下载!
1
先看第一个:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
这条命令在干什么?
&&
的前半部分的功能:获取https://nvidia.github.io/libnvidia-container/gpgkey的内容,然后用gpg
命令处理掉保存在/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
。你直接curl是获取不到的,会出现gpg: no valid OpenPGP data found
。那你手动下载这个gpgkey,保存后,然后改写命令成cat gpgkey_path | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
就可以了!- &&的意思是上一句成功再执行下一句
- 后半部分是取另外一个内容
https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list
,然后用sed
命令替换,加上字符,然后用tee
写入/etc/apt/sources.list.d/nvidia-container-toolkit.list
,同时输出到屏幕上。这部分你可以手动下载https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list然后如法炮制的写成cat path_to_list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
2
如果这样之后就能成功
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
那恭喜,就行了!
3
倘若会出现
Could not handshake: The TLS connection was non-properly terminated.
或者
Could not handshake: Error in the pull function. [IP: 185.199.110.153 443]
那你跟我一样,是苦逼的人!但是幸好你遇见了我!
上一步的后半部分(&&后的内容)是把新的源写到apt的source里面,他的内容如果你打开https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list,其实很简单,有效的内容就一行字:
deb https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) /
然后经过sed后,就会变成
deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) /
那么遇到上面两个问题,要么是挂梯子,要么就离线下载deb包。挂梯子按下不表,你能够成功代理下载也行,可是我科学上网了他还是这个问题!气得我七窍生烟!
可是直接点击https://nvidia.github.io/libnvidia-container/stable/deb/AMD64
(我这里ARCH是AMD64)后,会出现unsupported distribution,根本不让你下载这个deb包!
4 解决
于是万般无奈,看见他是握手的问题,还是https链接,我直接改成http吧,然后我把signed的签名也去掉了!
变成了:
deb http://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) /
保存后,apt update竟然成功了。
然后sudo apt-get install -y nvidia-container-toolkit
后会出现xx连接失败等等,但此时已经出现能够下载离线deb包的链接了!
如图:
草!妈的,下载!
下完之后,按照某种顺序用apt-get install ./xxx.deb --fix-missing
就可以。
deb的安装顺序是怎样的?
假设你想安装a,apt-get install ./a.deb
如果不提示,那么是可以直接安装的,如果有提示,那就是要先安装那个提示的包。
由于当时在现场太凌乱了,我已经记不清我是按什么顺序安装的了,总之就是有提示就先下载他提示的那个,然后离线安装。
检查
sudo -E apt-get install -y nvidia-container-toolkit --fix-missing
会提示已经是最新版!这样就已经安装成功了!!