openSUSE:Libzypp 插件

跳转到:导航搜索

插件概念

ZYpp 允许通过在插件位置添加脚本来挂载和扩展某些功能

   /usr/lib/zypp/plugins/$plugintype

根据插件类型,它们可能需要通过协议与 libzypp 进行通信。该协议基于 STOMP(流文本定向消息协议)。

服务插件

请参阅 这篇博文]

目前,服务插件的概念是调用它们并返回一个仓库列表。

  • 问题:* 也使用协议,并在主体中返回仓库列表吗?

URL 解析器插件

URL 解析器插件将方案为“plugin”的 URL 转换为使用该协议的名为 $name 的插件的输出。 借助该协议,返回的每个标头也都会作为 HTTP 标头添加。 当前协议序列是

ZYpp 看到格式为

   plugin:foo?param1=val1&param2=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 解析器也允许将标头添加到请求中。