这是我们开始发布开发冲刺报告以来的第五份报告,我们不得不承认,到目前为止,这是最不令人印象深刻的一次。我们可能低估了复活节假期和一些团队成员休假的影响。
但尽管我们的生产力低于预期,我们仍然有一些很酷的东西要向我们热爱的用户和开发者展示。
软件包中的文件冲突处理
到目前为止,YaST 中的软件包安装会忽略已安装软件包中可能存在的文件冲突。与此相反,zypper 已经支持这种检查一段时间了。
当两个软件包尝试安装具有相同名称但内容不同的文件时,就会发生文件冲突。如果安装了这些冲突的软件包,冲突的文件将被替换,从而丢失之前的内容。最终的文件内容也将取决于安装顺序,因此某些问题可能看起来是“随机”的。被覆盖的文件实际上是损坏的。
YaST 现在会显示一个确认对话框,询问是否继续安装,即使存在冲突,或者中止。 以前 YaST 会静默地继续软件包安装,这可能会在以后导致严重问题。

文件冲突通常不应该发生,至少在使用原始分发存储库时。OBS 构建会在软件包构建期间检查一些文件冲突,如果确实存在文件冲突,则应在 RPM 级别上标记它(因此您一开始不应该能够选择冲突的软件包进行安装)。
用户需要决定是否可以忽略冲突。例如,如果冲突发生在文档文件中,则忽略冲突通常没有问题,但如果冲突发生在二进制文件或系统库中,则可能存在风险。如果您不确定,“中止”是这里安全的选择。
在 这个 pull request 的描述 中,您可以看到几个额外的动画,展示了新功能在各种界面(Qt、NCurses、命令行)和场景(软件管理器、额外软件包的内联安装)中的效果。
安装程序自更新的改进
在此冲刺期间,自更新功能收到了多项改进和更改。最重要的是,现在它使用 libzypp 来获取更新,委托签名检查等操作。 显然,这也意味着安装程序更新将使用常规 RPM 存储库分发(而不是驱动程序更新磁盘)。

另一方面,用户指定的驱动程序更新(通过 dud 选项)将优先于安装程序更新。 它们将由 Linuxrc 无论如何应用,但它们将保留在安装程序更新之上。
Ruby 和代理的乐趣
这并不是 YaST 中的一项新功能或修复,而是我们学到的东西,我们认为分享出来可以帮助其他人避免头痛。
我们收到了一份关于 YaST 忽略 /etc/sysconfig/proxy 中的 no_proxy 设置的报告。 经过调查,问题不在 YaST 中,而在于底层的工具中,这些工具也用 Ruby 实现。 看起来 Ruby 对处理代理设置有一种我们(至少)意想不到的行为。 如果您对细节感兴趣,请不要错过我们在 YaST2-Registration wiki 的这个页面 上收集的信息,其中包含一些背景知识和设置 no_proxy 时要遵循的建议。
安装期间网络设置的统一
在分析网络设置如何影响不同的安装模式和步骤之后,我们统一了“网络设置”按钮的位置和快捷方式。 这影响了三个安装步骤。
为了避免仅仅为了设置一些网络接口的特殊配置而来回切换,在“附加产品”中添加了一个按钮。
在“磁盘激活”步骤中,该按钮被移动到右上角,以与其他步骤保持一致。
为了完成一致性,我们还调整了注册屏幕中的键盘快捷键。
新的存储库持续发展
这次我们没有关于新存储层开发的重大新闻。 我们继续与专家合作,努力确保为所有情况提供可靠的解决方案。 除了启动专家之外,Parted 专家 Petr Uzel 在本次冲刺期间的投入非常有价值。 我们对新 libstorage 和 libparted 的集成做出了重要决定,并在实现分区方案方面取得了进展,该方案确保在所有架构和配置中都能启动系统,并以高度可读的测试和规范进行支持。
如果时间和错误报告允许,我们将在下一次冲刺之后展示更多内容……但这将在三周后。 同时,祝您玩得开心!


