由于路径长度限制,我如何解决 Windows 上的 cabal 沙箱构建错误?
How can I work around cabal sandbox build errors on Windows due to path length limitations?
有一段时间我对在 cabal 沙箱中执行 installs/builds 在我的 Windows 机器上经常失败这一事实感到困惑。我最终发现失败是由某些路径超过 MAX_PATH
限制引起的(路径实际上限制为 255 个字符)。
作为一个具体示例,如果我尝试在 cabal 沙箱文件夹中 cabal install data-default-instances-old-locale-0.0.1
,它会失败。在此过程中的某个时刻,Cabal 使用看起来像 dist/dist-sandbox-72eb259b\build\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a-45644\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a
的路径调用 ar.exe
。这是相对于临时目录下的工作文件夹(我已将其设置为 C:\Temp
),因此完整路径为 C:\Temp\data-default-instances-old-locale-0.0.1-18744\data-default-instances-old-locale-0.0.1\dist\dist-sandbox-72eb259b\build\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a-18744\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a
.
最终路径的长度为 272 个字符,远远超过 255 个字符的限制。
可以在 Windows 上处理更长的路径,但这并不简单,而且在任何情况下,ar 似乎都没有做任何必要的事情来处理它们(这并不奇怪,因为它只是GNU 工具链的一个端口)。
我感觉在可预见的未来会出现这种情况,但也许有人可以想出解决办法?
这已在最新版本的 cabal-install 中修复。升级应该可以解决问题。
有一段时间我对在 cabal 沙箱中执行 installs/builds 在我的 Windows 机器上经常失败这一事实感到困惑。我最终发现失败是由某些路径超过 MAX_PATH
限制引起的(路径实际上限制为 255 个字符)。
作为一个具体示例,如果我尝试在 cabal 沙箱文件夹中 cabal install data-default-instances-old-locale-0.0.1
,它会失败。在此过程中的某个时刻,Cabal 使用看起来像 dist/dist-sandbox-72eb259b\build\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a-45644\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a
的路径调用 ar.exe
。这是相对于临时目录下的工作文件夹(我已将其设置为 C:\Temp
),因此完整路径为 C:\Temp\data-default-instances-old-locale-0.0.1-18744\data-default-instances-old-locale-0.0.1\dist\dist-sandbox-72eb259b\build\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a-18744\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a
.
最终路径的长度为 272 个字符,远远超过 255 个字符的限制。
可以在 Windows 上处理更长的路径,但这并不简单,而且在任何情况下,ar 似乎都没有做任何必要的事情来处理它们(这并不奇怪,因为它只是GNU 工具链的一个端口)。
我感觉在可预见的未来会出现这种情况,但也许有人可以想出解决办法?
这已在最新版本的 cabal-install 中修复。升级应该可以解决问题。