openSUSE:Libzypp 插件
插件概念
ZYpp 允许通过在插件位置添加脚本来挂载和扩展某些功能
/usr/lib/zypp/plugins/$plugintype
根据插件类型,它们可能需要通过协议与 libzypp 进行通信。该协议基于 STOMP(流文本定向消息协议)。
服务插件
请参阅 这篇博文]
目前,服务插件的概念是调用它们并返回一个仓库列表。
- 问题:* 也使用协议,并在主体中返回仓库列表吗?
URL 解析器插件
URL 解析器插件将方案为“plugin”的 URL 转换为使用该协议的名为 $name 的插件的输出。 借助该协议,返回的每个标头也都会作为 HTTP 标头添加。 当前协议序列是
ZYpp 看到格式为
plugin:foo?param1=val1¶m2=val2
的 URL,并且执行名为 foo 的插件,并使用以下协议调用它
RESOLVEURL param1:val1 param2:val2 ...
^@
插件回复
RESOLVEDURL: header1:val1 header2:val2 ...
http://realurl.com?opts=vals ^@
然后使用此 URL。
示例
您有一个 URL 为
plugin:lan
的仓库。该脚本查看您安装的发行版,并通过 SLP 在局域网中找到正确的仓库并选择更新的仓库并返回其 URL。 但除此之外,它还会添加一个包含更新状态的标头,该标头可以在服务器端收集。
这种类型的插件可以与服务插件结合使用,因为本地服务可以像这样返回一个仓库列表
[distro] name=Distribution repository baseurl=plugin:lan?repo=distro
[update] name=Update repository baseurl=plugin:lan?repo=update
在此示例中,服务插件可以立即解析 URL 并返回
[distro] name=Distribution repository baseurl=http://realurl
但 URL 解析器也允许将标头添加到请求中。
: