<?xml version="1.0" encoding="utf-8"?>
<!--Arbortext, Inc., 1988-2008, v.4002-->
<!ENTITY % ent SYSTEM "entities.ent">
%ent;
]>
<refmeta><refentrytitle>pkg.depotd</refentrytitle><manvolnum>8</manvolnum> <refmiscinfo class="date">2013 年 10 月 2 日</refmiscinfo> <refmiscinfo class="sectdesc">&man8;</refmiscinfo> <refmiscinfo class="software">&release;</refmiscinfo> <refmiscinfo class="arch">generic</refmiscinfo> <refmiscinfo class="copyright">Copyright (c) 2007, 2016, Oracle and/or its affiliates.All rights reserved.</refmiscinfo>
</refmeta>
<refnamediv>
</refnamediv>
<refsynopsisdiv><title></title>
<synopsis>/usr/lib/pkg.depotd [--cfg <replaceable>source</replaceable>] [-a <replaceable>address</replaceable>]
[--content-root <replaceable>root_dir</replaceable>] [-d <replaceable>inst_root</replaceable>]
[--debug <replaceable>feature_list</replaceable>] [--disable-ops=<replaceable>op</replaceable>[/1][,...]]
[--image-root <replaceable>path</replaceable>] [--log-access <replaceable>dest</replaceable>]
[--log-errors <replaceable>dest</replaceable>] [--mirror <replaceable>mode</replaceable>] [-p <replaceable>port</replaceable>]
[--proxy-base <replaceable>url</replaceable>] [--readonly <replaceable>mode</replaceable>] [-s <replaceable>threads</replaceable>]
[--sort-file-max-size <replaceable>bytes</replaceable>] [--ssl-cert-file <replaceable>source</replaceable>]
[--ssl-dialog <replaceable>type</replaceable>] [--ssl-key-file <replaceable>source</replaceable>]
[-t <replaceable>socket_timeout</replaceable>] [--writable-root <replaceable>path</replaceable>]</synopsis>
</refsynopsisdiv>
<refsect1 id="GLHAR" role="description"><title></title>
<para><command>pkg.depotd</command> 是映像包管理系统的 depot 服务器。它提供对包含在软件包系统信息库中的数据的网络访问。对于不支持通过文件系统直接访问系统信息库的客户机,或网络访问是唯一可用或希望使用的传输方法的客户机,通常使用软件包库 (depot)。</para>
<para>诸如 <command>pkg</command> 之类的检索客户机可直接从系统信息库或通过 depot 服务器检索软件包和软件包元数据列表。发布客户机 <command>pkgsend</command> 可将新版本的软件包直接或通过 depot 服务器发送到系统信息库。<command>pkgrepo</command> 可用于创建系统信息库供 depot 服务器使用,或用于直接以及通过 depot 服务器管理它们。</para>
<para>库不提供任何自己的访问控制方法。缺省情况下,所有能够连接的客户机都能够读取所有软件包数据和发布新的软件包版本。在服务管理工具 (Service Management Facility, SMF) 下运行时例外,缺省情况为在只读模式中运行。下列“附注”部分描述了维护具有不断变化内容的公共 depot 服务器的一些最佳做法。</para>
</refsect1>
<refsect1 role="other"><title>SMF 属性</title>
<para><literal>pkg.depotd</literal> 服务器通常通过与其服务关联的 SMF 属性配置。<literal>svc:/application/pkg/server</literal> 服务运行一个 <literal>pkg.depot</literal> 服务器进程,或者为 <literal>svc:/application/pkg/depot</literal> 服务提供配置。请参见 <literal>pkg.depot-config</literal>(8) 手册页和下文中的 <literal>pkg/standalone</literal> 属性。</para>
<para>有关 SMF 属性的信息,请参见 <literal>smf</literal>(7) 手册页。可以识别以下属性:</para>
<variablelist termlength="wholeline">
<listitem><para>(<literal>net_address</literal>) 在其上侦听连接的 IP 地址。缺省值为 0.0.0.0 (<literal>INADDR_ANY</literal>),该地址侦听所有活动接口。要侦听所有活动的 IPv6 接口,请使用 <literal>::</literal>。只使用第一个值。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 实例应在其中查找静态 Web 内容以及其他 Web 内容的文件系统路径。缺省值为 <filename>/usr/share/lib/pkg</filename>。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 以逗号分隔的要启用的调试功能列表。可能的值为:</para>
<variablelist>
<varlistentry><term><literal>headers</literal></term>
<listitem><para>将每个请求的标头记录到错误日志。</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 以逗号分隔的应在 depot 服务器中禁用的操作列表。操作以下面的形式提供:<replaceable>operation</replaceable>[/<replaceable>version</replaceable>](例如 <literal>catalog</literal> 或 <literal>search_1</literal>)。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 其文件信息将用作文件数据高速缓存的映像的路径。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 实例应在其中找到其系统信息库数据的文件系统路径。必需,除非已提供了 <literal>PKG_REPO</literal>。缺省值为 <filename>/var/pkgrepo</filename>。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 库进程记录的任何与访问相关的信息的目标。可能的值为:<filename>stderr</filename>、<filename>stdout</filename>、<literal>none</literal> 或绝对路径名称。如果 <filename>stdout</filename> 是 <literal>tty</literal>,则缺省值为 <filename>stdout</filename>。如果 <filename>stdout</filename> 不是 <literal>tty</literal>,则缺省值为 <literal>none</literal>。如果您将 <literal>pkg</literal> 作为服务运行,则 <literal>log_access</literal> 的缺省值为 <literal>none</literal>,且输出将写入 <filename>/var/svc/log/application-pkg-server:* </filename> 中。有关管理大日志文件的示例,请参见 <literal>logadm</literal>(8) 手册页。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 库进程记录的任何错误或其他信息的目标。可能的值为:<filename>stderr</filename>、<filename>stdout</filename>、<literal>none</literal> 或绝对路径名称。缺省值为 <filename>stderr</filename>。有关管理大日志文件的示例,请参见 <literal>logadm</literal>(8) 手册页。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>boolean</literal>) 设置是否使用软件包镜像模式。为 true 时,禁用发布和元数据操作,只提供受限制的浏览器用户界面。当 <literal>pkg/readonly</literal> 属性为 true 时,该属性不能为 true。缺省值为 <literal>false</literal>。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>count</literal>) 实例侦听传入软件包请求应使用的端口号。如果未提供 SSL 证书和密钥信息,则缺省值为 80;否则,缺省值为 443。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>uri</literal>) 该属性更改 depot 服务器的基 URL,当在 Apache 或反向代理配置中的某个其他 Web 服务器后运行时最有用。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>boolean</literal>) 设置是否禁用修改操作,例如由 <command>pkgsend</command> 启动的那些操作。检索操作仍可用。当 <literal>pkg/mirror </literal> 属性为 true 时,该属性不能为 true。缺省值为 <literal>true</literal>。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>count</literal>) 在断开连接之前服务器应该等待客户机响应的最大秒数。缺省值为 60。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>count</literal>) 索引器排序文件的最大大小。用于限制库 (depot) 创建索引可使用的 RAM 量,也可增大该大小以提高速度。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 以 PEM 编码的证书文件的绝对路径名。缺省值为 <literal>none</literal>。此属性必须与 <literal>ssl_key_file</literal> 一起使用。如果同时提供了 <literal>ssl_cert_file</literal> 和 <literal>/ssl_key_file</literal>,则库 (depot) 只响应 SSL 请求。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 指定应使用何种方法来获取用于 <literal>ssl_key_file</literal> 解密的口令短语。可能的值为:</para>
<variablelist termlength="wholeline">
<varlistentry><term><literal>builtin</literal></term>
<listitem><para>提示输入口令短语。这是缺省值。</para>
</listitem>
</varlistentry>
<listitem><para>执行指定的外部程序来获取口令短语。程序的第一个参数为 <literal>''</literal>,这是保留字。程序的第二个参数是服务器的端口号。口令短语输出到 <filename>stdout</filename>。</para>
</listitem>
</varlistentry>
<varlistentry><term><literal>smf:fmri</literal></term>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) PEM 编码的私钥文件的绝对路径名称。此属性必须与 <literal>ssl_cert_file </literal> 属性一起使用。如果同时提供 <literal>/ssl_key_file </literal> 和 <literal>ssl_cert_file</literal>,则库只响应 SSL 请求。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>boolean</literal>) 要轻松地通过具有最低 Apache 配置的单个 Apache 实例为多个系统信息库提供服务,请将此属性设置为 <literal>false</literal> 并将此 <literal>pkg/server</literal> 实例的 <literal>pkg/readonly</literal> 属性设置为 <literal>true</literal>。<literal>pkg/standalone</literal> 的缺省值为 <literal>false</literal>,<literal>pkg/readonly</literal> 的缺省值为 <literal>true</literal>。有关更多信息,请参见 <literal>pkg.depot-config</literal>(8) 手册页。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>count</literal>) 启动以为请求提供服务的线程数。缺省值为 60。只适用于小型部署。该值应该为并发客户机数量的 20 倍左右。<literal>threads</literal> 的最大值为 5000。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 程序对其具有写入访问权限的目录的文件系统路径。此属性可与 <option>readonly</option> 选项一起使用,以便 depot 服务器无需具有对软件包信息的写入访问权限即可创建文件(如搜索索引)。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 用于解密 <literal>pkg/ssl_key_file</literal> 的口令。该值受读取授权保护(使用属性 <literal>solaris.smf.read.pkg-server</literal> 实现)。</para>
</listitem>
</varlistentry>
</variablelist>
<para>depot 服务器的浏览器用户界面 (Browser User Interface, BUI) 的显示和行为由以下属性控制:</para>
<variablelist termlength="wholeline">
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 用于以可视方式表示 RSS/Atom 源的小型图像的路径名。路径名应相对于 <literal>content_root</literal>。缺省值为 <filename>web/_themes/pkg-block-icon.png</filename>。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 将用于以可视方式标记或标识 RSS/Atom 源的大型图像的路径名称。该值应相对于 <literal>content_root</literal>。缺省值为 <filename>web/_themes/pkg-block-icon.png</filename>。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>astring</literal>) 由为系统信息库提供服务的库生成的 RSS/Atom 源的简短描述性名称。缺省值为 "package repository feed"。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>count</literal>) 系统信息库的源最后生成之前的小时数,以包括生成源的时间。</para>
</listitem>
</varlistentry>
</variablelist>
<para>软件包库还可以用作来自 <literal>pkg</literal>(7) 的本地客户机映像的镜像服务器。这使得在 LAN 上共享一个子网的客户机可以对它们的文件高速缓存进行镜像。客户机可以相互下载文件,从而减少软件包 depot 服务器上的负载。此功能是作为由 SMF 配置的替代 depot 服务提供的。它为服务发现使用 mDNS 和 <literal>dns-sd</literal>。</para>
<para>mDNS 镜像通常是通过与其服务关联的 SMF 属性配置的。可以识别以下属性:</para>
<variablelist termlength="wholeline">
<listitem><para>(<literal>astring</literal>) 其文件信息将用作文件数据高速缓存的映像的路径。缺省值为 <filename>/</filename>。</para>
</listitem>
</varlistentry>
<listitem><para>(<literal>count</literal>) 实例应侦听传入软件包请求的端口号。缺省值为 80。</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="options"><title></title>
<variablelist termlength="wholeline">
<varlistentry><term><option>-cfg</option> <replaceable>source</replaceable></term>
<listitem><para>指定读取和写入配置数据时要使用的文件的路径名,或格式为 <literal>smf:<replaceable>fmri</replaceable></literal> 的字符串,其中 <replaceable>fmri</replaceable> 是从中读取配置数据的实例的服务故障管理资源标识符 (fault management resource identifier, FMRI)。有关指定文件的格式的详细信息,请参见下文的“库配置”。</para>
</listitem>
</varlistentry>
</variablelist>
<para>如果没有可用的已存在的配置源,或者要覆盖从使用 <option>-cfg</option> 提供的配置文件中读取的值,则可以使用下列选项来更改 depot 服务器的缺省行为:</para>
<variablelist termlength="wholeline">
<varlistentry><term><option>a</option> <replaceable>address</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-content-root</option> <replaceable>root_dir</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>d</option> <replaceable>inst_root</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-debug</option> <replaceable>feature_list</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-disable-ops</option>=<replaceable>op</replaceable>[<literal> /1</literal>][,...]</term>
</listitem>
</varlistentry>
<varlistentry><term><option>-image-root</option> <replaceable>path</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-log-access</option> <replaceable>dest</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-log-errors</option> <replaceable>dest</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-mirror</option> <replaceable>mode</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>p</option> <replaceable>port</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-proxy-base</option> <replaceable>url</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-readonly</option> <replaceable>mode</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>s</option> <replaceable>threads</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-sort-file-max-size</option> <replaceable>bytes</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-ssl-cert-file</option> <replaceable>source</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-ssl-dialog</option> <replaceable>type</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-ssl-key-file</option> <replaceable>source</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>t</option> <replaceable>socket_timeout</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>-writable-root</option> <replaceable>path</replaceable></term>
</listitem>
</varlistentry>
<varlistentry><term><option>?</option></term><term><option>-help</option></term>
<listitem><para>显示用法消息。</para>
</listitem>
</varlistentry>
</variablelist>
<para>针对软件包系统信息库的其他管理功能是由 <command>pkgrepo</command> 提供的。</para>
</refsect1>
<refsect1 role="other"><title>库配置</title>
<para>如果使用 <option>-cfg</option> 选项提供了配置文件(而非 SMF FMRI),则 depot 服务器将以简单的文本格式读取和写入所有配置数据。在上述“SMF 属性”中描述了配置数据。配置数据包含各个部分,以 <literal>[<replaceable>section</replaceable>]</literal> 标题开始,后跟 <literal>name = <replaceable>value</replaceable></literal> 条目。后续部分为 RFC 822 样式。可以跨多个行拆分数据,以空格开始后续行即可。</para>
<para>必须使用上述“选项”中列出的选项提供配置文件中未提供的任何所需值。样例配置文件可能类似如下:</para>
<programlisting>[pkg]
port = 80
[pub_example_com]
feed_description = example.com's software
update log</programlisting>
</refsect1>
<refsect1 role="examples"><title></title>
<example><title>启用 depot 服务器</title>
</example>
<example id="GLHBM"><title>更改服务器的侦听端口。</title>
</example>
<example id="GLHAW"><title>启用镜像</title>
</example>
</refsect1>
<refsect1 role="environment-variables"><title></title>
<variablelist>
<varlistentry><term><envar>PKG_REPO</envar></term>
<listitem><para>指定要提供的系统信息库所在的目录。如果指定 <option>d</option>,将忽略该值。</para>
</listitem>
</varlistentry>
<varlistentry><term><envar>PKG_DEPOT_CONTENT</envar></term>
<listitem><para>指定库 (depot) 提供的静态内容所在的目录。该目录应包含下面介绍的“文件”下的文件,虽然其中的内容可能与提供的缺省内容不同。</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="exit-status"><title></title>
<para>将返回以下退出值:</para>
<variablelist termlength="xtranarrow">
<varlistentry><term><returnvalue>0</returnvalue></term>
<listitem><para>操作成功。</para>
</listitem>
</varlistentry>
<varlistentry><term><returnvalue>1</returnvalue></term>
<listitem><para>出现错误。</para>
</listitem>
</varlistentry>
<varlistentry><term><returnvalue>2</returnvalue></term>
<listitem><para>指定的命令行选项无效。</para>
</listitem>
</varlistentry>
<varlistentry><term><returnvalue>99</returnvalue></term>
<listitem><para>发生了意外的异常。</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="files"><title></title>
<variablelist termlength="wholeline">
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="attributes"><title></title>
<para>有关下列属性的说明,请参见 <literal>attributes</literal>(7):</para>
<informaltable frame="all" orient="port">
<tgroup cols="2" colsep="1" rowsep="1"><colspec colname="col1" colwidth="198*" align="left" /><colspec colname="col2" colwidth="198*" align="left" /><thead>
<row>
<entry align="center">
<para>属性类型</para>
</entry>
<entry align="center">
<para>属性值</para>
</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left">
<para>可用性</para>
</entry>
<entry align="left">
</entry>
</row>
<row>
<entry align="left">
<para>接口稳定性</para>
</entry>
<entry align="left">
<para>Uncommitted(未确定)</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable></refsect1>
<refsect1 role="see-also"><title></title>
<para><olink targetdoc="refman" targetptr="pkg.depot-config-8"><citerefentry><refentrytitle>pkg.depot-config</refentrytitle><manvolnum>8</manvolnum></citerefentry></olink>、<olink targetdoc="refman" targetptr="dns-sd-8"><citerefentry><refentrytitle>dns-sd</refentrytitle><manvolnum>8</manvolnum></citerefentry></olink>、<olink targetdoc="refman" targetptr="MDNSD-8"><citerefentry><refentrytitle>mdnsd</refentrytitle><manvolnum>8</manvolnum></citerefentry></olink>、<olink targetdoc="refman" targetptr="pkg-1"><citerefentry><refentrytitle>pkg</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink>、<olink targetdoc="refman" targetptr="pkgrepo-1"><citerefentry><refentrytitle>pkgrepo</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink>、<olink targetdoc="refman" targetptr="pkgsend-1"><citerefentry><refentrytitle>pkgsend</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink>、<literal>syslogd</literal>(8)、<olink targetdoc="refman" targetptr="SMF-7"><citerefentry><refentrytitle>smf</refentrytitle><manvolnum>7</manvolnum></citerefentry></olink></para>
<para><olink targetdoc="CCOSP">《<citetitle remap="book">在 Oracle Solaris 11.2 中复制和创建软件包系统信息库</citetitle>》</olink></para>
</refsect1>
<refsect1 role="notes"><title></title>
<para><literal>pkd.depotd</literal> 服务由 SMF 管理,在服务标识符 <literal>svc:/application/pkg/server</literal> 下。</para>
<para>要控制对库的读取访问权限,可以将 HTTP 反向代理与验证方法(例如 <command>pkg</command> 本身就支持的基于客户机的 SSL 证书访问权限)结合使用。</para>
<para>要轻松地通过具有最低 Apache 配置的单个 Apache 实例为多个系统信息库提供服务,请将特定 <literal>pkg/server</literal> 实例的 <literal>pkg/standalone</literal> 属性设置为 <literal>false</literal>,并将该实例的 <literal>pkg/readonly</literal> 属性设置为 <literal>true</literal>。有关更多信息,请参见 <literal>pkg.depot-config</literal>(8) 手册页。</para>
<para>配置的更改,或使用基于文件系统的操作对软件包数据的更改,需要重新启动 depot 服务器进程,从而使更改能够反映在操作和输出中。使用下列方法之一来重新启动 depot 服务器进程:</para>
<itemizedlist>
<listitem><para>使用 <command>svcadm</command> 重新启动 <literal>application/pkg/server</literal> 实例。</para></listitem>
<listitem><para>使用 <command>kill</command> 向 depot 服务器进程发送一个 <literal>SIGUSR1</literal> 信号。这样可执行正常的重新启动,使进程保持不变,但重新加载所有配置、软件包和搜索数据:</para>
<screen># <userinput>kill -USR1 <replaceable>pid</replaceable></userinput></screen>
</listitem>
</itemizedlist>
</refsect1>
</refentry>