/сбин/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 не является символической ссылкой

Вопрос или проблема

Как мне это исправить?

$ ls -lha /usr/local/cuda/lib64/libcudnn*
-rwxr-xr-x 1 root root 275M 21 июн 15:56 /usr/local/cuda/lib64/libcudnn.so
-rwxr-xr-x 1 root root 275M 21 июн 15:56 /usr/local/cuda/lib64/libcudnn.so.7
-rwxr-xr-x 1 root root 275M 21 июн 15:56 /usr/local/cuda/lib64/libcudnn.so.7.0.5
-rw-r--r-- 1 root root 268M 21 июн 15:56 /usr/local/cuda/lib64/libcudnn_static.a

$ sudo ldconfig
/sbin/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 не является символической ссылкой

это мешает установке roslib

$ sudo apt install libroslib-dev
[sudo] пароль для mona: 
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Следующие пакеты были установлены автоматически и больше не требуются:
  bridge-utils containerd libllvm5.0 libpython-all-dev libxfont2 linux-headers-4.13.0-36 linux-headers-4.13.0-36-generic linux-headers-4.13.0-45 linux-headers-4.13.0-45-generic
  linux-image-4.13.0-36-generic linux-image-4.13.0-45-generic linux-image-extra-4.13.0-36-generic linux-image-extra-4.13.0-45-generic python-all python-all-dev python-wheel runc ubuntu-fan
Используйте 'sudo apt autoremove' для их удаления.
Следующие дополнительные пакеты будут установлены:
  libroslib0d librospack-dev librospack0d
Следующие НОВЫЕ пакеты будут установлены:
  libroslib-dev libroslib0d librospack-dev librospack0d
0 обновлено, 4 новых установлено, 0 для удаления и 108 не обновлено.
Необходимо скачать 128 кБ архивов.
После этой операции будет использовано 485 кБ дополнительного дискового пространства.
Вы хотите продолжить? [Y/n] y
Получение:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 librospack0d amd64 2.2.5-3 [86.7 kB]
Получение:2 http://archive.ubuntu.com/ubuntu xenial/universe amd64 librospack-dev amd64 2.2.5-3 [11.6 kB]
Получение:3 http://archive.ubuntu.com/ubuntu xenial/universe amd64 libroslib0d amd64 1.12.5-4 [22.3 kB]
Получение:4 http://archive.ubuntu.com/ubuntu xenial/universe amd64 libroslib-dev amd64 1.12.5-4 [7,154 B]
Загружено 128 кБ за 1с (87.5 кБ/с)      
Выбор ранее не выбранного пакета librospack0d:amd64.
(Чтение базы данных ... 410043 файла и каталога в настоящее время установлены.)
Подготовка к распаковке .../librospack0d_2.2.5-3_amd64.deb ...
Распаковка librospack0d:amd64 (2.2.5-3) ...
Выбор ранее не выбранного пакета librospack-dev.
Подготовка к распаковке .../librospack-dev_2.2.5-3_amd64.deb ...
Распаковка librospack-dev (2.2.5-3) ...
Выбор ранее не выбранного пакета libroslib0d:amd64.
Подготовка к распаковке .../libroslib0d_1.12.5-4_amd64.deb ...
Распаковка libroslib0d:amd64 (1.12.5-4) ...
Выбор ранее не выбранного пакета libroslib-dev.
Подготовка к распаковке .../libroslib-dev_1.12.5-4_amd64.deb ...
Распаковка libroslib-dev (1.12.5-4) ...
Обработка триггеров для libc-bin (2.23-0ubuntu10) ...
/sbin/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 не является символической ссылкой

Настройка librospack0d:amd64 (2.2.5-3) ...
Настройка librospack-dev (2.2.5-3) ...
Настройка libroslib0d:amd64 (1.12.5-4) ...
Настройка libroslib-dev (1.12.5-4) ...
Обработка триггеров для libc-bin (2.23-0ubuntu10) ...
/sbin/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 не является символической ссылкой

И у меня есть

/sbin/ldconfig.real: /lib/x86_64-linux-gnu/ld-2.23.so является динамическим компоновщиком, игнорируя

    libcudnn.so.7 -> libcudnn.so.7.0.5
mona@Mona:/usr/local/cuda/lib64$ sudo rm libcudnn
mona@Mona:/usr/local/cuda/lib64$ sudo rm libcudnn.so.7
mona@Mona:/usr/local/cuda/lib64$ sudo ln libcudnn.so.7.0.5 libcudnn.so.7
mona@Mona:/usr/local/cuda/lib64$ sudo ln libcudnn.so.7 libcudnn.so
mona@Mona:/usr/local/cuda/lib64$ sudo ldconfig

Ответ или решение

Ошибка, с которой вы столкнулись, связана с тем, что файл libcudnn.so.7 в вашей системе — это обычный файл (rwxr-xr-x), а не символическая ссылка, как ожидалось. Эта проблема может вызвать сбои при установке некоторых пакетов, таких как libroslib-dev, из-за неправильной конфигурации библиотек.

Пошаговое руководство по исправлению проблемы

  1. Проверка существующих файлов:
    Прежде чем вносить изменения, откройте терминал и выполните следующую команду для просмотра файлов, связанных с cuDNN:

    ls -lha /usr/local/cuda/lib64/libcudnn*

    Это позволит вам увидеть все связанные библиотеки и их текущие права доступа.

  2. Удаление старых версий:
    Поскольку файл libcudnn.so.7 является обычным файлом, его необходимо удалить. Выполните следующую команду:

    sudo rm /usr/local/cuda/lib64/libcudnn.so.7
  3. Создание символической ссылки:
    Теперь создайте символическую ссылку, которая будет указывать на правильный файл версии. Используйте эту команду:

    sudo ln -s /usr/local/cuda/lib64/libcudnn.so.7.0.5 /usr/local/cuda/lib64/libcudnn.so.7

    Также создайте символическую ссылку для libcudnn.so:

    sudo ln -s /usr/local/cuda/lib64/libcudnn.so.7 /usr/local/cuda/lib64/libcudnn.so
  4. Запуск ldconfig:
    Обновите кеш динамического загрузчика с помощью команды:

    sudo ldconfig
  5. Проверка установки:
    Теперь попробуйте снова установить нужные пакеты:

    sudo apt install libroslib-dev

Зачем это важно

Символические ссылки нужны для совместимости программного обеспечения, которое ожидает видеть определённые имена файлов. Когда пакеты, такие как libroslib-dev, пытаются обращаться к библиотекам cuDNN, они должны находить символическую ссылку libcudnn.so.7, иначе это может вызывать конфликты и ошибки, подобные тем, что вы видели в выводе ldconfig.

Заключение

Следуя описанным шагам, вы сможете исправить проблему с символической ссылкой libcudnn.so.7, что позволит без проблем установить необходимые пакеты. Убедитесь, что библиотека cuDNN правильно настроена, чтобы избежать подобных ошибок в будущем.

Оцените материал
Добавить комментарий

Капча загружается...