在 Linux 上使用 yum 设置 ZFS
创始人
2024-03-02 05:59:01
0

在 Fedora 上使用 yum 仓库来获取最新的 ZFS 特性。

我是一名 Fedora Linux 用户,我每天都会运行 yum upgrade。虽然这个习惯使我能够运行所有最新的软件(Fedora 的四个基础之一的 “First” ,它也做到了),但它也会提醒 ZFS 存储平台和新内核之间的不兼容性。

作为一名开发者,有时我需要最新的 ZFS 分支的新特性。例如,ZFS 2.0.0 包含了一个令人兴奋的新功能,它大大提高了 ZVOL 同步性能,这对我这个 KVM 用户来说至关重要。但这意味着,如果我想使用 2.0.0 分支,我必须自己构建 ZFS。

起初,我只是在每次内核更新后从它的 Git 仓库中手动编译 ZFS。如果我忘记了,ZFS 就会在下次启动时无法被识别。幸运的是,我很快就学会了如何为 ZFS 设置动态内核模块支持 (DKMS)。然而,这个解决方案并不完美。首先,它没有利用强大的 yum 系统,而这个系统可以帮助解决依赖关系和升级。此外,使用 yum 在你自己的包和上游包之间进行切换是非常容易的。

在本文中,我将演示如何设置 yum 仓库来打包 ZFS。这个方案有两个步骤:

  1. 从 ZFS 的 Git 仓库中创建 RPM 包。
  2. 建立一个 yum 仓库来托管这些包。

创建 RPM 包

要创建 RPM 包,你需要安装 RPM 工具链。yum 提供了一个组来捆绑安装这些工具:

sudo dnf group install 'C Development Tools and Libraries' 'RPM Development Tools'

安装完这些之后,你必须从 ZFS Git 仓库中安装构建 ZFS 所需的所有包。这些包属于三个组:

  1. Autotools,用于从平台配置中生成构建文件。
  2. 用于构建 ZFS 内核和用户态工具的库。
  3. 构建 RPM 包的库。
sudo dnf install libtool autoconf automake gettext createrepo \
    libuuid-devel libblkid-devel openssl-devel libtirpc-devel \
    lz4-devel libzstd-devel zlib-devel \
    kernel-devel elfutils-libelf-devel \
    libaio-devel libattr-devel libudev-devel \
    python3-devel libffi-devel

现在你已经准备好创建你自己的包了。

构建 OpenZFS

OpenZFS 提供了优秀的基础设施。要构建它:

  1. git 克隆仓库,并切换到你希望使用的分支/标签。
  2. 运行 Autotools 生成一个 makefile。
  3. 运行 make rpm,如果一切正常,RPM 文件将被放置在 build 文件夹中。
$ git clone --branch=zfs-2.0.0-rc3  zfs
$ cd zfs
$ ./autogen.sh
$ ./configure
$ make rpm

建立一个 yum 仓库

yum 中,仓库是一个服务器或本地路径,包括元数据和 RPM 文件。用户设置一个 INI 配置文件,yum 命令会自动解析元数据并下载相应的软件包。

Fedora 提供了 createrepo 工具来设置 yum 仓库。首先,创建仓库,并将 ZFS 文件夹中的所有 RPM 文件复制到仓库中。然后运行 createrepo --update 将所有的包加入到元数据中。

$ sudo mkdir -p /var/lib/zfs.repo
$ sudo createrepo /var/lib/zfs.repo
$ sudo cp *.rpm /var/lib/zfs.repo/
$ sudo createrepo --update /var/lib/zfs.repo

/etc/yum.repos.d 中创建一个新的配置文件来包含仓库路径:

$ echo \
"[zfs-local]\\nname=ZFS Local\\nbaseurl=file:///var/lib/zfs.repo\\nenabled=1\\ngpgcheck=0" |\
sudo tee /etc/yum.repos.d/zfs-local.repo

$ sudo dnf --repo=zfs-local list available --refresh

终于完成了!你已经有了一个可以使用的 yum 仓库和 ZFS 包。现在你只需要安装它们。

$ sudo dnf install zfs
$ sudo /sbin/modprobe zfs

运行 sudo zfs version 来查看你的用户态和内核工具的版本。恭喜!你拥有了 Fedora 中的 ZFS


via: https://opensource.com/article/20/10/zfs-dnf

作者:Sheng Mao 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

在CentOS 6.5上通...
在CentOS 6.5系统中,通过Yum包管理器安装MySQL是运...
2025-04-27 06:17:02
在CentOS系统中部署l...
在Linux系统,特别是CentOS环境下,进行网络数据包捕获与分...
2025-03-13 09:41:17
如何在CentOS中使用Y...
CentOS中使用Yum管理Autoconf的高效实践 在Cent...
2025-03-05 06:37:37
如何在CentOS上搭建邮...
2、一个域名:这可是关键,就像你的身份证号码一样,独一无二,去正规...
2025-02-21 21:18:57
如何顺利安装CentOS ...
3. 兼容性设置 默认选项即可,点击“下一步”。 4. 选择安装介...
2024-12-17 11:11:24
编写一个使用yum安装软件...
下面是一个使用Shell脚本和yum来安装软件包的示例代码:#!/...
2024-12-07 09:02:10

热门资讯

使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
Bazzite:专为 Stea... 为 Linux 桌面或者 Steam Deck 做好游戏准备,听起来都很刺激!对于一个专为 Linu...