Вопрос или проблема
$ 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-сервером, и ее отсутствие может привести к значительным проблемам совместимости, особенно в системах, где приложения требуют графического интерфейса.
Возможные причины
-
Отсутствие библиотеки: Библиотека может быть не установлена или перемещена в другое место, недоступное для
snap
. -
Конфликт с другими приложениями: Установка некоторых пакетов, таких как
icaclient
, может изменить путь для поиска библиотек, что приведет к тому, чтоsnap
не сможет найти необходимую библиотеку. -
Проблемы с кэшем или конфигурацией: Иногда кэш или конфигурационные файлы могут быть повреждены, что препятствует правильной работе
snap
.
Пример
В вашем случае, согласно предоставленной информации, директория /usr/lib/x86_64-linux-gnu/
содержит libxcb.so.1
. Однако snap
ищет библиотеку в других местах, прежде чем дойти до этой директории. Это может указывать на проблемы с путями к библиотекам или конфигурациями snap
.
Вы также отметили, что решение проблемы включает удаление icaclient
, что подтверждает, что этот пакет вызывает конфликт.
Применение
Для решения проблемы следуйте этим шагам:
-
Проверка наличия библиотеки:
Убедитесь, чтоlibxcb.so.1
действительно присутствует в системе:ls /usr/lib/x86_64-linux-gnu/libxcb.so.1
Если библиотеки нет, установите пакеты, которые включают данную библиотеку:
sudo apt install --reinstall libxcb1
-
Удаление конфликтующего ПО:
Если проблема началась после установкиicaclient
, удалите его:sudo apt remove --purge icaclient
-
Проверка и обновление snap:
После удаления проблемного пакета, обновите и перезапуститеsnap
:sudo snap refresh
-
Поочередное отключение и включение core snaps:
Это шаг способствует обновлению и реконфигурацииsnap
–окружения:for core in $(snap list | grep core | awk '{print $1}'); do sudo snap disable $core && sudo snap enable $core done
-
Проверка и настройка переменных окружения:
Убедитесь, что переменные окружения, указывающие пути поиска библиотек, правильно настроены. Проверьте и измените файлы, такие как.bashrc
или.profile
, если необходимо:export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
-
Логирование и трассировка:
Если проблема не устранена, используйтеstrace
для более детального логирования поведенияsnap
:strace -e trace=openat -o snap_trace.log /usr/bin/snap list
Анализ логов поможет определить, где именно система пытается найти библиотеку.
Эти шаги должны помочь в решении вашей проблемы, связанной с библиотекой libxcb.so.1
. Напомню, что любые изменения в системе следует выполнять с осторожностью, особенно если это касается удаления или обновления системных библиотек и пакетов. Внимательное тестирование изменений гарантирует, что проблема будет решена без влияния на другие аспекты работы системы.