我是 Ubuntu 新手,我需要创建一个基于 FUSE 的文件系统。我在网上看到过很多例子,但我不明白这些例子之间的区别。到目前为止,我见过的一些例子包括 C 程序,所以:
- 我很好奇为什么用 Python 创建单元测试,特别是
py.test
模块。 - 一些 FUSE 文件系统档案包含内核源代码,而有些则不包含。我不明白为什么这样做。
- 在官方下载页面我研究了所有的例子。请帮我理解 fuse-2.9.7.tar.gz、fuse-2.9.7.tar.gz.asc 和源代码 (zip)、源代码 (tar.gz) 之间的区别。
答案1
三大问题
我将您的问题分为您关心的三个方面。虽然我无法帮助您编写 FUSE 文件系统,但我可以回答这 3 个问题:
- 引用维基百科:在计算机编程中,单元测试是一种软件测试方法,通过测试源代码的各个单元、一个或多个计算机程序模块集以及相关的控制数据、使用程序和操作程序,以确定它们是否适合使用。
关于为什么使用 Python:这样做是因为有些(如果不是全部)编程语言包含单元测试框架。框架允许程序员使用已经存在的东西来扩展和测试他们的代码。Python 是程序员为 libfuse 项目选择的语言。参见Python 漫游指南:测试你的代码。
- 来自自述文件.md文件:
FUSE(用户空间文件系统)是用户空间程序将文件系统导出到 Linux 内核的接口。FUSE 项目由两个组件组成:fuse 内核模块(在常规内核存储库中维护)和 libfuse 用户空间库(在此存储库中维护)。libfuse 提供了与 FUSE 内核模块通信的参考实现。
FUSE 文件系统通常作为与 libfuse 链接的独立应用程序实现。libfuse 提供挂载文件系统、卸载文件系统、从内核读取请求以及发回响应的函数。libfuse 提供两种 API:一种是“高级”同步 API,另一种是“低级”异步 API。在这两种情况下,来自内核的传入请求都使用回调传递到主程序。使用高级 API 时,回调可能使用文件名和路径而不是 inode,并且请求的处理在回调函数返回时完成。使用低级 API 时,回调必须使用 inode,并且必须使用一组单独的 API 函数明确发送响应。
关于您的问题,所有档案都应该包含 C 文件。如果您下载的内容不包含 C 文件,则它可能不是 FUSE 档案。
所有基于 Linux 的源代码始终采用 格式
<packagename-Ver.si.on>.<compression format>
。.tar.gz
在 Linux 中很常见。它是GZipped Tar 存档. 阅读man tar
并man gzip
获取更多信息。.zip
在 Windows 中很常见。它是压缩文件。它的 Linux 等效命令有两个。阅读man zip
和man unzip
。.asc
通常被称为ASCII 校验和。此文件用于验证您下载的文件是否损坏。要验证这一点,请使用GNU 隐私卫士程序。请参阅UNIX / Linux:PGP TarBall 文件签名密钥验证举些例子。
关于FUSE本身
请注意,您可能不需要编写自己的 FUSE 文件系统,因为大多数发行版都包含 FUSE 包。Ubuntu 就是其中之一。请参阅FUSE 的官方 Ubuntu 存储库页面,并使用 进行安装sudo apt-get-update && sudo apt-get install fuse
。