跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中使用映像包管理系统打包和交付软件 Oracle Solaris 11.1 Information Library (简体中文) |
软件组件的所需组织会因原始软件包中的错误、产品或其使用随时间的变化或周围软件环境的变化而发生变化。有时,只是软件包的名称需要更改。规划此类更改时,请考虑执行升级的用户,以确保不会出现无法预料的负面影响。
本节按 pkg update 注意事项复杂性从低到高的顺序讨论了以下三种类型的软件包重新组织:
重命名单个软件包
合并两个软件包
拆分一个软件包
重命名单个软件包很简单。IPS 提供了一种机制来指明软件包已重命名。
要重命名软件包,请发布现有软件包的新版本,使其包含以下两个操作:
set 操作,使用以下格式:
set name=pkg.renamed value=true
依赖于新软件包的 require 相关项。
重命名的软件包无法交付除 depend 或 set 操作以外的内容。
新软件包必须确保它无法与重命名之前的原始软件包同时安装。如果同一 incorporate 相关项同时涵盖了这两个软件包,则此限制是自动实现的。如果没有自动实现,则新软件包必须在重命名的版本中包含依赖于旧版软件包的 optional 相关项。这可以确保解析器不会同时选择这两个软件包,若同时选择会导致冲突检查失败。
安装此已重命名软件包的用户将自动接收新名称的软件包,因为新软件包是旧版本的一个相关项。如果没有任何其他软件包依赖于已重命名软件包,则它将自动被从系统中删除。存在旧版本的软件会导致许多已重命名软件包显示为已安装。当该旧版本的软件被删除时,也会自动删除已重命名软件包。
软件包可以多次重命名而不会出现问题,但是建议不要这样做,因为这样会使用户混淆。
合并软件包也非常简单。以下两种情况是合并软件包的示例:
一个软件包在重命名的版本中兼并另一个软件包。
两个软件包都重命名为同一个新的软件包名称。
假定软件包 A@2 必须兼并软件包 B@3。要完成此操作,请将软件包 B 重命名为软件包 A@2。不要忘记在 A@2 中包括对 B@3 的 optional 相关项,除非如上所述,两个软件包已合并且因此一起更新。将 B 升级到 B@3 的用户现在即安装了 A,因为 A 已兼并了 B。
在这种情况中,将两个软件包都命名为合并后的新软件包的名称,在新软件包中包含依赖于旧软件包的两个 optional 相关项(如果没有以其他方式对这两个软件包进行约束)。
拆分软件包时,请按重命名单个软件包中介绍的过程重命名所得到的每个新软件包。如果所得到的其中一个新软件包未重命名,则该软件包的拆分前和拆分后版本不兼容,并且在最终用户尝试更新软件包时可能会违反相关项逻辑。
重命名原始软件包,并包含依赖于拆分得到的所有新软件包的 require 相关项。这可确保包含依赖于原始软件包的相关项的任何软件包都会获得所有新的软件包部分。
拆分的软件包的某些组件可以作为合并部分兼并到现有软件包中。请参见一个软件包兼并另一个软件包。