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

退出打印视图

更新时间: 2014 年 7 月
 
 

删除目录时移动未打包文件

此示例展示了如何使用 IPS 将未打包的内容挽救到另一个打包的目录。

在此示例中,软件包 myapp@1.0 安装了目录 /opt/myapp/logfilesmyapp 应用程序将日志文件写入该目录。

myapp@2.0 软件包提供 /opt/myapp/history 目录,不提供 /opt/myapp/logfiles 目录。将安装的 myapp@1.0 软件包更新到 myapp@2.0 的用户将不再拥有 /opt/myapp/logfiles 目录。这些用户将在 pkg update 输出结束时看到一条消息,显示 /opt/myapp/logfiles 中的内容已保存到 /var/pkg/lost+found/opt/myapp/logfiles 中。

要在 myapp 软件包更新时使用 IPS 将 /opt/myapp/logfiles 中的文件内容移动到 /opt/myapp/history,可使用 /opt/myapp/history 目录的 salvage-from 属性。您的 pkgmogrify 输入文件需要具有以下条目:

<transform dir path=opt/myapp/history -> \
    add salvage-from /opt/myapp/logfiles>

运行 pkgmogrify 后,该目录的软件包清单操作如下所示:

dir  path=opt/myapp/history owner=root group=bin mode=0755 \
    salvage-from=/opt/myapp/logfiles

在用户运行 pkg update myapp 后,/opt/myapp/logfiles 目录已删除,新的 /opt/myapp/history 目录已安装,而且 /opt/myapp/logfiles 的文件内容在 /opt/myapp/history 中。

请参见如何将未共享的内容迁移到共享区域,该部分介绍了使用 salvage-from 属性的另一个示例。