所以只是想知道当我运行这些命令时会发生什么(特别是在 Ubuntu 上):
# Add NVIDIA package repositories
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update
# Install NVIDIA driver
sudo apt-get install --no-install-recommends nvidia-driver-418
# Reboot. Check that GPUs are visible using the command: nvidia-smi
# Install development and runtime libraries (~4GB)
sudo apt-get install --no-install-recommends \
cuda-10-1 \
libcudnn7=7.6.4.38-1+cuda10.1 \
libcudnn7-dev=7.6.4.38-1+cuda10.1
这些是为 Ubuntu 安装 CUDA 的说明,所以我对它们的作用有基本的了解,但命令对我来说不清楚(除了wget
)。什么是dpkg
,什么是apt-key adv --fetch-keys
,为什么我们不从第二个存储库添加密钥,而只从第一个存储库添加密钥,为什么我们要运行sudo dpkg -i
第一个.deb
文件和sudo apt install
第二个文件?
这是一个一般性问题,与 CUDA 没有具体联系,我只是想了解更多有关 Linux 的信息。
谢谢!
答案1
此命令下载包含 CUDA 存储库信息的 .deb 包
dpkg
是 Debian 的包管理器。选项 -i 将安装以前下载的软件包
sudo dpkg -i cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
apt-key
是 APT 密钥管理实用程序。adv
命令将高级选项传递给 gpg。
sudo apt-key adv --fetch-keyshttps://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
。
为什么我们对第一个 .deb 文件运行 sudo dpkg -i 而对第二个文件运行 sudo apt install ?
apt
是 dpkg 的前端。它可以解决依赖关系,下载并安装所需的包。可能第一个 .deb 文件没有依赖项,而第二个文件有。
为什么我们不添加第二个存储库中的密钥,而只添加第一个存储库中的密钥
因为他们有相同的公钥
答案2
为什么我们不添加第二个存储库中的密钥,而只添加第一个存储库中的密钥
因为他们有相同的公钥。
curl http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
curl https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
为什么我们对第一个 .deb 文件运行 sudo dpkg -i 而对第二个文件运行 sudo apt install ?
在这种情况下 dpkg
并且apt
将仅设置一个存储库,apt
与 具有相同的效果dpkg
,因为存储库设置不需要安装其他依赖项。
请注意,它apt
能够解决依赖关系,但dpkg
不能解决。