7 源代码向后移植 #
SUSE 广泛使用了向后移植,例如当前的软件修复和功能迁移到过去发布的 SUSE Linux Enterprise 软件包中。本章中的信息解释通过比较版本号来判断 SUSE Linux Enterprise 软件包的功能和安全性为何有误导性。此外,本章还会说明 SUSE 如何在确保系统软件安全且最新的同时,保持 SUSE Linux Enterprise 产品上所运行应用程序软件的兼容性。您还将了解如何检查在 SUSE Linux Enterprise 系统软件中实际解决了哪些公共安全问题,以及您的软件的当前状态。
7.1 向后移植的原因 #
上游开发者主要关心所开发软件的进度。他们往往会在修复 bug 的同时引入尚未经过广泛测试并可能会造成新 bug 的新功能。
对于分发包开发者而言,必须区分两种情况:
在对功能造成有限中断的情况下执行的 bug 修复;以及
可能会中断现有功能的更改。
通常情况下,当某个软件包已属于所发布的发行套件时,发行套件开发者不会遵照所有的上游更改。通常,他们会继续使用最初发布的上游版本,并根据上游更改来创建补丁以修复 bug。这种做法称为向后移植。
通常,分发包开发者只会在两种情况下引入软件的更新版本:
当他们的软件包与上游版本之间的差异过大,以致向后移植的做法不再可行,或者
软件(例如防恶意软件的软件)由于固有的性质而变得不合时宜。
由于我们致力于在几个企业软件考虑因素之间实现合理的平衡,SUSE 广泛使用了向后移植。其中,最重要的考虑因素包括:
提供稳定的接口 (API),软件供应商在构建可用于 SUSE 企业产品的产品时可以依赖这些接口。
确保 SUSE 企业产品版本中使用的软件包具有最好的质量,这些软件包本身以及在成为整个企业产品的一部分后已经过充分的测试。
由其他供应商对 SUSE 的企业产品维持各种认证,就像对 Oracle 或 SAP 产品的认证一样。
让 SUSE 开发人员专注于开发下一个产品版本,而不是顾此失彼地将精力分散在众多不同的修订版上。
清楚明了特定企业版本中包含的功能和特性,以便我们的支持可以提供有关该版本的准确及时的信息。
7.2 不向后移植的原因 #
不要将新的上游软件包版本引入我们的企业产品,这是常见的策略规则,但不是硬性规则。对于特定的软件包类型,尤其是防病毒软件,安全方面是我们考虑更多的因素,而不是优先考虑质量保证方面的保守做法。对于这个种类的软件包,偶尔会将更新的版本引入企业产品系列的发布版本。
有时,对于其他类型的软件包,我们也会选择引入新版本,而不是向后移植。当生成向后移植在经济效益上不可行,或者由于极其相关的技术原因而需要引入更新版本时,我们会采取这种做法。
7.3 向后移植对版本号解读的影响 #
由于采用向后移植的做法,用户不能简单地通过比较版本号来确定 SUSE 软件包是否包含针对特定问题的修复,或者其中是否添加了特定的功能。在使用向后移植时,SUSE 软件包版本号的上游部分只是表示 SUSE 软件包基于的上游版本。它可能包含相应上游版本中没有但已向后移植到 SUSE 软件包中的 bug 修复和功能。
在涉及到向后移植时,版本号的这种有限价值可能会造成在特定情况下产生问题,也就是在使用安全扫描工具的时候。某些安全漏洞扫描工具(或者在此类工具中进行特定的测试)只能基于版本号运行。因此,在涉及到向后移植时,这些工具和测试很容易生成“误报”(将某个软件错误地识别为有漏洞)。在评估安全扫描工具生成的报告时,请始终检查其中的条目是基于版本号,还是基于实际的漏洞测试。
7.4 检查已修复的 bug 和向后移植的功能 #
有关向后移植的 Bug 修复和功能的信息储存在多个位置:
软件包的更改日志:
>
rpm-q --changelog name-of-installed-package>
rpm -qp --changelogpackagefile.rpmpackagefile.rpm
其输出简要记录了软件包的更改历史记录。
软件包的更改日志可能包含类似于引用 SUSE Bugzilla 跟踪系统中的
bsc#1234
(“BugzillaSuse.Com”) 之类的项,或者包含指向其他 Bug 跟踪系统的链接。出于保密政策的缘故,您不一定能够访问所有此类信息。软件包中可能包含
/usr/share/doc/PACKAGENAME /README.SUSE
文件,该文件包含特定于 SUSE 软件包的一般概要信息。RPM 源软件包包含构建普通二进制 RPM 期间应用的补丁,这些补丁以独立文件的形式存在,如果您熟知如何阅读源代码,可以对这些文件进行解释。有关安装 SUSE Linux Enterprise 储存库的信息,请参见第 9.1.3.5 节 “安装或下载源软件包”。有关在 SUSE Linux Enterprise 上构建软件包的信息,请参见第 9.2.5 节 “安装和编译源软件包”。请参见Maximum RPM《》(充分利用 RPM)一书,了解有关 SUSE Linux Enterprise 软件包构建的细节。
有关安全 Bug 修复,请查阅 SUSE security announcements。这些修复往往通过 Common Vulnerabilities and Exposures (CVE) 项目所维护的标准化名称(例如
CAN-2005-2495
)来引用 Bug。