注:此文是由Dominic Della Valle,于2018年4月23日,发表在IPFS官网博客上的文章,由IPFS中文社区翻译。
Go-ipfs 是基于Go语言而开发的,因此,它可以兼容在一些平台之间。然而,这种语言并非兼容所有的平台。
在过去几周,我们通过修正错误和移除不一致性,很好的微调了在windows下的体验。
在这个贴子里面,我们将再仔细研究一下这些问题,然后,在发布下一个go -ipfs v0.4.15版本之前,看看我们会通过哪些工作来解决这些问题。
如果你不是windows或者go-ipfs的用户,你也许也会对我们遇到的这些问题以及我们将如何解决这些问题感兴趣。
如果你计划移植go-ipfs到一个新的平台上,或者在你自己的项目中遇到了不兼容的情况。那么,2018年第4808号的windows方案将在一些特别的方面会给你一些启发。它展现了一个更清晰的关于我们是如何发现,讨论和处理这些平台问题的。
记录输出
当前问题:
这些在windows下的输出是充满了非原生的控制特征。这使得,当错误格式的记录分享给我们的时候,无论是用户还是开发者,都很难去阅读我们的输出。
解决方案:
我们已经添加了将这些字符翻译为本地等价物的方法。不会再有更多与字符颜色或光标放置有关的怪异现象,同时,文字会更清楚,线条也不会再重叠。这样,用户及开发者用起来都会感到稍微更舒服一点。
创建
当前问题:
在Windows本身上去创建Windows的二进制时,会有多个问题,比如:没有声音的问题,对用户提供的参数缺乏尊重问题,处理依赖性的不一致等等问题。
解决方案:
必须得对go-ipfs程序,gx,以及我们第一和第三方的依赖关系,甚至是G语言本身等,去做多个修正。现在这种编码体验应该和其他平台相一致。另外,这些文档已经重新写过,来阐明这个过程并添加一个涵盖Windows的特定问题,以及如何处理它们的部分。
临时文件的读取问题
当前问题:
当试图从临时位置去移动数据区块时,目标地址是毁坏了的。 这导致了“访问被拒绝”的错误,以及在工作的文件目录中不可预期的产生了垃圾文件。
解决方案:
我们目前正在进行审计,目的是找出可能造成内存毁坏的问题在哪儿。我们已经发现并解决了上述windows下特定的问题,我们的这个审计行动应该是取得了像预期一样的成功。
文件输出名称
当前问题:
在解压IPFS到其他文件系统的过程中,并没有使用过滤器。这导致了在使用ipfs get时候,出了很多问题。
1,从ipfs中解压内容失败可能是因为原始系统文件的限制
FAT32,NTFS,ReFS,和Windows本身,所有的都强加了他们自己的路径限制。如果一个哈希包含一个不合规的路径,像ipfs get这样的操作将会失败。在上面的图片中,XKCD存档不能在windows上下载,是因为路径“1031-s 键盘美洲豹”是以空格结束的。
2,包含恶意的文件路径哈希值将被提取
对用户来说,如果目标文件的地址是提前已知,并且用户有改写文件的权限,通过修改哈希值来避免解压根目录和改写文件是可以实现的。
解决方案:
现在我们考虑了这些限制,并将路径名转换为平台合法路径,这些路径仅限于其哈希根。
STDIO
当前问题:
stdin的支持是明确的在go-ipfs下被限制了的,在其他平台阻止基本的IPC。
解决方案:
stdin支持已被添加到go-ipfs的Windows版本中,该版本允许您将ipfs放置在pipeline中的任何位置。
其他方面
我们还需要做更多的工作来增强Windows上go-ipfs的体验。
通常来说,是要解决可移植性的问题, 我们计划继续在这些领域取得进展。 如果你有兴趣贡献或者只关注进度,欢迎随时查看我们的相关进度。
想帮助我们?
如果您想为IPFS项目做出贡献,但不知道从哪里着手? 您可以参照如下几个地址:
在我们的论坛板块中,查看带有“需要帮助”标签的问题: -https://waffle.io/ipfs/go-ipfs?label=help%20wanted
加入IPFS All Hands电话,介绍您自己并让我们知道您想要提供什么支持:
-https://github.com/ipfs/pm/#all-hands-call
通过下面的lianjie加入我们的讨论:
-http://discuss.ipfs.io/
您还有其他问题吗?
注释
https://discuss.ipfs.io/t/a-look-at-go-ipfs-on-windows/2779
领取专属 10元无门槛券
私享最新 技术干货