После моего последнего dist-upgrade моей тестовой системы Debian X отказывается запускаться. Я вижу следующую ошибку (которая появляется при запуске gnome-session):
ошибка поиска символа: /usr/lib/i386-linux-gnu/libcairo.so.2: неопределенный символ: glXGetProcAddress
Кроме того, даже texlive отказывается обновляться с той же ошибкой (вызванной luatex).
Я не знаю, как исправить эту проблему: возможно ли, что отсутствует одна важная библиотека? Если нет, то что еще может вызвать эту проблему?
решение1
@peterph'sотвечатьбыл очень близок к проблеме.
Видеокарта была Matrox G550 (mga), но раньше была установлена nvidia и некоторые компоненты glx оставались в /usr/lib/tls
.
У меня нет опыта работы с драйвером mga, но, насколько я понимаю, фирменной реализации glx не существует, поэтому мы попытались заставить работать mesa.
После установки libgl1-mesa-glx
и glx-alternative-mesa
проверки libcairo
с помощью ldd
, затем dpkg -S
с помощью полного пути, чтобы понять, из каких пакетов были выбраны libGL
и libGLcore
разрешены с помощью ldd
, просто чтобы проверить, что это mesa, обе библиотеки не были ни в одном пакете.
Удалил эти библиотеки и на этот раз ldd
показал, что используются правильные библиотеки Mesa. В этот момент я попросил @zar проверить еще раз, и он ответил, что на этот раз все apt-get -f install
было выполнено правильно и gdm3
без ошибок.
Даже если это ошибка, я думаю, мы не сможем выполнить ни один запрос об ошибке, так как не Debian-совместимый драйвер nvidia сломалдоговор.
Установка фирменных драйверов все еще возможна.зло, я не понимаю, почему они предпочитают заниматься своим собственным дерьмом supposed-to-install-everywhere.run
вместо того, чтобы попытаться наладить сотрудничество хотя бы с крупными дистрибутивами (что, вероятно, было бы бесплатным).
решение2
Ошибка означает, что в вашей установке Cairo отсутствует зависимость run-time link - судя по имени символа, это пакет реализации OpenGL (возможно, Mesa), который отсутствует/поврежден. Переустановка Cairo может помочь, при условии, что менеджер пакетов исправит зависимости пакетов, которые, вероятно, являются причиной ошибки, и установит все отсутствующие предварительные требования.
Вы также можете запустить ldd /usr/lib/i386-linux-gnu/libcairo.so.2
и проверить наличие строк, содержащих => not found
- это покажет вам, какая библиотека отсутствует в вашей системе, найти пакет, содержащий ее, и (пере)установить ее.
Это также типичный синдром для ситуаций, когда зависимые пакеты обновляются без обновления их зависимостей (что может легко произойти, например, с проприетарными драйверами, что, как оказалось, имело место в данном случае).
решение3
В номенклатуре RH: (я также не знаю формат упаковки Debian)
Я попробовал и нашел следующее:
# sudo **'yum whatprovides /usr/lib/libGL.so.1'**
урожайность:*mesa-libGL-9.2.5-1.20131220.fc20.i686 : Mesa libGL runtime libraries and DRI drivers*
А.
ldd
печатаетЗависимости библиотеки общих объектов, так что это не инструмент для работы, ЕСЛИ только нет проблем с линковкой. Я ничего не нашел.
Я посмотрелДЕЙСТВИТЕЛЬНО ТРУДНОи нашелэтот вопрос
2. Остальное было легко:
# nm -D /usr/lib/libGL.so.1 |grep 'glXGetProcAddress'
00014310 T glXGetProcAddress
00014310 T glXGetProcAddressARB
3. Я получилAdobe Readerбежать за этим.
решение4
Gnome
написаны в соответствии с GTK+ library
и это зависит от cairo
библиотеки, которая cairo library
возникла при обновлении, пожалуйста re-install
, скачайте ее не с локального компьютера, пожалуйста, снова загрузите ее. Используйте apt-cache
и ищите каждыйcairo packages