我最近安装了 Fedora 26。我最近进行的一些 dnf 更新引入了 zfs-fuse,许多软件包现在都依赖于 zfs-fuse(qemu*、gluster*、libvirt*、gnome-boxes 等)。
我正在寻找这种依赖性的历史及其背后的基本原理。
由于 zfs-fuse 和 zfs (ZoL) 是冲突的软件包,因此很难安装基于内核的 zfs (zfs-on-linux)。尝试删除 zfs-fuse 也需要删除所有依赖包。
第二个问题 - 最近是否有基于内核的 zfs 和 zfs-fuse 的性能比较?这与我的主要问题相关 - 如果 zfs-fuse 在性能方面基本上等同于内核 zfs,那么让大量软件包依赖于 zfs-fuse 可能就不那么成问题了。但如果 ZoL 和 zfs-fuse 之间存在显着差异,我希望能够使这些包能够共存或至少可以互换。
答案1
至少在 Fedora 27(现在是测试版,下周发布!)中,我在规范文件中看到了这一点:
%if %{with_storage_zfs}
# Support any conforming implementation of zfs. On stock Fedora
# this is zfs-fuse, but could be zfsonlinux upstream RPMs
BuildRequires: /sbin/zfs
BuildRequires: /sbin/zpool
%endif
这意味着这是使用文件依赖关系,特别是可以使用替代实现。您应该能够使用dnf swap zfs-fuse zfs
备用 RPM 来替换 Fedora RPM。
我认为大概我们应该转向使用软依赖项(Recommends
而不是Requires
)来处理其中的许多项,但显然 libvirt 并不能非常优雅地处理运行时丢失的驱动程序。