这是一篇关于在 FreeBSD 系统中去除不需要的依赖(尤其是 Wayland 相关依赖)的技术文章,主要内容如下:
- 前言:作者日常使用的 FreeBSD 系统包含 X 服务器和 OSS 等组件,这些组件成熟且有大量文档。但安装一些简单程序时,pkg 会安装 Wayland 等不需要的依赖。一些二进制包的依赖来自上游,导致不必要的依赖被安装。作者决定去除这些不需要的依赖,介绍了 poudriere 工具,它可利用 FreeBSD 基础设施构建本地仓库,避免主仓库更新覆盖自定义包。
- Poudriere 安装:创建用于 poudriere 文件的独立数据集,设置压缩等参数。配置 poudriere 相关文件,如构建选项、黑名单、make.conf 等,指定使用特定数据集作为 jail 和本地仓库路径,增加构建时间,指定下载二进制包的依赖,防止启用不需要的选项等。创建 poudriere ports 时要指定正确的季度分支,以避免下载依赖时出现问题。
去除不需要的依赖:
- 以 Wayland 为例,通过
pkg required-depends
获取依赖 Wayland 的包列表,如mesa-dri
、gtk4
等。然后使用 poudriere 重新构建这些包,配置端口选项,进行 dry-run 检查依赖,最后成功构建本地仓库,可重新安装去除 Wayland 依赖的包。 - 对于更复杂的情况,如
libva
和graphics/mesa-dri
,可使用poudriere options
查看和重新配置包选项。对于没有对应 ports 的包,如audacious-gtk3
,可利用 flavors 构建不同变体的包。对于 Qt 6 依赖的包,如 Telegram Desktop 和 Qmapshack,目前存在一些问题,如devel/qt6-base
直接依赖 Wayland 且无去除 Wayland 支持的选项,作者对 Qmapshack 进行了打补丁操作以去除不必要的依赖。
- 以 Wayland 为例,通过
- 结果与思考:将 FreeBSD 的 ports 基础设施与 Gentoo 的
emerge
系统进行比较,认为 ports 基础设施更简单,配置 build-time 选项更方便。但也存在一些缺点,如某些包缺乏配置选项、更新包时需先更新本地仓库、系统升级时需更新本地 ports 等。作者还提到去除 Wayland 相关东西后,系统的显示 glitch 消失了。
总体而言,文章详细介绍了在 FreeBSD 系统中去除不需要依赖的过程和相关工具的使用,以及遇到的问题和解决方法。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。