我在 Windows 7 Pro 的默认文件夹 (C:\cygwin) 中安装了 cygwin。直到几个月前(不确定多久),手册页工作正常。后来进行了更新,现在man anything
除了 之外什么都不显示(END)
。我尝试过从我的常规用户帐户,也尝试过从提升的管理员帐户。没有成功。
我很确定 Comodo Firewall 的 Defense+ 启发式方法通过对更新组件进行沙盒处理破坏了安装(D+ 每次都会对 autorebase 和 setup_x86 发出警告),但我知道它不会主动干扰手册页的显示(我关闭了它,但问题仍然存在)。所以手册系统本身坏了。有什么想法可以修复它吗?
注意:我也尝试运行 makewhatis,但没有成功。
答案1
看来我在 freenode 上 #cygwin 频道的 SpaghettiCat 的帮助下自己解决了这个问题。在找出问题之前我检查了以下事项:
- 我检查了 $PAGER 和 $MANPAGER 的值(它们是空白的)
- 我尝试将两者的值都设置为“较少”(没有乐趣)
- 我尝试通过以下方式将已知的手册页提供给 man:(
man /usr/share/man/man8/fdisk.8.gz
仍然没有成功) /etc/man.conf
我用已知可以正常工作的 cygwin 安装中的一个副本替换了它的副本。(没有成功)
此时,很明显,问题不仅仅出在 man 上。我想我必须丢弃我的安装。然而,我发现了命令cygcheck -c
,并运行了它。结果是:我的一半软件包都是“不完整的”,包括 groff。感谢 Microsoft System Restore!
运行 cygwin 的 setup_x86.exe 并重新安装 borked 包后,一切都正常。
答案2
我遇到了完全相同的问题,我设法将其追溯到损坏的cygwin1.dll
。我发现出于某种原因(bash
在运行时运行安装程序?)我的文件夹中有 2 个文件/bin
,较新的文件被禁用:
* cygwin1.dll (3148035 bytes, v1.7.30, APIv-0.272)
* cygwin1.dll.new (3156896 bytes, v1.7.32, APIv-0.274)
为了修复它,我必须重新安装该软件包base/cygwin: the UNIX emulation engine
。然后我运行mandb
,以确保万无一失...
(请注意,cygcheck -c
没有报告任何问题!)
答案3
MANPATH
我通过将其设置为空字符串 ( ),然后对其原始内容进行故障排除,解决了同样的问题MANPATH=
。结果发现,该条目/usr/share/man
以双斜杠开头。在 Unix 上,路径中任何地方的多个斜杠都是不允许的。在 Windows(显然还有 CygWin)上,路径开头的双斜杠表示网络共享。这导致命令失败。