Вопрос или проблема
Как мне это исправить?
$ 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
, из-за неправильной конфигурации библиотек.
Пошаговое руководство по исправлению проблемы
-
Проверка существующих файлов:
Прежде чем вносить изменения, откройте терминал и выполните следующую команду для просмотра файлов, связанных с cuDNN:ls -lha /usr/local/cuda/lib64/libcudnn*
Это позволит вам увидеть все связанные библиотеки и их текущие права доступа.
-
Удаление старых версий:
Поскольку файлlibcudnn.so.7
является обычным файлом, его необходимо удалить. Выполните следующую команду:sudo rm /usr/local/cuda/lib64/libcudnn.so.7
-
Создание символической ссылки:
Теперь создайте символическую ссылку, которая будет указывать на правильный файл версии. Используйте эту команду: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
-
Запуск ldconfig:
Обновите кеш динамического загрузчика с помощью команды:sudo ldconfig
-
Проверка установки:
Теперь попробуйте снова установить нужные пакеты:sudo apt install libroslib-dev
Зачем это важно
Символические ссылки нужны для совместимости программного обеспечения, которое ожидает видеть определённые имена файлов. Когда пакеты, такие как libroslib-dev
, пытаются обращаться к библиотекам cuDNN, они должны находить символическую ссылку libcudnn.so.7
, иначе это может вызывать конфликты и ошибки, подобные тем, что вы видели в выводе ldconfig
.
Заключение
Следуя описанным шагам, вы сможете исправить проблему с символической ссылкой libcudnn.so.7
, что позволит без проблем установить необходимые пакеты. Убедитесь, что библиотека cuDNN правильно настроена, чтобы избежать подобных ошибок в будущем.