Haskell 如何解决由于路径长度限制而导致的Windows上的cabal沙盒构建错误?
有一段时间,我对在阴谋集团沙箱中进行安装/构建常常在我的Windows机器上失败这一事实感到困惑。我最终发现,故障是由某些路径超出了Haskell 如何解决由于路径长度限制而导致的Windows上的cabal沙盒构建错误?,haskell,cabal,cabal-install,gnu-toolchain,Haskell,Cabal,Cabal Install,Gnu Toolchain,有一段时间,我对在阴谋集团沙箱中进行安装/构建常常在我的Windows机器上失败这一事实感到困惑。我最终发现,故障是由某些路径超出了MAX\u PATH限制(路径有效限制为255个字符)造成的 作为一个具体的例子,如果我试图cabal在cabal沙箱文件夹中安装data-default-instances-old-locale-0.0.1,它就会失败。在这个过程中的某个时刻,阴谋集团调用ar.exe,其路径类似于dist/dist-sandbox-72eb259b\build\libHSdata
MAX\u PATH
限制(路径有效限制为255个字符)造成的
作为一个具体的例子,如果我试图cabal在cabal沙箱文件夹中安装data-default-instances-old-locale-0.0.1
,它就会失败。在这个过程中的某个时刻,阴谋集团调用ar.exe
,其路径类似于dist/dist-sandbox-72eb259b\build\libHSdata-default-instances-old-locale-0.0.1-6jcjjar25tk4x3nhhhhjfm.a-45644\libHSdata-default-instances-old-locale-0.0.1-6jcjcjar25tk4x3nhhhhjfm.a
。这是相对于temp目录下的一个工作文件夹(我已经简单地设置为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-6jcjjjar25tk4x3njhhhjfm.a-18744\libHSdata-default-instances-old-locale-0.0.1-6jcjar25tk3njhjhjhjfm.a
最终路径长度为272个字符,远远超过255个限制
在Windows上处理较长的路径是可能的,但这并不简单,而且在任何情况下,ar似乎都没有做任何必要的事情来处理它们(这并不奇怪,因为它只是GNU工具链的一个端口)
我感觉在可预见的将来情况会如此,但也许有人能想出解决办法?这在最近发布的cabal install中得到了修复。升级应该可以解决问题。看来您是正确的。我执行了
cabalinstall-cabalinstall
,此后我能够执行之前失败的命令。是否在某个地方记录了此修复?我很想知道它是如何修复的。你可以在这里看到血淋淋的细节:。请注意,最初的修复实际上导致了一个更糟糕的bug,cabal无法安装任何东西,请参阅: