Попытка удалить пакет жалуется на неудовлетворенные зависимости

В Ubuntu 18.04 у меня возникли некоторые проблемы с установкой CUDA, поэтому я хотел бы удалить CUDA и начать все с нуля.

Итак, я попробовал следующее:

sudo apt remove cuda

Но потом распечатал следующее:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies.
 cuda-libraries-dev-10-1 : Depends: libcublas-dev (>= 10.2.1.243) but it is not going to be installed
 cuda-samples-10-1 : Depends: libcublas-dev (>= 10.2.1.243) but it is not going to be installed
 cuda-visual-tools-10-1 : Depends: libcublas-dev (>= 10.2.1.243) but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

Я очень смущен этим. Кажется, мне говорят, что cuda-libraries-dev-10-1, cuda-samples-10-1 и cuda-visual-tools-10-1 все зависят от libcublas-dev, по крайней мере с версией 10.2.1.243. А потом говорится, что эта версия libcublas-dev не будет установлена. Но я пытаюсь удалить CUDA, а не установить его. Поэтому, почему моя система должна заботиться о том, что некоторые из пакетов, поставляемых с CUDA, имеют неудовлетворенные зависимости, когда я все равно пытаюсь удалить эти пакеты?

Я могу понять, что если я пытаюсь установить cuda-libraries-dev-10-1, cuda-samples-10-1 или cuda-visual-tools-10-1, тогда это сообщение будет иметь смысл. Но если я пытаюсь удалить их, кого это волнует, есть ли у них неудовлетворенные зависимости?


Обновление

Как и предполагалось, я также запустил:

apt --fix-broken install

Затем распечатывается:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  g++-6 libaccinj64-9.1 libcublas9.1 libcudart9.1 libcufft9.1 libcufftw9.1 libcuinj64-9.1 libcurand9.1 libcusolver9.1 libcusparse9.1 libnppc9.1 libnppial9.1 libnppicc9.1
  libnppicom9.1 libnppidei9.1 libnppif9.1 libnppig9.1 libnppim9.1 libnppist9.1 libnppisu9.1 libnppitc9.1 libnpps9.1 libnvblas9.1 libnvgraph9.1 libnvrtc9.1 libnvtoolsext1 libnvvm3
  libstdc++-6-dev libthrust-dev libvdpau-dev nvidia-cuda-dev nvidia-cuda-doc nvidia-cuda-gdb nvidia-opencl-dev nvidia-profiler nvidia-visual-profiler ocl-icd-opencl-dev
  opencl-c-headers
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libcublas-dev
The following NEW packages will be installed
  libcublas-dev
0 to upgrade, 1 to newly install, 0 to remove and 62 not to upgrade.
83 not fully installed or removed.
Need to get 0 B/38.9 MB of archives.
After this operation, 109 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Get:1 file:/var/cuda-repo-10-1-local-10.1.243-418.87.00  libcublas-dev 10.2.1.243-1 [38.9 MB]
(Reading database ... 211122 files and directories currently installed.)
Preparing to unpack .../libcublas-dev_10.2.1.243-1_amd64.deb ...
Unpacking libcublas-dev (10.2.1.243-1) ...
dpkg: error processing archive /var/cuda-repo-10-1-local-10.1.243-418.87.00/./libcublas-dev_10.2.1.243-1_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/libcublas_static.a', which is also in package nvidia-cuda-dev 9.1.85-3ubuntu1
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cuda-repo-10-1-local-10.1.243-418.87.00/./libcublas-dev_10.2.1.243-1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
4
задан 3 September 2019 в 18:47

4 ответа

dpkg: ошибочный архив обработки/var/cuda-repo-10-1-local-10.1.243-418.87.00/./libcublas-dev_10.2.1.243-1_amd64.deb (-распаковывают): попытка перезаписать '/usr/lib/x86_64-linux-gnu/libcublas_static.a', который находится также в пакете nvidia-cuda-dev 9.1.85-3ubuntu1 dpkg-deb: ошибка: подпроцесс вставки был уничтожен сигналом (Поврежденный канал)

2 Пакета, которые имеют тот же файл

sudo mv usr/lib/x86_64-linux-gnu/libcublas_static.a usr/lib/x86_64-linux-gnu/libcublas_static.a.bak

Затем

sudo dpkg --configure -a 

Если эта работа, попытайтесь произвести чистку cuda снова

3
ответ дан 1 December 2019 в 09:06

Unpacking libcublas-dev (10.2.1.243-1) ... dpkg: error processing archive /var/cuda-repo-10-1-local-10.1.243-418.87.00/./libcublas-dev_10.2.1.243-1_amd64.deb (--unpack): trying to overwrite '/usr/lib/x86_64-linux-gnu/libcublas_static.a', which is also in package nvidia-cuda-dev 9.1.85-3ubuntu1

Давайте объясним эту ошибку немного: у Вас есть два пакета, которые являются несовместимыми, потому что каждый пытается обеспечить тот же файл. Эти два пакета libcublas-dev (от CUDA) и nvidia-cuda-dev (из Ubuntu).

Файл, который они оба попытка обеспечить /usr/lib/x86_64-linux-gnu/libcublas_static.a

У Вас есть несколько опций.

  1. Можно разочароваться в CUDA, удалить пакеты CUDA и удалить репозитории CUDA.

  2. Можно удалить пакет NVIDIA. Не удаляйте репозитории Ubuntu.

  3. Можно использовать dpkg's --force-overwrite флаг, чтобы заставить два иначе несовместимых пакета сотрудничать. Затем Вы не должны удалить или удалить что-либо.

    sudo apt install --force-overwrite libcublas-dev
    

    Используя --force должен быть сделан с осторожностью. Это могло бы вызвать будущие проблемы с обновлениями, удалениями или другими действиями пакета. Убедитесь документу в своих собственных примечаниях, что необходимо было использовать --force-overwrite устанавливать CUDA и пакеты NVIDIA вместе.

1
ответ дан 1 December 2019 в 09:06

У меня была та же проблема. Это сохранило меня (замена Вашей версией пакета):

sudo dpkg -i --force-overwrite /var/cache/apt/archives/libcublas-dev_10.2.1.243-1_amd64.deb

И затем:

sudo apt --fix-broken install
4
ответ дан 1 December 2019 в 09:06

В документации CUDA для Удаление инструментария CUDA 10.1 и драйвера задокументировано, что вам нужно использовать следующую команду:

$ sudo apt-get --purge remove "*cublas*" "cuda*"

Когда вы используете sudo apt-get --purge remove cuda, вы используете метапакеты, и система начнет пытаться решить проблему пакеты. у меня это работало, когда я устанавливал его на Ubuntu 20.04

0
ответ дан 20 August 2020 в 09:13

Другие вопросы по тегам:

Похожие вопросы: