我从 FreeBSD 中移除“Linuxisms”的方法

这是一篇关于在 FreeBSD 系统中去除不需要的依赖(尤其是 Wayland 相关依赖)的技术文章,主要内容如下:

  • 前言:作者日常使用的 FreeBSD 系统包含 X 服务器和 OSS 等组件,这些组件成熟且有大量文档。但安装一些简单程序时,pkg 会安装 Wayland 等不需要的依赖。一些二进制包的依赖来自上游,导致不必要的依赖被安装。作者决定去除这些不需要的依赖,介绍了 poudriere 工具,它可利用 FreeBSD 基础设施构建本地仓库,避免主仓库更新覆盖自定义包。
  • Poudriere 安装:创建用于 poudriere 文件的独立数据集,设置压缩等参数。配置 poudriere 相关文件,如构建选项、黑名单、make.conf 等,指定使用特定数据集作为 jail 和本地仓库路径,增加构建时间,指定下载二进制包的依赖,防止启用不需要的选项等。创建 poudriere ports 时要指定正确的季度分支,以避免下载依赖时出现问题。
  • 去除不需要的依赖

    • 以 Wayland 为例,通过pkg required-depends获取依赖 Wayland 的包列表,如mesa-drigtk4等。然后使用 poudriere 重新构建这些包,配置端口选项,进行 dry-run 检查依赖,最后成功构建本地仓库,可重新安装去除 Wayland 依赖的包。
    • 对于更复杂的情况,如libvagraphics/mesa-dri,可使用poudriere options查看和重新配置包选项。对于没有对应 ports 的包,如audacious-gtk3,可利用 flavors 构建不同变体的包。对于 Qt 6 依赖的包,如 Telegram Desktop 和 Qmapshack,目前存在一些问题,如devel/qt6-base直接依赖 Wayland 且无去除 Wayland 支持的选项,作者对 Qmapshack 进行了打补丁操作以去除不必要的依赖。
  • 结果与思考:将 FreeBSD 的 ports 基础设施与 Gentoo 的emerge系统进行比较,认为 ports 基础设施更简单,配置 build-time 选项更方便。但也存在一些缺点,如某些包缺乏配置选项、更新包时需先更新本地仓库、系统升级时需更新本地 ports 等。作者还提到去除 Wayland 相关东西后,系统的显示 glitch 消失了。

总体而言,文章详细介绍了在 FreeBSD 系统中去除不需要依赖的过程和相关工具的使用,以及遇到的问题和解决方法。

阅读 9
0 条评论