Вопрос или проблема
Я пытаюсь использовать программу на основе Qt6, а именно Nsight Compute UI от NVIDIA, на машине с SLES 15 SP5 (SUSE Enterprise Linux 2015, пакет обновлений 5). Нет, я не могу сменить дистрибутивы, это не мое решение 🙁
Тем не менее, программа нормально работала во всех версиях с 2023 года, но в более поздних версиях я получаю:
- Ошибка: libxcb-cursor.so.0: невозможно открыть общий объектный файл: Нет такого файла или каталога
(подробная версия ниже). Теперь я могу устанавливать пакеты на этой машине, но – пакета libxcb-cursor нет; есть куча других libxcb-whatever
, но именно этого.
Итак, как я могу удовлетворить требование библиотеки для моего приложения?
Длинная версия сообщения об ошибке:
qt.qpa.plugin: Начиная с 6.5.0, для загрузки плагина платформы Qt xcb требуется xcb-cursor0 или libxcb-cursor0.
qt.qpa.plugin: Не удалось загрузить плагин платформы Qt "xcb" в "" даже несмотря на то, что он был найден.
Это приложение не удалось запустить, так как ни один плагин платформы Qt не смог быть инициализирован. Переустановка приложения может устранить эту проблему.
Доступные плагины платформы: xcb, wayland, offscreen, wayland-egl.
Приложение не удалось инициализировать!
Это, вероятно, связано с отсутствующими зависимостями платформы Qt.
Для получения списка зависимостей, пожалуйста, обратитесь к https://doc.qt.io/qt-6/linux-requirements.html
Чтобы увидеть отсутствующие библиотеки, установите QT_DEBUG_PLUGINS=1 и перезапустите приложение.
Предупреждение: Проверка версии OpenGL не удалась. Переход на программное рендеринг Mesa.
qt.qpa.plugin: Начиная с 6.5.0, для загрузки плагина платформы Qt xcb требуется xcb-cursor0 или libxcb-cursor0.
qt.qpa.plugin: Не удалось загрузить плагин платформы Qt "xcb" в "" даже несмотря на то, что он был найден.
Это приложение не удалось запустить, так как ни один плагин платформы Qt не смог быть инициализирован. Переустановка приложения может устранить эту проблему.
Доступные плагины платформы: xcb, wayland, offscreen, wayland-egl.
################# ОШИБКА: CrashReporter #################
CrashReporter
Инициализация Qt не удалась
Не удалось загрузить плагин платформы Qt: "xcb"
- Путь к библиотеке: /opt/versions/nvidia/nsight-compute/2024.3/host/linux-desktop-glibc_2_11_3-x64/Plugins/platforms/libqxcb.so
- Ошибка: libxcb-cursor.so.0: невозможно открыть общий объектный файл: Нет такого файла или каталога
Пожалуйста, проверьте, установлен ли libxcb-cursor.so.0 на вашей системе
Смотрите https://doc.qt.io/qt-6/linux-requirements.html для получения дополнительных сведений.
Приложение будет завершено
Предупреждение: Отсутствуют наборы символов при преобразовании строки в набор шрифтов
/opt/versions/nvidia/nsight-compute/2024.3/host/linux-desktop-glibc_2_11_3-x64/ncu-ui: строка 26: 26176 Завершение
Это на openSuse 15.6, а не на SLES 15 SP5, но должно быть так же.
Вам нужно посмотреть более тщательно…
gzip -dc [ПУТЬ к ARCHIVES.gz в источнике установки] | grep -E "x86_64.+libxcb-cursor.so.0"
возвращает…
./x86_64/libxcb-cursor0-32bit-0.1.3-150400.3.2.3.x86_64.rpm: lrwxrwxrwx 1 root root 22 2 авг 2022 /usr/lib/libxcb-cursor.so.0 -> libxcb-cursor.so.0.0.0
./x86_64/libxcb-cursor0-32bit-0.1.3-150400.3.2.3.x86_64.rpm: -rwxr-xr-x 1 root root 22724 2 авг 2022 /usr/lib/libxcb-cursor.so.0.0.0
./x86_64/xcb-util-cursor-devel-32bit-0.1.3-150400.3.2.3.x86_64.rpm: lrwxrwxrwx 1 root root 22 2 авг 2022 /usr/lib/libxcb-cursor.so -> libxcb-cursor.so.0.0.0
./x86_64/libxcb-cursor0-0.1.3-150400.3.2.3.x86_64.rpm: lrwxrwxrwx 1 root root 22 2 авг 2022 /usr/lib64/libxcb-cursor.so.0 -> libxcb-cursor.so.0.0.0
./x86_64/libxcb-cursor0-0.1.3-150400.3.2.3.x86_64.rpm: -rwxr-xr-x 1 root root 24184 2 авг 2022 /usr/lib64/libxcb-cursor.so.0.0.0
./x86_64/xcb-util-cursor-devel-0.1.3-150400.3.2.3.x86_64.rpm: lrwxrwxrwx 1 root root 22 2 авг 2022 /usr/lib64/libxcb-cursor.so -> libxcb-cursor.so.0.0.0
Итак, есть rpm для libxcb-cursor0
хотя бы из предыдущего пакета обновления.
Ответ или решение
Решение проблемы с отсутствующей библиотекой libxcb-cursor.so.0
для программы на базе Qt6
Введение
Вы столкнулись с проблемой при запуске программы NVIDIA Nsight Compute UI на системе SLES 15 SP5, где необходима библиотека libxcb-cursor.so.0
. Программа ранее работала без сбоев, однако с последними обновлениями возникла ошибка, связанная с недоступной библиотекой. В данном руководстве мы рассмотрим, как можно решить эту проблему, не меняя операционную систему и не прибегая к крайним мерам.
Контекст проблемы
Ошибка, с которой вы столкнулись, указывает на то, что начиная с версии 6.5.0, для загрузки платформенного плагина Qt xcb требуется наличие библиотеки libxcb-cursor.so.0
. Это может быть вызвано обновлением Qt и изменением зависимостей. Например, вывод следующей ошибки говорит о том, что библиотека отсутствует:
Error: libxcb-cursor.so.0: cannot open shared object file: No such file or directory
Данная ситуация может быть особенно актуальна для систем, которые не получают последние обновления или пакеты, как в вашем случае с SLES 15 SP5.
Поиск решения
-
Поиск пакета: Первым шагом является поиск необходимого пакета. Основываясь на выводе команды
gzip -dc [PATH to ARCHIVES.gz in the install source] | grep -E "x86_64.+libxcb-cursor.so.0"
, вы уже обнаружили, что существует RPM-пакетlibxcb-cursor0
в библиотеке. Это ключевая информация, так как наличие RPM файла может послужить основой для установки. -
Установка RPM-пакета: Попробуйте установить обнаруженный RPM-пакет. Используйте следующую команду:
sudo rpm -ivh [путь к your_libxcb-cursor0.rpm]
Если это не сработает из-за проблем с зависимостями, рассмотрите установку с помощью
zypper
илиyum
, если они настроены для работы с вашей системой. -
Проверка наличия зависимостей: Убедитесь, что все зависимости, которые могут потребоваться для работы
libxcb-cursor.so.0
, также установлены. Используйте команду:ldd /usr/lib64/libxcb-cursor.so.0
Это даст вам список библиотек, которые требуются
libxcb-cursor.so.0
, и позволит вам увидеть, какие из них, если таковые имеются, отсутствуют. -
Использование альтернативных репозиториев: Если пакет не доступен, вы можете рассмотреть возможность добавления других репозиториев (таких как Packman) или поиск сторонних ресурсов, предлагающих RPM для SLES 15 SP5 или более ранних версий.
-
Компиляция из исходников: Как последний шаг, если ничего из вышеперечисленного не сработает, вы можете попробовать скачать исходный код для
libxcb
и скомпилировать его самостоятельно. Этот процесс требует наличия необходимых инструментов сборки и зависимостей, но является рабочим вариантом.
Заключение
Несмотря на ограничения, связанные с использованием старой версии SLES, решение проблемы с отсутствующей библиотекой libxcb-cursor.so.0
возможно посредством установки необходимых RPM-пакетов, проверки зависимостей и рассмотрения альтернативных репозиториев. Успешное разрешение данной ситуации позволит вам продолжить работу с программой Nsight Compute UI без дальнейших сбоев.
Если у вас возникнут дополнительные вопросы или потребуется помощь в процессе реализации вышеперечисленных шагов, не стесняйтесь обращаться на специализированные форумы или к сообществу SUSE.