Linux Mint 21.1编译Glib 2.72.4后GIO不支持metadata属性设置求助
在Linux Mint 21.1系统下自行编译Glib 2.72.4版本(源码通过apt-get source获取),编译命令为:
meson build cd build ninja
也曾尝试meson -DAttr=true build但未解决问题。
使用编译后的gio执行以下命令时出错:
gio set "$(xdg-user-dir PROJECTS)" "metadata::custom-icon-name" folder-system
错误信息:
gio: Setting attribute metadata::custom-icon-name not supported
系统预装的同版本gio可正常执行该命令。此外,执行gio info --query-writable "$(xdg-user-dir PROJECTS)"时,编译后的版本输出缺少metadata (string, Copy with file, Keep with file when moved)行,其余内容与预装版本一致。
检查并安装依赖库:确保编译时所需的
libattr1-dev已安装,这是支持xattr/metadata功能的关键依赖。执行:sudo apt install libattr1-dev然后删除原build目录,重新配置编译:
rm -rf build meson build cd build ninja重新运行时注意查看meson输出中是否有
Has attr support: yes的提示,确认依赖检测通过。对比预装版本的编译配置:系统预装的Glib是通过debian打包脚本编译的,带有官方优化和功能启用选项。可以查看源码目录下的
debian/rules文件,里面包含了预装版本的编译参数,比如是否启用了xattr、metadata相关的配置项,将这些参数添加到自己的meson命令中。直接使用debian打包流程编译:利用
apt-get source获取的源码自带debian打包配置,直接执行以下命令编译出与预装版本一致的deb包:cd glib-2.72.4 dpkg-buildpackage -us -uc编译完成后,在上级目录找到生成的deb包,用
dpkg -i安装即可,这样编译出的版本会和系统预装版本功能完全一致。验证编译产物的依赖链接:检查编译后的
gio是否链接了libattr库,执行:ldd ./build/gio/gio | grep libattr如果没有输出,说明编译时未启用attr支持,需重新检查依赖和meson配置参数。
内容的提问来源于stack exchange,提问作者tomm81

