You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于man工具源码查询及替换gzip为xz压缩的技术问询

嘿,刚好我在Fedora上研究过man工具的细节,来帮你解答这两个问题:

1. 获取GNU man工具的源码

你用的Fedora是基于GNU生态的,它自带的man工具来自man-db项目——这是当前主流GNU/Linux发行版使用的man实现(包含了你提到的配置读取、索引管理、manpath遍历等核心逻辑)。

获取源码有两种便捷方式:

  • 用Fedora的包管理器直接拉取源码包:运行 dnf download --source man-db,就能得到对应版本的源码rpm包,解压后就能看到完整代码。
  • 直接从man-db的官方代码仓库克隆:你可以在GNU的代码托管平台找到它的仓库,克隆下来就能查看最新的实现。
2. 让man支持xz压缩的手册页

你的困惑其实来自旧版man手册的滞后说明——现在的man-db早就支持xz、bzip2等比gzip压缩率更高的格式了。

具体操作分两种场景:

  • 直接使用xz压缩的man页:不用额外配置,只要你的man-db版本足够新(Fedora自带的版本肯定满足),把man手册页用xz压缩后命名为xxx.N.xz(N是手册章节号),man命令会自动识别.xz后缀,调用xz解压并正常显示内容。你可以找个测试页试试:比如复制/usr/share/man/man1/ls.1.gz,用unxz解压后再xz压缩成ls.1.xz,然后运行 man ./ls.1.xz,就能验证效果。
  • 配置默认压缩工具(用于生成/manage man页):如果想让mandb(man的索引工具)优先处理xz,或者生成man页时默认用xz压缩,可以修改/etc/man_db.conf(Fedora上是这个路径,有些系统是/etc/manpath.config),找到压缩工具对应的配置段,添加或调整顺序:
    # 新增xz的支持配置
    COMPRESS	xz	.xz
    # 如果想让xz优先,可以把它放在gzip前面
    COMPRESS	gzip	.gz
    
    保存配置后,mandb更新索引时就会识别并处理xz格式的手册页了。

另外补充一句:man手册里那段“假定为gzip压缩”的描述是旧内容,针对的是早期仅支持gzip的版本,现在的实现已经扩展了多种压缩格式的支持,不用被这段说明限制。

内容的提问来源于stack exchange,提问作者randruc

火山引擎 最新活动