snap не может найти libxcb.so.1

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

$ snap list
snap: error while loading shared libraries: libxcb.so.1: cannot open shared object file: No such file or directory
$ whereis libxcb.so.1
libxcb.so.1: /usr/lib/x86_64-linux-gnu/libxcb.so.1
$ which snap
/usr/bin/snap
$ sha256sum /bin/snap
06d498c41a5bf2f4d836fb50ff02749c82297fd3e74e41d78bb089292158be5a  /bin/snap
$ file /bin/snap
/bin/snap: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=_XiLSmroeRJA5Uo8zvaX/rt3gXAZzIqOiI-Q_dmRd/7eHWjLhhkgUrQ7Kb9WkR/V-DYZbbtce--vU_MTNt2, stripped
$ strace -o trace.out /usr/bin/snap list
$ grep -C5 'libxcb.so.1' trace.out
mmap(NULL, 1297704, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fee906c3000
mmap(0x7fee906dc000, 589824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7fee906dc000
mmap(0x7fee9076c000, 585728, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa9000) = 0x7fee9076c000
mmap(0x7fee907fb000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x138000) = 0x7fee907fb000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib/cuda/include/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/cuda/lib64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/local/lib/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "glibc-hwcaps/x86-64-v3/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "glibc-hwcaps/x86-64-v2/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libxcb.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=170600, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fee90b5b000
mmap(NULL, 172680, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fee90b30000
mmap(0x7fee90b3c000, 81920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7fee90b3c000
--
mmap(NULL, 1297704, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7bdda3e93000
mmap(0x7bdda3eac000, 589824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7bdda3eac000
mmap(0x7bdda3f3c000, 585728, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa9000) = 0x7bdda3f3c000
mmap(0x7bdda3fcb000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x138000) = 0x7bdda3fcb000
close(3)                                = 0
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/x86_64-linux-gnu/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/glibc-hwcaps/x86-64-v3/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/glibc-hwcaps/x86-64-v3", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/glibc-hwcaps/x86-64-v2/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/glibc-hwcaps/x86-64-v2", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/haswell/x86_64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/haswell/x86_64", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/haswell/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/haswell", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/x86_64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/x86_64", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/haswell/x86_64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/haswell/x86_64", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/haswell/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/haswell", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/x86_64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/x86_64", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib", {st_mode=S_IFDIR|0755, st_size=130, ...}, 0) = 0
writev(2, [{iov_base="/usr/bin/snap", iov_len=13}, {iov_base=": ", iov_len=2}, {iov_base="error while loading shared libra"..., iov_len=36}, {iov_base=": ", iov_len=2}, {iov_base="libxcb.so.1", iov_len=11}, {iov_base=": ", iov_len=2}, {iov_base="cannot open shared object file", iov_len=30}, {iov_base=": ", iov_len=2}, {iov_base="No such file or directory", iov_len=25}, {iov_base="\n", iov_len=1}], 10) = 124
exit_group(127)                         = ?
+++ exited with 127 +++


Уже пробовал переустановить:

sudo apt install --reinstall snapd && sudo snap refresh

без результата.

Ubuntu 24.10

Есть идеи?

Решение, которое кажется работает:

sudo apt remove --purge icaclient
sudo snap refresh  # обновить все snap до последних стабильных версий
for core in $(snap list | grep core | awk '{print $1}'); do sudo snap disable $core && sudo snap enable $core; done

App Protection в icaclient кажется была проблемой. После удаления icaclient, snap начал работать (без ошибок libxcb.so.1). Однако я не мог запустить приложения snap, получая:

cannot locate base snap core18: No such file or directory

что было решено отключением/включением каждого coreX.

Благодарности:

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

Проблема, с которой вы столкнулись — это ошибка загрузки библиотеки libxcb.so.1, которая необходима для корректной работы snap. Рассмотрим подробнее причину этой ошибки и возможные решения.

Теория

Система модульного управления приложениями Snap, разработанная Canonical, позволяет запускать приложения в изолированной среде, что повышает их безопасность и управляемость. Однако, как и любая другая система, Snap может столкнуться с проблемами зависимостей, которые вызывают ошибки при загрузке приложений.

Библиотека libxcb.so.1 является частью низкоуровневого программного обеспечения для работы с X-сервером, и ее отсутствие может привести к значительным проблемам совместимости, особенно в системах, где приложения требуют графического интерфейса.

Возможные причины

  1. Отсутствие библиотеки: Библиотека может быть не установлена или перемещена в другое место, недоступное для snap.

  2. Конфликт с другими приложениями: Установка некоторых пакетов, таких как icaclient, может изменить путь для поиска библиотек, что приведет к тому, что snap не сможет найти необходимую библиотеку.

  3. Проблемы с кэшем или конфигурацией: Иногда кэш или конфигурационные файлы могут быть повреждены, что препятствует правильной работе snap.

Пример

В вашем случае, согласно предоставленной информации, директория /usr/lib/x86_64-linux-gnu/ содержит libxcb.so.1. Однако snap ищет библиотеку в других местах, прежде чем дойти до этой директории. Это может указывать на проблемы с путями к библиотекам или конфигурациями snap.

Вы также отметили, что решение проблемы включает удаление icaclient, что подтверждает, что этот пакет вызывает конфликт.

Применение

Для решения проблемы следуйте этим шагам:

  1. Проверка наличия библиотеки:
    Убедитесь, что libxcb.so.1 действительно присутствует в системе:

    ls /usr/lib/x86_64-linux-gnu/libxcb.so.1

    Если библиотеки нет, установите пакеты, которые включают данную библиотеку:

    sudo apt install --reinstall libxcb1
  2. Удаление конфликтующего ПО:
    Если проблема началась после установки icaclient, удалите его:

    sudo apt remove --purge icaclient
  3. Проверка и обновление snap:
    После удаления проблемного пакета, обновите и перезапустите snap:

    sudo snap refresh
  4. Поочередное отключение и включение core snaps:
    Это шаг способствует обновлению и реконфигурации snap–окружения:

    for core in $(snap list | grep core | awk '{print $1}'); do
       sudo snap disable $core && sudo snap enable $core
    done
  5. Проверка и настройка переменных окружения:
    Убедитесь, что переменные окружения, указывающие пути поиска библиотек, правильно настроены. Проверьте и измените файлы, такие как .bashrc или .profile, если необходимо:

    export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
  6. Логирование и трассировка:
    Если проблема не устранена, используйте strace для более детального логирования поведения snap:

    strace -e trace=openat -o snap_trace.log /usr/bin/snap list

    Анализ логов поможет определить, где именно система пытается найти библиотеку.

Эти шаги должны помочь в решении вашей проблемы, связанной с библиотекой libxcb.so.1. Напомню, что любые изменения в системе следует выполнять с осторожностью, особенно если это касается удаления или обновления системных библиотек и пакетов. Внимательное тестирование изменений гарантирует, что проблема будет решена без влияния на другие аспекты работы системы.

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

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