Cygwin 安装后脚本错误(退出代码 254)

Cygwin 安装后脚本错误(退出代码 254)

我正在尝试安装 cygwin,但是出现以下安装后脚本错误:

Package: _/base-files
    base-files-mketc.sh exit code 254
    base-files-profile.sh exit code 254

我在 Google 上找不到任何有用的信息。我发现了其他几个安装后错误讨论,建议删除 Cygwin 并清除注册表、重新启动并重新安装,但我试过了,没有成功。

有人遇到过这种情况吗?如果遇到过,如何解决?

编辑:这是安装日志

答案1

两个步骤:

  • 禁用防病毒软件
  • 禁用防火墙

如果这有帮助,请打开防火墙并将所有 cygwin 文件夹添加到防火墙白名单。

如果没有,请阅读

如何修复 fork() 失败?

不幸的是,Windows 不使用类 UNIX 操作系统中的 fork/exec 进程创建模型,因此 Cygwin 很难实现可靠且正确的 fork(),这可能导致错误消息,例如:

  • 无法将 somedll 重新映射到与父级相同的地址
  • 无法分配堆
  • 等待 dll 加载时死亡
  • child -1 - 在初始化之前等待 longjmp 而死亡
  • 状态访问违规
  • 资源暂时不可用

上述错误的潜在解决方案:

  • 重新启动尝试(但失败了)使用 fork() 的任何进程。有时 Windows 会设置比平常更不利于 fork() 的进程环境。
  • 确保已删除(而不仅仅是禁用)计算机上的所有软件布洛达
  • 如果您的操作系统和 CPU 支持,请从 32 位 Cygwin 切换到 64 位 Cygwin。有了更大的地址空间,fork() 失败的可能性就更小。

  • 尝试将环境变量 CYGWIN 设置为“detect_bloda”,这将启用一些额外的调试,这可能会指示出哪些其他软件导致了问题。

    这封邮件了解更多信息。

  • 强制进行完整变基:运行 rebase-trigger fullrebase,退出所有 Cygwin 程序并运行 Cygwin 设置。

    默认情况下,Cygwin 的安装程序会自动对新安装的文件执行增量变基。强制执行完全变基会导致在执行变基之前清除变基映射。

    有关更多详细信息,请参阅 /usr/share/doc/rebase/README 和 /usr/share/doc/Cygwin/_autorebase.README。

    请注意,安装新的软件包或更新现有的软件包会取消 rebase 的效果,并且经常导致 fork() 失败再次出现。

    查看流程创建用户指南的部分由于技术原因,使 fork() 可靠地工作非常困难。

答案2

您尝试过使用其他镜子吗?

该问题可能与镜像有关。错误代码可能与 ssh 终止有关。

来源:PythonAnywhere 论坛

答案3

前几天当我尝试在 Windows 10 上安装 Cygwin 时偶然发现了同样的问题。

在研究该问题时,我在安装日志中发现了一些关于地址不匹配的信息(抱歉,我没有确切的措辞 - 我不会重现该错误......)。这让我想到它可能与 ASLR(一种增强系统抵御恶意软件的技术)有关。

所以我关闭了 ASLR。这样做之后,我可以毫无问题地安装 Cygwin。

如上所述,这是在 Windows 10 上进行的。但据我所知,Windows 7 也具有 ASLR,因此这很可能是问题的根源。如果您下载了 EMET,您可以通过 UI 在 Windows 中将其关闭,或者通过注册表 (看这里)。因此,您可以尝试一下,看看 Cygwin 是否安装正确。

请注意,我不建议关闭 ASLR;我认为它是一种重要的恶意软件防护。不过,在 Windows 10 中,你可以启用 ASLR每个可执行文件,这意味着您可以在系统范围内启用它,并为 Cygwin 可执行文件设置例外。我几乎确信您可以在 Windows 7 中实现相同的功能。

简而言之,你可以

  • 关闭系统范围内的 ASLR 并安装 Cygwin

  • 再次在系统范围内启用 ASLR

  • 如果 Cygwin 安装没有失败,除了 ASLR 的 Cygwin 可执行文件

虽然最后一步可能意味着会产生几十个例外,但对我来说,这是值得的。

相关内容