此示例展示了如何使用 IPS 将未打包的内容挽救到另一个打包的目录。
在此示例中,软件包 myapp@1.0 安装了目录 /opt/myapp/logfiles。myapp 应用程序将日志文件写入该目录。
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 属性的另一个示例。