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 中删除了 PackageKityast2-coreyast2-dbus-server,旧版 YaST 仅应由真正需要它的插件所必需。
  • 添加了 yast2_uiyast2_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 中)