debian11 装了xfce桌面,刚开始好好的,用xrdp连接都正常,然后装了lnmp1.8后,发现连接上 输入账号密码以后,直接闪退。 (最初先装的LNMP 然后 xfce就怎么都装不上去)
处理过程如下:
先看错误日志
cat ~/.xsession-errors
Xsession: X session started for root at Sat 27 Nov 2021 11:59:35 AM CST
WARNING: tempfile is deprecated; consider using mktemp instead.
dbus-update-activation-environment: setting DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
dbus-update-activation-environment: setting DISPLAY=:10.0
localuser:root being added to access control list
dbus-update-activation-environment: setting GTK_MODULES=gail:atk-bridge
dbus-update-activation-environment: setting QT_ACCESSIBILITY=1
/usr/bin/x-session-manager: X server already running on display :10.0
xfce4-session: symbol lookup error: /lib/x86_64-linux-gnu/libcairo.so.2: undefined symbol: FT_Get_Var_Design_Coordinates
通过谷歌查询 FT_Get_Var_Design_Coordinates. 这个函数应该来自 FreeType。
然后查找库
find / -name ‘libfreetype.so*’
/usr/local/freetype/lib/libfreetype.so.6.12.6
/usr/local/freetype/lib/libfreetype.so.6
/usr/local/freetype/lib/libfreetype.so
/usr/lib/x86_64-linux-gnu/libfreetype.so.6.17.4
/usr/lib/x86_64-linux-gnu/libfreetype.so.6
找到了两个路径,那一定是系统调用的时候调用了一个没有此函数的库,分别查一下相关函数
nm -s -D /usr/local/freetype/lib/libfreetype.so | grep FT_Get_Var_Design_Coordinates
nm -s -D /usr/lib/x86_64-linux-gnu/libfreetype.so.6 | grep FT_Get_Var_Design_Coordinates
发现6.12.6 的没有此函数,那么我直接
mv /usr/local/freetype /usr/local/freetypebak
再次登录 已经正常。