前几天我更新了 nvidia 驱动程序的较新版本。今天我运行了 apt upgrade,它显示...
The following packages were automatically installed and are no longer required:
cuda-command-line-tools-8-0 cuda-core-8-0 cuda-cublas-8-0
cuda-cublas-dev-8-0 cuda-cudart-8-0 cuda-cudart-dev-8-0 cuda-cufft-8-0
cuda-cufft-dev-8-0 cuda-curand-8-0 cuda-curand-dev-8-0 cuda-cusolver-8-0
cuda-cusolver-dev-8-0 cuda-cusparse-8-0 cuda-cusparse-dev-8-0
cuda-documentation-8-0 cuda-driver-dev-8-0 cuda-license-8-0
cuda-misc-headers-8-0 cuda-npp-8-0 cuda-npp-dev-8-0 cuda-nvgraph-8-0
cuda-nvgraph-dev-8-0 cuda-nvml-dev-8-0 cuda-nvrtc-8-0 cuda-nvrtc-dev-8-0
cuda-samples-8-0 cuda-toolkit-8-0 cuda-visual-tools-8-0 freeglut3-dev
libxmu-dev libxmu-headers nvidia-modprobe
Use 'apt autoremove' to remove them.
但是我的 cuda 运行良好(刚刚用它测试了一个神经网络),我没有理由想要删除它们。为什么以及如何阻止这种情况?
答案1
这已经是老问题了,但是今天我遇到了同样的问题(实际上我要删除的软件包列表要大得多,可能有一百个,还有其他库,比如libc6
或libopencv
,下面的单行代码将它们全部从自动删除中删除),我认为这个解决方案值得在这里提一下。
正如 @fkraiem 提到的,手动重新安装软件包将使 Apt 知道您想要保留它们。但并非所有列表都需要这样做,最终您将安装将保留在列表中的软件包,如果它们的依赖项也标记为自动删除。或者您也可以手动标记它们(用 来apt-mark manual <packages>
标记<packages>
您不想自动删除)。
但是,那最清洁的选择,在我看来,因为你只需要要求安装一个包,所以手动重新安装该问题的根源就是这个包,即:
sudo apt-get install nvidia-cuda-toolkit-8-0
然后所有其他依赖项都将消失。
答案2
Apt 并不“想要”删除这些软件包,它只是让您知道这些软件包是作为不再安装的另一个软件包的依赖项安装的,因此您可能不再需要它们。
如果确实需要它们,您只需sudo apt install packagename
告诉 Apt 您确实需要一个特定的包;然后它将不再建议您卸载该包或其依赖项。