Вопрос или проблема
Я разрабатывал программу, которая использует библиотеку GNU readline для лучшей обработки ввода. Я установил пакет и программа работала отлично. Однако я понимаю, что libreadline
имеет испорченную связь.
Например, когда я пытаюсь сделать коммит кода:
git commit -m "commit"
ошибка: gpg не смог подписать данные:
/usr/bin/gpg: ошибка поиска символов: /usr/local/lib/libreadline.so.8: неопределенный символ: UP
фатальная ошибка: не удалось записать объект коммита
Проблема более серьезная, так как libreadline
нарушает работу многих основных утилит, таких как gpg
, awk
, gawk
, dnf remove
на моей машине с Fedora.
Я пытаюсь следовать некоторым ответам из этого поста на StackOverflow. Тем не менее, ничего из этого не работает из-за испорченных команд. make uninstall
тоже не работает по той же причине.
Вот мой диагноз на данный момент:
$ gawk --version
gawk: ошибка поиска символов: /usr/local/lib/libreadline.so.8: неопределенный символ: UP
$ ldd /bin/gawk
linux-vdso.so.1 (0x00007f1f3c794000)
libreadline.so.8 => /usr/local/lib/libreadline.so.8 (0x00007f1f3c64d000)
libmpfr.so.6 => /lib64/libmpfr.so.6 (0x00007f1f3c590000)
libgmp.so.10 => /lib64/libgmp.so.10 (0x00007f1f3c4ec000)
libm.so.6 => /lib64/libm.so.6 (0x00007f1f3c408000)
libc.so.6 => /lib64/libc.so.6 (0x00007f1f3c217000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1f3c796000)
$ ls /usr/lib | grep ncurses
libncurses.so.6
libncurses.so.6.4
libncursesw.so.6
libncursesw.so.6.4
$ ls /usr/local/lib | grep readline
libreadline.a
libreadline.so
libreadline.so.8
libreadline.so.8.2
Как я могу исправить эти проблемы, оставаясь при этом способным использовать readline? Заранее спасибо.
Ответ или решение
Как исправить проблемы с GNU Readline на Fedora 40?
У вас возникла проблема с библиотекой GNU Readline, которая обрывает линковку и приводит к ошибкам в нескольких утилитах, таких как gpg
, awk
и других. Давайте разберем эту ситуацию и предоставим вам подробный план решения проблемы.
Что произошло?
После установки библиотеки GNU Readline вы столкнулись с ошибками, связанными с символом UP
, что указывает на потенциальные проблемы с версией библиотеки. Ваша система пытается использовать libreadline.so.8
, расположенную в /usr/local/lib
, но при этом не может найти необходимые символы, что приводит к сбоям в других программах.
Шаги для устранения проблемы
-
Проверка системных библиотек:
Убедитесь, что у вас установлена версияreadline
, подходящая для вашей системы. Вы можете проверить наличие установленной библиотеки с помощью следующей команды:rpm -qa | grep readline
-
Удаление локальной библиотеки:
Поскольку библиотека, установленная в/usr/local/lib
, конфликтует с системной, вам необходимо удалить её. Посколькуmake uninstall
не доступен из-за сбоя в командах, используйте:sudo rm -f /usr/local/lib/libreadline.so*
-
Удаление пакетного менеджера DNF:
Если командаdnf
также не работает, попробуйте воспользоватьсяrpm
для удаления:sudo rpm -e readline
Это позволит вам удалить библиотеку напрямую из RPM-базы.
-
Установите библиотеку программы:
После удаления сломанной библиотеки установите правильную версию GNU Readline с помощью:sudo dnf install readline readline-devel
-
Проверка целостности зависимостей:
После изменения библиотек не забудьте проверить целостность системы с помощью следующей команды:sudo dnf check
-
Обновление кэша и перезапуск утилит:
Обновите кэш библиотек, чтобы система могла обнаружить корректные зависимости. Используйте команду:sudo ldconfig
-
Тестирование установленных утилит:
Проверьте, исправлены ли проблемы с помощью повторного запускаgpg
,gawk
, и других использованных вами утилит:gawk --version gpg --version
Если вы всё ещё сталкиваетесь с ошибками, возможно, стоит перезагрузить систему, чтобы принудительно обновить все зависимости и убедиться, что все службы работают корректно.
Заключение
Устранение проблем с библиотеками в Fedora 40 может быть сложной задачей, особенно при конфликтующих версиях библиотек. Однако следуя вышеуказанным шагам, вы сможете избавиться от возникающих ошибок и вернуть свою систему в работоспособное состояние. Если проблема всё еще сохраняется, рассмотрите возможность обращения в поддержку Fedora или на соответствующий форум для получения дополнительных рекомендаций.