Cygwin:man 不再起作用

Cygwin:man 不再起作用

我在 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)上,路径开头的双斜杠表示网络共享。这导致命令失败。

相关内容