Рейтинг:2

Rofi: ошибка поиска символа: libgdk_pixbuf-2.0.so.0: неопределенный символ: g_task_set_name. Но он есть!

флаг in

Я использую Ubuntu 20.04 LTS и только что установил Awesome Tiling WM. Я сталкиваюсь с проблемой «ошибка поиска символа» при установке Rofi, хотя я могу найти символ в библиотеке, в которой он ищет, и я не знаю, что с этим делать.

Вот что я сделал:

Я устанавливаю Рофи с помощью

~$ sudo apt установить рофи

Но когда я запускаю его, я получаю

~$ рофи
rofi: ошибка поиска символа: ~/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0: неопределенный символ: g_task_set_name

Тем не менее, символ g_task_set_name является в библиотеке по этому адресу:

~$ nm -D --with-symbol-versions ~/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0 | grep g_task_set_name
             U g_task_set_name

(Я видел в другом месте, что версия этих символов имеет значение, но я не вижу никакой версии после этого символа. Я не знаю, что это значит, некоторые другие символы в этой библиотеке показывают версию после имени.)

Кроме того, когда я запускаю rofi из папки с библиотекой, проблем нет:

~/anaconda3/envs/py37/lib$ рофи
Рофи не знает, что показать.
Пожалуйста, укажите режим, который вы хотите показать.

рофи-шоу {режим}

Включены следующие моды:
 * окно
 * бег
 * сш

Можно включить следующее:
 * оконный компакт-диск
 * пьяный
 * комби
 * ключи

Чтобы активировать режим, добавьте его в список модификаций в настройках модификаций.

Напоследок хочу добавить rofi к привязке клавиш в awesomeWM. Таким образом, обходной путь может заключаться в том, чтобы команда всегда запускалась из этой папки.Но я не знаю, как это сделать.

Пытаясь решить проблему более тщательно, я еще больше запутался. Я нахожу ту же библиотеку в двух других местах, одну для 32-битной и одну для 64-битной.

~$ dpkg -S libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.4000.0
libgdk-pixbuf2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0:i386: /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0:i386: /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0.4000.0

Символ ни в одной из этих библиотек:

~$ nm -D --with-symbol-versions /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 | grep g_task_set_
                 U g_task_set_return_on_cancel
                 U g_task_set_source_tag
                 U g_task_set_task_data

(с идентичным выводом для библиотеки в папке i386). Но rofi по-прежнему запускается из 64-битной папки:

/usr/lib/x86_64-linux-gnu$ rofi
Рофи не знает, что показать.
Пожалуйста, укажите режим, который вы хотите показать.

    рофи-шоу {режим}

...

Но не из 32-битной папки:

/usr/lib/i386-linux-gnu$ rofi
rofi: ошибка поиска символа: /home/martin/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0: неопределенный символ: g_task_set_name

Я хотел бы помочь заставить Rofi работать, желательно путем решения проблемы, но обходные пути тоже были бы хороши.

Я также был бы признателен за помощь, просто чтобы понять, что происходит. Я не понимаю, как rofi занимается поиском библиотек и символов. Почему он не может найти символы в библиотеках? И почему rofi запускается только в двух из трех папок, содержащих библиотеку, хотя только в одной из этих двух папок есть библиотека с правильным символом?

заранее спасибо

N0rbert avatar
флаг zw
Вы должны исключить Anaconda из PATH и LD_LIBRARY_PATH, а затем повторить попытку запуска rofi. Или просто деактивируйте Anaconda на один запуск.
флаг in
Оно работает! благодарю вас! Я зашел в .bashrc и удалил строку, в которой я добавил все папки anaconda в LD_LIBRARY_PATH.Но теперь я предполагаю, что будут пакеты Python, которые использовали эти пути к библиотекам и не найдут их снова. Может быть, это можно решить, добавив вместо этого пути к библиотекам в PYTHONPATH?
N0rbert avatar
флаг zw
Я не уверен насчет PYTHONPATH, поэтому написал ответ на основе комментария выше.
Рейтинг:1
флаг zw

Вы должны исключить Анаконду из $ПУТЬ и $LD_LIBRARY_PATH переменные среды, а затем повторите попытку запуска рофи.

Ответить или комментировать

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