openSUSE:Appliances events workshop Nuremberg 2010 projects decouple WebYaST from YaST2
将 WebYaST 从 YaST2 中分离
团队
负责人:Jiří Šrain
成员:Jíří Suchomel, Josef Reidinger, Ladislav Slezák
目标
这里的目标是找到使 WebYaST 独立于旧版 YaST 的可行方法。
主要原因如下
- 巨大的软件包依赖关系(将 WebYaST 添加到 JeOS 几乎会将镜像大小翻倍)
- 使 WebYaST 项目对社区开发者更具吸引力(不需要 YaST 知识)
- 重用其他现有工具(减少维护)
任务
评估并减少当前 WebYaST 包的依赖关系
- 从 webyast-base-ws 中删除了 PackageKit、yast2-core 和 yast2-dbus-server,旧版 YaST 仅应由真正需要它的插件所必需。
- 添加了 yast2_ui 和 yast2_ui_pkg 提供,因此不需要 YaST UI(yast2-gtk + 它的巨大依赖关系)。请注意,ncurses 在理论上更小,但需要 glibc-locale。
上述更改将基本 WebYaST(基础 ws + ui,重启)的大小从 200MB 减少到约 80MB。剩余依赖关系的最大部分是 Rails 东西。
在完整的 WebYaST 安装中,一些从基本系统依赖关系中删除的组件无论如何都会被拖入(PackageKit 用于更新,collectd 依赖项用于系统状态)。
为 WebYaST 创建新的后端,这些后端不使用旧版 YaST
当前具有 YaST 依赖关系的模块
- 管理员
可能的非 YaST 解决方案:简单的 D-BUS 服务访问系统工具('passwd')。对于编辑邮件别名,需要解析别名文件。
- 用户
可能的非 YaST 解决方案:简单的 D-BUS 服务访问系统工具('useradd'、'usermod')
- 邮件设置
- 系统服务
可能的非 YaST 解决方案:简单的 D-BUS 服务访问系统工具('insserv')。
- 防火墙
- Network
- 时间和 NTP
- 注册
状态模块
webyast-status-ws 包含一个用于读取系统日志文件的 Ruby 小文件。D-Bus 接口由 YaST D-Bus 服务创建。使用 ruby-dbus 将其封装到单独的 D-Bus 服务中应该相当容易。
其他依赖关系
webyast-status-ws 插件使用 collectd 进行监控,问题是 collectd -> rrdtool -> X 库依赖关系会拉入大约 30MB 的软件包。这不能简单地更改,rrdtool 必须拆分为两个软件包,一个没有图形支持(WebYaST 不需要该功能),一个功能齐全的软件包。这可以节省约 5MB。
软件管理需要 PackageKit,它会拉入 python、Networkmanager-glib 和其他大型软件包,大小约为 30MB。
管理员模块
我们创建了一个仅用于更改 root 密码的 D-BUS 服务。通过新的软件包(https://build.suse.de/package/show?package=webyast-root-user-ws&project=home%3Alslezak%3Abranches%3ASUSE%3ASLE-11-SP1%3AGA),我们节省了大约 20MB 的空间,因为减少了依赖关系。
待办事项
- 检查所有依赖关系 - 有些模块可能依赖于 webyast-base-ws 需要它们的东西
- 消除“廉价”的依赖关系,这些依赖关系几乎只能通过重新打包来实现(仅将 YaST 用作 D-Bus 服务的包装器)
- 增强文档,尤其是关于调试 DBus 服务(初稿在此处可用 )
- 研究直接使用现有的 Perl 代理,而无需 WebYaST 开销
- 如果需要,研究用于配置文件的通用解析器(候选者:augeas 已经包含在 SLE11 中,<1MB,许多绑定存在,仅打包在 BS 中)