在 Oracle® Solaris 11.2 中使用映像包管理系统打包和交付软件

退出打印视图

更新时间: 2014 年 7 月
 
 

更改软件包发布者

另一种常见使用情况是在新的发布者名称下重新发布软件包。将软件包从多个系统信息库中整合到单个系统信息库时,这很有用。例如,您可能希望将软件包从具有多个不同开发团队的系统信息库中整合到用于集成测试的单个系统信息库中。

要在新的发布者名称下重新发布,请使用上述示例中显示的 pkgrecvpkgmogrifypkgrepopkgsend 步骤。

以下转换示例将发布者更改为 mypublisher

<transform set name=pkg.fmri -> edit value pkg://[^/]+/ pkg://mypublisher/>

可以使用简单的 shell 脚本迭代系统信息库中的所有软件包。使用 pkgrecv --newest 命令的输出仅处理系统信息库中的最新软件包。

以下脚本将上述转换保存在名为 change-pub.mog 的文件中,然后从 development-repo 重新发布到新的系统信息库 new-repo,从而在此过程中更改了软件包发布者:

#!/usr/bin/ksh93
pkgrepo create new-repo
pkgrepo -s new-repo set publisher/prefix=mypublisher
mkdir incoming
for package in $(pkgrecv -s ./development-repo --newest); do
    pkgrecv -s development-repo -d incoming --raw $package
done
for pdir in incoming/*/* ; do
    pkgmogrify $pdir/manifest change-pub.mog > $pdir/manifest.newpub
    pkgsend -s new-repo publish -d $pdir $pdir/manifest.newpub
done

可以修改此脚本,使其能够执行各种任务,如仅选择某些软件包、对软件包的版本控制方案做出其他更改以及在其重新发布每个软件包时显示进度。