Cygwin 安装:缺少 /usr/bin 和 /usr/local/sbin 目录

Chu*_*ati 3 unix windows cygwin

我有 Windows 7 64 位 PC。我刚刚在c:\cygwin64目录中安装了 Cygwin 最新版本 2.6.0 。在安装过程中我要确保我选择了这些包:gcc-coremakeopensslsshvimemacsscpftp。安装成功完成。

现在我正在查看c:\cygwin64目录,发现缺少一些目录:

  • /bin (目录存在)
  • /sbin (目录存在)
  • /usr/bin (目录不存在)
  • /usr/sbin (目录存在)
  • /usr/local/bin (目录存在)
  • /usr/local/sbin (目录不存在)

那么为什么/usr/bin/usr/local/sbin目录丢失了?它们过时了吗?

谢谢

pak*_*pak 6

正如埃里克所说,c:\cygwin64\usr\bin这真的c:\cygwin64\bin是你的情况。至于/usr/local/sbin/,也许不会从这些包中安装任何东西,所以它没有被创建。

根据Cygwing 目录结构常见问题解答

4.33. 为什么奇怪的目录结构?为什么 /lib 和 /usr/lib(和 /bin、/usr/bin)指向同一件事?

为什么使用挂载而不是符号链接?

我可以使用磁盘根目录(例如 C:)作为 Cygwin 根目录吗?为什么这令人气馁?

在默认位置进行全新安装后,您的挂载点将如下所示:

 bash$ mount  
 C:\cygwin\bin on /usr/bin type ntfs (binary,auto)  
 C:\cygwin\lib on /usr/lib type ntfs (binary,auto)  
 C:\cygwin on / type ntfs (binary,auto)  
 C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)  
Run Code Online (Sandbox Code Playgroud)

请注意,/bin 和/usr/bin 指向相同的位置,/lib 和/usr/lib 也是如此。这是有意为之,除非您真的知道自己在做什么,否则不应撤消这些挂载。

各种应用程序和软件包可能希望安装在 /lib 或 /usr/lib(类似 /bin 或 /usr/bin)中。与其区分它们并试图跟踪它们(可能需要偶尔的重复或符号链接),不如决定只维护一个实际目录,并使用等效的方式访问它。

为此目的曾考虑过符号链接,但由于它们并不总是适用于 Samba 驱动器而被驳回。此外,挂载的处理速度更快,因为不需要访问磁盘来解决它们。

请注意,非 cygwin 应用程序不会观察 Cygwin 挂载(或与此相关的符号链接)。例如,如果您使用 WinZip 解压 Cygwin 包的 tar 分发包,它可能不会安装到正确的 Cygwin 路径。所以不要这样做!

强烈建议不要使 Cygwin 根目录与驱动器的根目录相同,除非您知道自己在做什么并准备好应对后果。如果 Cygwin 层次结构与 C: 隔离,通常更容易维护它。一方面,您可以避免与可能创建(例如)\bin 和\lib 目录的其他(非cygwin)应用程序发生冲突。(也许您现在没有安装类似的东西,但谁知道您将来可能添加的东西?)