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.list


sudo apt-get update


sudo 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

这条命令在干什么?

  1. &&的前半部分的功能:获取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就可以了!
  2. &&的意思是上一句成功再执行下一句
  3. 后半部分是取另外一个内容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包!
在这里插入图片描述于是万般无奈,看见他是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如果不提示,那么是可以直接安装的,如果有提示,那就是要先安装那个提示的包。
由于当时在现场太凌乱了,我已经记不清我是按什么顺序安装的了。


Yonggie
95 声望4 粉丝