Archive:Zypper manual
zypper 1.14.33
名称
zypper - ZYpp 系统管理库的命令行界面 (libzypp)
概要
zypper [--global-opts] command [--command-opts] [command-arguments]
zypper subcommand [--command-opts] [command-arguments]
zypper help command
描述
zypper 是 ZYpp 系统管理库 (libzypp) 的命令行界面。它可以用于安装、更新、删除软件、管理仓库、执行各种查询等等。
概念
以下大多数概念对于基于 libzypp 包管理库的所有应用程序都是通用的,但也有一些 zypper 特有的内容。
系统软件包
系统上安装的软件包集合有时被称为仓库 @System 或 系统软件包。与提供可以安装的软件包的可用仓库不同,@System 提供只能删除的软件包。已安装但至少不在可用仓库中提供的软件包通常被称为 不需要的、孤立的 或 丢弃的。
仓库
Libzypp 使用仓库元数据,这是从 RPM 软件包和其他数据(如补丁信息、模式定义等)中提取的关于软件包及其关系的的信息。这些数据与 RPM 文件一起存储在称为 仓库 的文件夹中。仓库可以放置在各种介质上,例如 HTTP 或 FTP 服务器、DVD 或本地磁盘上的文件夹。
zypper 中有一组专门用于操作仓库的命令。许多命令和选项将仓库作为参数。有关更多详细信息,请参阅 命令 子部分 仓库管理。
GPG 检查
禁用 GPG 检查不推荐。 签名数据使接收者能够验证数据签名后是否发生过修改。接受没有、错误或未知的签名的数据可能导致系统损坏,在极端情况下甚至导致系统受到损害。
Zypp 通过检查其 GPG 签名来验证仓库元数据的真实性。如果仓库元数据使用受信任的密钥签名并成功验证,则如果它们与元数据中提供的校验和匹配,则可以接受来自该仓库的软件包进行安装。使用未签名的仓库需要确认。
如果仓库元数据未签名,则在接受进行安装之前,将检查每个下载的 rpm 软件包的 GPG 签名。来自未签名仓库的软件包需要有效的 GPG 签名。使用未签名软件包需要确认。
以上是 /etc/zypp/zypp.conf 中设置定义的默认行为。
addrepo 和 modifyrepo 命令提供了进一步的选项来调整每个仓库的行为。例如,可以放宽为特定仓库确认安装未签名软件包的需要。但是,如果您这样做,您应该非常确定攻击者很难修改仓库内的软件包或在传输到您的计算机的途中修改软件包数据。有关命令选项的详细信息,请参阅 命令 部分。
资源标识符 (URI)
要指定仓库或其他资源(RPM 文件、.repo 文件)的位置,可以使用 libzypp 支持的任何类型的 URI。此外,Zypper 在 addrepo 命令中接受一种特殊的 URI,用于标识 openSUSE 构建服务 (OBS) 仓库。这些 URI 的形式为 obs://project/[platform]。
有关完整的列表和 支持的 URI 格式 的示例,请参阅 命令 子部分 仓库管理。
刷新
刷新仓库意味着从介质(如果需要)下载软件包元数据,将其存储在本地缓存中(通常在 /var/cache/zypp/raw/alias 目录中),并将元数据预解析为 .solv 文件(构建 solv 缓存),通常在 /var/cache/zypp/solv/alias 下。
元数据要么自动刷新,要么应用户请求刷新。自动刷新 在从数据库读取元数据之前发生,如果仓库的 自动刷新已启用 并且报告元数据已过时。如果 自动刷新已禁用,则仅在用户请求时才刷新仓库。可以通过调用 zypper refresh(有关 refresh 命令的文档,请参阅)来请求刷新。
在实际执行刷新之前,会检查元数据是否有更改。通过下载一个或两个元数据索引文件(小文件)并比较缓存文件与远程文件的校验和来检测更改。如果文件不同,则仓库已过时并将被刷新。
要延迟一段时间(以分钟为单位)的最新检查(以及自动刷新),请编辑 ZYpp 配置文件(/etc/zypp/zypp.conf)中 repo.refresh.delay 属性的值。这意味着 zypper 将不会尝试下载和检查索引文件,并且您将能够使用 zypper 进行搜索或信息等操作,而无需互联网访问或 root 权限。
服务
服务比仓库高级,用于管理仓库或执行一些特殊任务。Libzypp 当前支持 仓库索引服务 (RIS) 和 插件服务。
仓库索引服务 (RIS) 是一种特殊类型的仓库,其中包含其他仓库的列表。该列表可以由服务器根据某些 URI 参数或用户名动态生成,也可以是静态的。一旦将此类服务添加到您的系统,zypper 将负责添加、修改或删除这些仓库以反映当前的列表。有关更多详细信息,请参阅 服务管理 和 ⟨ URL: https://en.opensuse.net.cn/openSUSE:Standards_Repository_Index_Service ⟩。
软件包类型
Zypper 使用几种类型的资源对象,称为 resolvables。一个 resolvables 可能是 package、patch、pattern、product;基本上是具有与其他对象依赖关系的任何 对象类型。
package.spec
一个普通的 RPM 软件包。
patch
一个发布的补丁与受影响/易受攻击的软件包集合冲突。只要安装了任何这些受影响/易受攻击的版本,冲突就会触发,并且该补丁被归类为 needed、optional 或 unwanted(如果该补丁被锁定)。选择该补丁,通过将所有已安装和受影响/易受攻击的软件包更新到提供修复的版本来解决冲突。更新软件包时,zypper 始终以最新的可用版本为目标。已解决的补丁被归类为 applied 或 not needed,具体取决于它们是否引用实际安装的软件包。+ 根据缺陷的类型,补丁按 category 和 severity 进行分类。常用的 category 值包括 security、recommended、optional、feature、document 或 yast。常用的 severity 值包括 critical、important、moderate、low 或 unspecified。+ 请注意,patch 命令默认情况下不应用可选补丁(category optional 或 feature)。如果您实际上想将所有可选补丁视为需要的补丁,请说 patch --with-optional。可以使用 install 命令应用特定的补丁(例如 zypper install patch:openSUSE-2014-7)。
pattern
一组软件包,需要或推荐安装某些功能。
product
安装产品所需的软件包组。
srcpackage
源代码软件包 (.src.rpm)。此类型在 search 和 install 命令中起作用。
application
遗留:自 libzypp-17.7.0 以来,此类型不再可用。
在整个手册中,我们经常将 resolvables 简单地称为 软件包,将 resolvables 类型称为 软件包类型 或 种类。这些类型名称可以用作 --type 选项在 install、info 或 search 等多个命令中的参数。命令还应允许将 resolvables 指定为 KIND:NAME(例如 patch:openSUSE-2014-7)。
软件包依赖关系
软件软件包以各种方式相互依赖。软件包通常 require 或 recommend 其他软件包,但它们也可能与这些软件包 conflict。软件包可能支持特定的硬件或语言设置。Zypper 使用 依赖关系求解器 来确定需要安装哪些软件包才能满足用户的请求。
如果您没有请求特定版本的软件包,求解器将选择一个合理版本。求解器的总体态度是在解决任务时专注于安装请求的软件包的最佳版本,并根据需要添加或更新依赖项。除了 Focus on Job(默认值)之外,还有两种其他焦点模式
在 Focus on Installed 模式下,求解器专注于对已安装的软件包进行尽可能少的更改。如果依赖项需要较少的系统更改,则选择旧版本的请求的软件包是有效的。求解器将尝试避免更新已安装的软件包。
在 Focus on Update 模式下,求解器专注于更新请求的软件包及其所有依赖项,尽可能多地更新。请注意,在这种模式下安装单个软件包很容易导致迷你系统更新。
对于单个命令,可以使用 --solver-focus MODE 开关设置焦点模式。有效模式为 Job、Installed 或 Update。如果您想更改系统的默认模式,请设置 [/etc/zypp/zypp.conf:solver.focus] 为所需的值。
自动安装的软件包
为了解决用户的请求,依赖关系求解器添加的软件包被记住为“自动安装”的软件包。如果不再有用户安装的软件包依赖于它们,则以后可以删除它们(例如,通过 zypper remove --clean-deps)。
在 S+tatus+ 列中,search 命令区分用户安装的软件包 (i+) 和自动安装的软件包 (i)。
软件包文件冲突
当两个软件包尝试安装具有相同名称但内容不同的文件时,会发生文件冲突。如果安装软件包的更新版本而不删除旧版本,或者如果两个不相关的软件包各自安装具有相同名称的文件,则可能会发生这种情况。
由于检查文件冲突需要访问要安装的每个软件包的完整文件列表,因此只有在提前下载所有软件包后(请参阅 --download-in-advance),zypper 才能检查文件冲突。如果您正在执行 --dry-run,则不会下载任何软件包,因此文件冲突检查将跳过软件包缓存中不可用的软件包。要获得有意义的文件冲突检查,请使用 --dry-run 连同 --download-only。
由于文件冲突的原因通常是糟糕的软件包设计或构建软件包的人员之间缺乏协调,因此它们不容易解决。通过使用 --replacefiles 选项,您可以强制 zypper 替换冲突的文件。但是,这可能会损坏被替换文件所属的软件包。
命令
zypper 提供了一组 命令。每个命令都接受 全局选项 部分中列出的选项。这些选项必须在命令名称之前指定。此外,许多命令都有特定的选项,这些选项在本节中列出。这些命令特定的选项必须在命令名称之后和任何命令参数之前指定。
Zypper 还提供有限的支持,用于以任何语言编写扩展/子命令。有关详细信息,请参阅 子命令 部分。
常规命令
help [command]
显示帮助文本。如果没有任何参数调用(仅 zypper 或 zypper help),zypper 将显示全局帮助文本,其中列出了所有可用的全局选项和命令。 + 如果使用 command 名称参数调用,zypper 将显示指定命令的帮助,如果该命令存在。可以使用命令名称的完整和简短形式。 + 为了您的方便,zypper help 还可以通过以下任何一种方式调用
$ zypper -h|--help [command]
$ zypper [command] -h|--help
shell (sh)
启动 shell 以在一个会话中输入多个命令。使用 exit、quit 或 Ctrl-D 退出 shell。 + shell 支持尚不完善,预计会出现错误。但是,由于 SAT 求解器及其工具(openSUSE 11.0)使 libzypp 变得非常快速,因此没有迫切需要使用 shell,但您仍然可以尝试使用它。
软件包管理命令
info (if) [options] name...
显示有关指定软件包的详细信息。 + 对于每个指定的软件包,zypper 会在定义的仓库中找到可用的最佳版本,并显示该软件包的信息。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
-t, --type type
软件包类型(默认:package)。请参阅 Package Types 部分以获取可用软件包类型的列表。
--provides
显示软件包提供的符号。
--requires
显示软件包要求的符号。
--conflicts
显示软件包冲突的符号。
--obsoletes
显示软件包废弃的符号。
--recommends
显示软件包推荐的符号。
--suggests
显示软件包建议的符号。
--supplements
显示软件包补充的符号。
示例
$ zypper info workrave
显示有关 package workrave 的信息
$ zypper info -t patch libzypp
显示有关 patch libzypp 的信息
$ zypper info -t pattern lamp_server
显示有关 pattern lamp_server 的信息
install (in) [options] name|capability|rpm_file_uri...
安装或更新软件包。
可以通过其 name 或它们提供的 capability 来选择软件包。
+ capability 的格式为“NAME[.ARCH][ OP EDITION]”,其中 ARCH 是架构代码,OP 是 <、<=、=、>= 或 > 中的一个,而 EDITION 是“VERSION[-RELEASE]”。例如:zypper=0.8.8-2 + NAME 组件不仅是软件包名称,还是软件包提供的任何符号:/bin/vi、libcurl.so.3、perl(Time::ParseDate)。请记住使用引号来保护 shell 中的特殊字符,例如:zypper>0.8.10 或 'zypper>0.8.10'。 + 如果未指定 EDITION,将安装最新的可安装版本。这也意味着如果软件包已安装并且有更新版本可用,它将被升级到最新的可安装版本。 + 如果未指定 ARCH,或者能力名称字符串的最后一个点后没有已知的架构,求解器会将整个字符串视为能力名称。如果 ARCH 已知,求解器将选择匹配该架构的软件包,并且如果找不到该软件包,则会发出抱怨。
Zypper 还可以安装 纯 RPM 文件,同时尝试使用定义的仓库中的软件包来满足其依赖关系。可以通过在 install 命令参数中指定其位置(本地路径或 URI)来安装纯 RPM 文件。例如:
+ $ zypper install ~/rpms/foo.rpm ⟨ URL: http://some.site/bar.rpm ⟩ 。 + Zypper 将报告它找不到的软件包。此外,在交互模式下,zypper 将继续安装其余请求的软件包,并在非交互模式下立即中止。在两种情况下,zypper 在完成操作后都会返回 ZYPPER_EXIT_INF_CAP_NOT_FOUND。 + Zypper 将在临时 plaindir 仓库中收集文件,并标记相应的软件包以进行安装。如果使用 --download-only,下载的软件包将可用在 /var/cache/zypper/RPMS 中,直到您实际安装它们或调用 zypper clean 以清除软件包缓存。
在 install 命令中,您还可以通过在名称前加上 - 或 ! 字符来指定要删除的软件包。例如
+ $ zypper install \!Firefox + 与 zypper remove Firefox 删除 Firefox 及其依赖软件包不同,install 命令将尝试通过查找 Firefox 的替代方案来保留依赖软件包已安装状态。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。 + 使用 --repo 不推荐,因为它当前会隐藏未提及的仓库,导致求解器做出不专业的决策。将来 --repo 将成为 --from 的别名。
-t, --type type
要安装的软件包类型(默认:package)。请参阅 Package Types 部分以获取可用软件包类型的列表。使用 zypper se -t type [name] 查找此类型的可用项目,并使用 zypper info -t type name 显示有关该项目的更多详细信息。 + 如果 patch 指定,zypper 将安装和/或删除软件包以满足指定的补丁。这是一种确保安装特定错误修复的方法。使用 zypper list-patches 查找适用的补丁。 + 如果 product 或 pattern 指定,zypper 确保安装所有必需的(以及可选的推荐)软件包。
-n, --name
按名称选择软件包,不要尝试按能力选择。
-f, --force
即使该项目已安装(重新安装)、降级或更改供应商或架构,也进行安装。
--oldpackage
允许用旧版本替换较新的版本。如果您正在进行回滚,这会很有用。与 --force 不同,如果该项目已安装请求的版本,它不会强制重新安装。
--from alias|name|#|URI
从指定的仓库中选择软件包。如果 install 命令中指定的字符串与此选项中指定的仓库中的软件包匹配,则它们将被标记为安装。此选项当前意味着 --name,但允许使用通配符来指定软件包。
-C, --capability
按能力选择软件包。
-l, --auto-agree-with-licenses
自动对第三方许可确认提示说 yes。通过使用此选项,您选择同意此命令将安装的所有第三方软件的许可。此选项对于管理员在多台机器上安装相同的软件包集(通过自动化过程)并在确认许可之前很有用。
--auto-agree-with-product-licenses
自动接受仅限产品许可。这由 SUSEconnect 等工具使用,这些工具在注册产品之前会要求确认。因此,在安装时无需再次确认产品许可。
--replacefiles
即使软件包替换了其他已安装软件包的文件,也进行安装。默认情况下,将文件冲突视为错误。--download-as-needed 会禁用文件冲突检查,因为需要提前访问所有软件包的文件列表才能执行检查。
-D, --dry-run
测试安装,实际上不安装任何软件包。如果与 --download-only 一起使用,可以执行有意义的文件冲突检查(请参阅“软件包文件冲突”部分)。
--details
显示详细的安装摘要。
-y, --no-confirm
不需要用户交互。--non-interactive 全局选项的别名。
--allow-unsigned-rpm
静默安装作为命令行参数给定的未签名 rpm 软件包。
与求解器相关的选项
--debug-solver
创建求解器测试用例以进行调试。如果您认为依赖关系没有正确解决,请使用此选项,并将生成的 /var/log/zypper.solverTestCase 目录附加到您的错误报告。要使用此选项,只需将其添加到有问题安装或删除命令中即可。
--force-resolution
强制求解器通过允许删除具有未满足需求的软件包来找到解决方案。这是删除软件包(zypper remove)时的默认设置。如果命令行中同时指定了 --force-resolution 和 --no-force-resolution,则此选项将覆盖 --no-force-resolution。
-R, --no-force-resolution
不要强制求解器找到解决方案。而是报告依赖关系问题,并提示用户手动解决它们。默认情况下,除非删除软件包(zypper remove),否则会这样做。
--solver-focus MODE
设置求解器在解决作业时的总体态度。有效模式为 Job、Installed 或 Update。有关详细信息,请参阅“软件包依赖关系”部分。
--recommends
除了必需的软件包外,还安装推荐的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
--no-recommends
不安装推荐的软件包,而仅安装必需的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
下载和安装模式选项
-d, --download-only
仅下载软件包以供以后安装。如果与 --dry-run 一起使用,可以执行有意义的文件冲突检查(请参阅“软件包文件冲突”部分)。
--download-in-advance
首先下载所有软件包,然后开始安装。这是默认设置。
--download-in-heaps
下载一组最小的软件包,这些软件包可以在不使系统处于损坏状态的情况下安装,然后安装它们。然后下载并安装另一组软件包,直到全部安装完毕。这有助于在无需提前下载 全部 软件包的情况下保持系统的一致状态,从而结合了 --download-in-advance 和 --download-as-needed 的优点。这是默认模式。 + 注意:虽然求解器无法构建组,但其行为与 --download-in-advance 相同。
--download-as-needed
下载一个软件包,立即安装它,然后继续其余软件包,直到全部安装完毕。
--download mode
使用指定的下载和安装模式。可用模式为:only、in-advance、in-heaps、as-needed。有关其描述,请参阅相应的 --download-mode 选项。
专家选项
除非您知道需要它们,否则不要使用它们。
--allow-downgrade, --no-allow-downgrade
是否允许降级已安装的可解析项。
--allow-name-change, --no-allow-name-change
是否允许更改已安装的可解析项的名称。将其设置为 no 不会替换已重命名的软件包。
--allow-arch-change, --no-allow-arch-change
是否允许更改已安装的可解析项的架构。
--allow-vendor-change, --no-allow-vendor-change
是否允许更改已安装的可解析项的供应商。将其设置为 no 可能很有用,如果您不希望来自外国仓库的软件包更改为发行版的版本(反之亦然)。
示例
$ zypper install -t pattern lamp_server
安装 lamp_server 模式。
$ zypper install --no-recommends gv
安装 GhostScript 查看器,但忽略推荐的软件包。
$ zypper install virtualbox-ose-2.0.6
$ zypper install virtualbox-ose=2.0.6
$ zypper install virtualbox-ose = 2.0.6
安装 virtualbox-ose 软件包的版本 2.0.6。
source-install (si) name...
安装指定的源代码软件包及其构建依赖项。如果给出了二进制软件包的名称,则会查找并安装相应的源代码软件包。 + 此命令将尝试找到源代码软件包的最新可用版本,并使用 rpm -i 安装它们,可以选择性地与构建源代码软件包所需的所有软件包一起安装。rpm 安装源代码软件包的默认位置是 /usr/src/packages/{SPECS,SOURCES},但可以在本地 rpm 配置中更改这些值。如有疑问,请尝试执行 rpm --eval "%{_specdir} and %{_sourcedir}"。 + 请注意,源代码软件包必须在您使用的仓库中可用。您可以使用以下命令检查仓库是否包含任何源代码软件包:
$ zypper search -t srcpackage -r alias|name|#|URI
-d, --build-deps-only
仅安装指定软件包的构建依赖项。
-D, --no-build-deps
不安装构建依赖项。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
--download-only
仅下载软件包,不安装。
示例
$ zypper si -d dbus-1
安装 dbus-1 源代码软件包的构建依赖项。
verify (ve) [options]
检查已安装软件包的依赖项是否已满足。 + 如果发现任何依赖关系问题,zypper 会建议安装或删除软件包以解决这些问题。
-D, --dry-run
测试修复,实际上不执行任何操作。如果与 --download-only 一起使用,可以执行有意义的文件冲突检查(请参阅“软件包文件冲突”部分)。
--details
显示详细的安装摘要。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
-y, --no-confirm
不需要用户交互。--non-interactive 全局选项的别名。
与求解器相关的选项
--debug-solver
创建求解器测试用例以进行调试。如果您认为依赖关系没有正确解决,请使用此选项,并将生成的 /var/log/zypper.solverTestCase 目录附加到您的错误报告。要使用此选项,只需将其添加到有问题安装或删除命令中即可。
--force-resolution
强制求解器通过允许删除具有未满足需求的软件包来找到解决方案。这是删除软件包(zypper remove)时的默认设置。如果命令行中同时指定了 --force-resolution 和 --no-force-resolution,则此选项将覆盖 --no-force-resolution。
-R, --no-force-resolution
不要强制求解器找到解决方案。而是报告依赖关系问题,并提示用户手动解决它们。默认情况下,除非删除软件包(zypper remove),否则会这样做。
--solver-focus MODE
设置求解器在解决作业时的总体态度。有效模式为 Job、Installed 或 Update。有关详细信息,请参阅“软件包依赖关系”部分。
--recommends
除了必需的软件包外,还安装推荐的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
--no-recommends
不安装推荐的软件包,而仅安装必需的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
专家选项
除非您知道需要它们,否则不要使用它们。
--allow-downgrade, --no-allow-downgrade
是否允许降级已安装的可解析项。
--allow-name-change, --no-allow-name-change
是否允许更改已安装的可解析项的名称。将其设置为 no 不会替换已重命名的软件包。
--allow-arch-change, --no-allow-arch-change
是否允许更改已安装的可解析项的架构。
--allow-vendor-change, --no-allow-vendor-change
是否允许更改已安装的可解析项的供应商。将其设置为 no 可能很有用,如果您不希望来自外国仓库的软件包更改为发行版的版本(反之亦然)。
此命令还接受 install 命令中描述的下载和安装模式选项。
install-new-recommends (inr) [options]
安装已安装软件包新添加的推荐软件包。此命令基本上会重新评估所有已安装软件包的推荐,并相应地填充系统。 您不希望在小型或最小系统上无条件调用此命令,因为它很容易添加大量软件包。 + 如果调用 zypper inr --no-recommends,它将仅查找支持可用硬件、语言或文件系统的软件包。这在添加了例如新的硬件或驱动程序仓库后很有用。这也是如果已在 [zypp.conf:solver.onlyRequires] 中设置了默认行为。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
-D, --dry-run
测试安装,实际上不安装任何内容。如果与 --download-only 一起使用,可以执行有意义的文件冲突检查(请参阅“软件包文件冲突”部分)。
--details
显示详细的安装摘要。
与求解器相关的选项
--debug-solver
创建求解器测试用例以进行调试。如果您认为依赖关系没有正确解决,请使用此选项,并将生成的 /var/log/zypper.solverTestCase 目录附加到您的错误报告。要使用此选项,只需将其添加到有问题安装或删除命令中即可。
--force-resolution
强制求解器通过允许删除具有未满足需求的软件包来找到解决方案。这是删除软件包(zypper remove)时的默认设置。如果命令行中同时指定了 --force-resolution 和 --no-force-resolution,则此选项将覆盖 --no-force-resolution。
-R, --no-force-resolution
不要强制求解器找到解决方案。而是报告依赖关系问题,并提示用户手动解决它们。默认情况下,除非删除软件包(zypper remove),否则会这样做。
--solver-focus MODE
设置求解器在解决作业时的总体态度。有效模式为 Job、Installed 或 Update。有关详细信息,请参阅“软件包依赖关系”部分。
--recommends
除了必需的软件包外,还安装推荐的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
--no-recommends
不安装推荐的软件包,而仅安装必需的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
专家选项
除非您知道需要它们,否则不要使用它们。
--allow-downgrade, --no-allow-downgrade
是否允许降级已安装的可解析项。
--allow-name-change, --no-allow-name-change
是否允许更改已安装的可解析项的名称。将其设置为 no 不会替换已重命名的软件包。
--allow-arch-change, --no-allow-arch-change
是否允许更改已安装的可解析项的架构。
--allow-vendor-change, --no-allow-vendor-change
是否允许更改已安装的可解析项的供应商。将其设置为 no 可能很有用,如果您不希望来自外国仓库的软件包更改为发行版的版本(反之亦然)。
此命令还接受 install 命令中描述的下载和安装模式选项。
remove (rm) [options] name...
remove (rm) [options] --capability capability...
删除(卸载)软件包。 + remove 命令将卸载所选软件包及其依赖软件包。它不会尝试安装替代方案以保留已安装的依赖软件包。如果您想要这样做,请使用 zypper install !name。 + 软件包可以通过其名称或它们提供的能力来选择。有关软件包选择的详细信息,请参阅 install 命令描述。
-r, --repo 别名|名称|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
-t, --type 类型
软件包类型(默认:package)。请参阅 软件包类型 部分获取可用软件包类型的列表。 + 由于 补丁 不是通过复制文件或记录数据库条目进行安装的,因此即使 zypper 将它们显示为已安装,也无法卸载它们。已安装状态完全基于其所需依赖项的已安装状态。如果满足这些依赖项,则该补丁将被视为已安装。
-n, --name
按名称选择软件包(默认)。
-C, --capability
按能力选择软件包。
-D, --dry-run
测试删除软件包,实际上不删除任何内容。
--details
显示详细的安装摘要。
-y, --no-confirm
不需要用户交互。--non-interactive 全局选项的别名。
与求解器相关的选项
--debug-solver
创建求解器测试用例以进行调试。如果您认为依赖关系没有正确解决,请使用此选项,并将生成的 /var/log/zypper.solverTestCase 目录附加到您的错误报告。要使用此选项,只需将其添加到有问题安装或删除命令中即可。
--force-resolution
强制求解器找到解决方案,允许删除不满足需求的软件包。这是删除软件包时的默认行为(zypper remove)。如果命令行中同时指定了这两个选项,此选项将覆盖 --no-force-resolution。
-R, --no-force-resolution
不要强制求解器找到解决方案。而是报告依赖问题并提示用户手动解决它们。这是默认行为,除非删除软件包(zypper remove)。
--solver-focus MODE
设置求解器在解决任务时的总体态度。有效模式为 Job、 Installed 或 Update。有关详细信息,请参阅 软件包依赖项 部分。
-u, --clean-deps
自动删除在删除请求的软件包后变得不再需要的依赖项。
-U, --no-clean-deps
不自动删除不再需要的依赖项。
purge-kernels [选项]
自动删除已安装的内核。 + 自动清理已安装的内核,具体规则在 [zypp.conf:multiversion.kernels] 中定义,可以指定为 <版本>、latest(-N)、running、oldest(+N)。
--details
显示详细的安装摘要。
-D, --dry-run
测试删除软件包,实际上不删除任何内容。
Update Management Commands
list-updates (lu) [选项]
列出可用的更新。 + 此命令仅列出可安装的更新,即没有依赖问题或不更改软件包供应商的更新。此列表是 update 命令将建议安装的内容。要列出所有具有较新版本的软件包,请使用 --all 选项。
-t, --type type
软件包类型(默认:package)。请参阅 软件包类型 部分获取可用软件包类型的列表。 + 如果指定了 patch,zypper 将表现得好像执行了 list-patches 命令。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
-a, --all
列出所有具有较新版本的软件包,无论它们是否可安装。
--best-effort
请参阅 update 命令的说明。
专家选项
除非您知道需要它们,否则不要使用它们。
--allow-downgrade, --no-allow-downgrade
是否允许降级已安装的可解析项。
--allow-name-change, --no-allow-name-change
是否允许更改已安装可解析项的名称。将其设置为 no 将不会替换已被重命名的软件包。
--allow-arch-change, --no-allow-arch-change
是否允许更改已安装的可解析项的架构。
--allow-vendor-change, --no-allow-vendor-change
是否允许更改已安装可解析项的供应商。将其设置为 no 可能有用,如果您不希望来自外部仓库的软件包更改为发行版的版本(反之亦然)。
update (up) [选项] [packagename]...
使用较新版本更新已安装的软件包,尽可能。 + 此命令不会更新需要更改软件包供应商的软件包,除非供应商在 /etc/zypp/vendors.d 中指定,或者需要手动解决依赖问题。这些不可安装的更新将在摘要的单独部分中列出为“以下软件包更新将不会安装:”。 + 要更新单个软件包,请指定一个或多个软件包名称。您可以使用 * 和 ? 通配符字符在软件包名称中指定与模式匹配的多个软件包。
-t, --type type
软件包类型(默认:package)。请参阅 软件包类型 部分获取可用软件包类型的列表。 + 如果指定了 patch,zypper 将表现得好像执行了 patches 命令。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
--skip-interactive
这将跳过交互式补丁,即需要重新启动、包含消息或更新需要确认许可的软件包的补丁。
--with-interactive
避免在非交互式模式下跳过交互式补丁。
-l, --auto-agree-with-licenses
自动对第三方许可确认提示说 yes。通过使用此选项,您选择同意此命令将安装的所有第三方软件的许可。此选项对于管理员在多台机器上安装相同的软件包集(通过自动化过程)并在安装前确认许可非常有用。
--auto-agree-with-product-licenses
自动接受仅限产品许可。这由 SUSEconnect 等工具使用,这些工具在注册产品之前会要求确认。因此,在安装时无需再次确认产品许可。
--replacefiles
即使它们替换了其他已安装软件包中的文件,也安装这些软件包。默认情况下,将文件冲突视为错误。 --download-as-needed 禁用文件冲突检查,因为需要提前访问所有软件包的文件列表才能执行检查。
-D, --dry-run
测试更新,实际上不安装或更新任何软件包。如果与 --download-only 一起使用,可以执行有意义的文件冲突检查(请参阅 软件包文件冲突 部分)。
--details
显示详细的安装摘要。
--best-effort
以“尽力而为”的方式进行更新。此方法不会显式选择具有最佳版本和体系结构的软件包,而是请求安装具有高于已安装版本的新软件包,并将剩余的交给依赖关系求解器。此方法始终用于软件包,并且对于产品和模式是可选的。它不适用于补丁。
-y, --no-confirm
不需要用户交互。--non-interactive 全局选项的别名。
与求解器相关的选项
--debug-solver
创建求解器测试用例以进行调试。如果您认为依赖关系没有正确解决,请使用此选项,并将生成的 /var/log/zypper.solverTestCase 目录附加到您的错误报告。要使用此选项,只需将其添加到有问题安装或删除命令中即可。
--force-resolution
强制求解器找到解决方案,允许删除不满足需求的软件包。这是删除软件包时的默认行为(zypper remove)。如果命令行中同时指定了这两个选项,此选项将覆盖 --no-force-resolution。
-R, --no-force-resolution
不要强制求解器找到解决方案。而是报告依赖问题并提示用户手动解决它们。这是默认行为,除非删除软件包(zypper remove)。
--solver-focus MODE
设置求解器在解决任务时的总体态度。有效模式为 Job、Installed 或 Update。请参阅 软件包依赖项 部分获取详细信息。
--recommends
除了必需的软件包外,还安装推荐的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
--no-recommends
不安装推荐的软件包,而仅安装必需的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
专家选项
除非您知道需要它们,否则不要使用它们。
--allow-downgrade, --no-allow-downgrade
是否允许降级已安装的可解析项。
--allow-name-change, --no-allow-name-change
是否允许更改已安装可解析项的名称。将其设置为 no 将不会替换已被重命名的软件包。
--allow-arch-change, --no-allow-arch-change
是否允许更改已安装的可解析项的架构。
--allow-vendor-change, --no-allow-vendor-change
是否允许更改已安装可解析项的供应商。将其设置为 no 可能有用,如果您不希望来自外部仓库的软件包更改为发行版的版本(反之亦然)。
此命令还接受 下载和安装模式选项,如 install 命令说明中所述。
list-patches (lp) [选项]
列出所有适用的补丁。 + 此命令类似于 zypper list-updates -t patch。 + 请注意,以下选项的一些可选参数必须使用 = 而不是空格指定。
-b, --bugzilla[='#[,...']]
列出所有 Bugzilla 问题的适用补丁,或其编号与给定字符串匹配的问题。
--cve[='#[,...']]
列出所有 CVE 问题的适用补丁,或其编号与给定字符串匹配的问题。
--date YYYY-MM-DD[,...]
仅列出发布日期早于(不包括)指定日期的补丁。
-g, --category category[,...]
仅列出具有此类别的补丁。请参阅 软件包类型 部分获取常用 category 值的列表。
--severity severity[,...]
仅列出具有此严重程度的补丁。请参阅 软件包类型 部分获取常用 severity 值的列表。
--issues[=string[,...]]
查找其编号、摘要或描述与指定的 string 匹配的问题。通过编号找到的问题与通过描述找到的问题分开显示。在后一种情况下,使用 zypper patch-info patchname 获取有关补丁修复的问题的信息。
-a,
- --all
默认情况下,仅列出适用于您的系统的补丁。此选项将列出所有可用的已发布补丁。此选项可以与其余 list-updates 命令选项结合使用。
--with-optional, --without-optional
是否应将适用的可选补丁视为必需或排除。默认情况下,排除可选补丁。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
patch-check (pchk)
检查补丁。显示适用的补丁数量以及其中有多少具有安全类别。 + 请参阅 退出代码 部分,了解此命令返回的 0、100 和 101 退出状态的详细信息。
--updatestack-only
仅检查影响软件包管理本身的补丁。
--with-optional, --without-optional
是否应将适用的可选补丁视为必需或排除。默认情况下,排除可选补丁。
-r, --repo alias|name|#|URI
仅检查由别名、名称、编号或 URI 指定的仓库中的补丁。此选项可以多次使用。
patch [选项]
安装所有可用的必需补丁。 + 如果有影响软件包管理本身的补丁,将首先安装这些补丁,并且会要求您再次运行 patch 命令。 + 此命令类似于 zypper update -t patch。
--updatestack-only
仅安装影响软件包管理本身的补丁并退出。
--with-update
此外,尝试更新所有未包含在补丁中的软件包。这基本上与运行 zypper update 之后相同。 + 如果 patch 命令必须首先更新更新堆栈,则该选项将被忽略,因此不能与 --updatestack-only 选项结合使用。
--with-optional, --without-optional
是否应将适用的可选补丁视为必需或排除。默认情况下,排除可选补丁。
-b, --bugzilla #[,...]
安装修复 Bugzilla 问题(按编号指定)的补丁。使用 list-patches --bugzilla 命令获取适用于特定问题的补丁列表。
--cve #[,...]
安装修复 MITRE 的 CVE 问题(按编号指定)的补丁。使用 list-patches --cve 命令获取适用于特定问题的补丁列表。
--date YYYY-MM-DD[,...]
仅安装发布日期早于(不包括)指定日期的补丁。
-g, --category category[,...]
仅安装具有此类别的补丁。使用 list-patches --category 命令获取具有特定类别的可用补丁列表。请参阅软件包类型部分获取常用 category 值的列表。
--severity severity[,...]
仅安装具有此严重程度的补丁。使用 list-patches --severity 命令获取具有特定严重程度的可用补丁列表。请参阅软件包类型部分获取常用 severity 值的列表。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
--skip-interactive
这将跳过交互式补丁,即需要重新启动、包含消息或更新需要确认许可的软件包的补丁。
--with-interactive
避免在非交互式模式下跳过交互式补丁。
-l, --auto-agree-with-licenses
自动对第三方许可确认提示说 yes。通过使用此选项,您选择同意此命令将安装的所有第三方软件的许可。此选项对于管理员在多台机器上安装相同的软件包集(通过自动化过程)并在确认许可之前很有用。
--auto-agree-with-product-licenses
自动接受仅限产品许可。这由 SUSEconnect 等工具使用,这些工具在注册产品之前会要求确认。因此,在安装时无需再次确认产品许可。
--replacefiles
即使它们替换了其他已安装软件包中的文件,也安装这些软件包。默认情况下,将文件冲突视为错误。 --download-as-needed 禁用文件冲突检查,因为需要提前访问所有软件包的文件列表才能执行检查。
-D, --dry-run
测试更新,实际上不更新。如果与 --download-only 一起使用,可以执行有意义的文件冲突检查(请参阅软件包文件冲突部分)。
--details
显示详细的安装摘要。
-y, --no-confirm
不需要用户交互。--non-interactive 全局选项的别名。
与求解器相关的选项
--debug-solver
创建求解器测试用例以进行调试。如果您认为依赖关系没有正确解决,请使用此选项,并将生成的 /var/log/zypper.solverTestCase 目录附加到您的错误报告。要使用此选项,只需将其添加到有问题安装或删除命令中即可。
--force-resolution
强制求解器通过允许删除具有未满足需求的软件包来找到解决方案。这是删除软件包(zypper remove)时的默认设置。如果命令行中同时指定了 --force-resolution 和 --no-force-resolution,则此选项将覆盖 --no-force-resolution。
-R, --no-force-resolution
不要强制求解器找到解决方案。而是报告依赖关系问题,并提示用户手动解决它们。默认情况下,除非删除软件包(zypper remove),否则会这样做。
--solver-focus MODE
设置求解器在解决作业时的总体态度。有效模式为 Job、Installed 或 Update。有关详细信息,请参阅“软件包依赖关系”部分。
--recommends
除了必需的软件包外,还安装推荐的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
--no-recommends
不安装推荐的软件包,而仅安装必需的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
专家选项
除非您知道需要它们,否则不要使用它们。
--allow-downgrade, --no-allow-downgrade
是否允许降级已安装的可解析项。
--allow-name-change, --no-allow-name-change
是否允许更改已安装的可解析项的名称。将其设置为 no 不会替换已重命名的软件包。
--allow-arch-change, --no-allow-arch-change
是否允许更改已安装的可解析项的架构。
--allow-vendor-change, --no-allow-vendor-change
是否允许更改已安装的可解析项的供应商。将其设置为 no 可能很有用,如果您不希望来自外国仓库的软件包更改为发行版的版本(反之亦然)。
此命令还接受 下载和安装模式选项,如 install 命令说明中所述。
dist-upgrade (dup) [选项]
执行发行版升级。此命令将指定仓库的状态应用于系统;升级(或降级)已安装的软件包到仓库中找到的版本,删除不再在仓库中的软件包以及对升级构成依赖问题,处理软件包拆分和重命名等。 + 如果未通过 --from 选项指定仓库,zypper 将使用所有定义的仓库执行全局升级。此全局形式的 dup 还会考虑未更改的已安装软件包并重新评估其依赖关系。如果系统包含冲突的仓库(例如,两个不同发行版版本的仓库),这可能成为一个问题。通常,如果在添加新的仓库(例如 openSUSE 13.1 和 openSUSE 13.2)后忘记删除旧的仓库,就会发生这种情况。 + 对于在其 URL 中包含发行版版本的仓库(如 ⟨ URL: https://download.opensuse.org/distribution/ ⟩ 13.1/repo/oss),使用 $releasever 变量可能有所帮助(
⟨ URL: https://download.opensuse.org/distribution/ ⟩ $releasever/repo/oss)。该变量默认替换为当前发行版的版本(13.1)。 + 可以通过使用 --releasever 全局选项临时覆盖此值。调用 zypper --releasever 13.2'...' 将导致这些仓库使用新的位置( ⟨ URL: https://download.opensuse.org/distribution/ ⟩ 13.2/repo/oss),而无需添加/删除任何内容。但是,在实际执行发行版升级之前,您需要使用 --releasever 13.2 对每个 zypper 命令使用。完成 dup 后,$releasever 将默认设置为新的发行版版本 13.2 ,不再需要 --releasever。 + 坚持将 $releasever 设置为目标发行版值可能更轻松,因此不需要 --releasever。请参阅仓库管理部分,了解有关变量替换和自定义变量定义的更多信息。 + 注意:openSUSE 中的发行版升级当前仅支持连续的发行版。要升级多个发行版,请一次升级每个连续的发行版。有关详细信息,请参阅 ⟨ URL: https://en.opensuse.net.cn/SDB:System_upgrade ⟩ 和 openSUSE 发行说明 在
⟨ URL: https://doc.opensuse.net.cn/release-notes/ ⟩ 。
--from 别名|名称|#|URI
该选项可以多次使用,并且仅将升级限制为指定的仓库。但是,所有启用的仓库对求解器可见,并将被视为满足依赖问题。
-r, --repo alias|name|#|URI
仅使用通过别名、名称、编号或 URI 指定的仓库。 + 使用 --repo 被 不推荐 ,因为它当前会向求解器隐藏未提及的仓库,从而导致不专业的决策。这是因为最初从隐藏仓库安装的软件包现在将被视为 孤立 或 删除。如果涉及依赖冲突,它们可能会被静默删除。在未来,--repo 将成为 --from 的别名。
-l, --auto-agree-with-licenses
自动对第三方许可确认提示说 yes。通过使用此选项,您选择同意此命令将安装的所有第三方软件的许可。此选项对于管理员在多台机器上安装相同的软件包集(通过自动化过程)并在确认许可之前很有用。
--auto-agree-with-product-licenses
自动接受仅限产品许可。这由 SUSEconnect 等工具使用,这些工具在注册产品之前会要求确认。因此,在安装时无需再次确认产品许可。
--replacefiles
即使它们替换了其他已安装软件包中的文件,也安装这些软件包。默认情况下,将文件冲突视为错误。 --download-as-needed 禁用文件冲突检查,因为需要提前访问所有软件包的文件列表才能执行检查。
-D, --dry-run
测试升级,实际上不安装或更新任何软件包。如果与 --download-only 一起使用,可以执行有意义的文件冲突检查(请参阅软件包文件冲突部分)。
-y, --no-confirm
不需要用户交互。--non-interactive 全局选项的别名。
--details
显示详细的安装摘要。
与求解器相关的选项
--debug-solver
创建求解器测试用例以进行调试。如果您认为依赖关系没有正确解决,请使用此选项,并将生成的 /var/log/zypper.solverTestCase 目录附加到您的错误报告。要使用此选项,只需将其添加到有问题安装或删除命令中即可。
--force-resolution
强制求解器通过允许删除具有未满足需求的软件包来找到解决方案。这是删除软件包(zypper remove)时的默认设置。如果命令行中同时指定了 --force-resolution 和 --no-force-resolution,则此选项将覆盖 --no-force-resolution。
-R, --no-force-resolution
不要强制求解器找到解决方案。而是报告依赖关系问题,并提示用户手动解决它们。默认情况下,除非删除软件包(zypper remove),否则会这样做。
--solver-focus MODE
设置求解器在解决作业时的总体态度。有效模式为 Job、Installed 或 Update。有关详细信息,请参阅“软件包依赖关系”部分。
--recommends
除了必需的软件包外,还安装推荐的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
--no-recommends
不安装推荐的软件包,而仅安装必需的软件包。默认行为由 [zypp.conf:solver.onlyRequires] 确定。
专家选项
除非您知道需要它们,否则不要使用它们。
--allow-downgrade, --no-allow-downgrade
是否允许降级已安装的可解析项。
--allow-name-change, --no-allow-name-change
是否允许更改已安装的可解析项的名称。将其设置为 no 不会替换已重命名的软件包。
--allow-arch-change, --no-allow-arch-change
是否允许更改已安装的可解析项的架构。
--allow-vendor-change, --no-allow-vendor-change
是否允许更改已安装的可解析项的供应商。将其设置为 no 可能很有用,如果您不希望来自外国仓库的软件包更改为发行版的版本(反之亦然)。
此命令还接受 下载和安装模式选项,如 install 命令说明中所述。
示例
$ zypper dup --from factory --from packman
将系统升级到 factory 和 packman 仓库提供的最新版本。
Query Commands
search (se) [选项] [查询字符串|capability]...
搜索匹配给定搜索字符串的软件包。* 和 ? 通配符 可以在搜索字符串中使用。如果搜索字符串包含在 / 中(例如 /^k.*e$/),则将其解释为 正则表达式。有关如何指定 capability的详细信息,请参阅 install 命令。+ 搜索结果以表格形式打印,列包括软件包的 S+tatus+、名称、摘要和类型。+ 在详细视图 (se -s) 中,将显示所有匹配软件包的可用实例;每个版本在每个存储库中单独一行,列包括 S+tatus+、名称、类型、版本、Arch+itecture+ 和存储库。对于已安装的软件包,存储库显示提供软件包已安装版本的存储库,或者,如果任何已知存储库未提供确切版本,则显示 (System Packages) (或 @System)。未由任何存储库提供的已安装软件包通常表示为 不需要、 孤立 或 已删除。+ S+tatus+ 列可以包含以下值:
i+
用户请求安装
i
自动安装(由解析器安装,请参阅“自动安装的软件包”部分)
v
已安装不同版本
空
以上情况均不适用
.l
如果该项目被锁定,则在第二列中显示(请参阅“软件包锁定管理”部分)
仅当版本或存储库重要时(请参阅 --details 或 --repo),并且已安装的实例与版本或存储库中列出的实例不同时,才会显示 v 状态。
+
此命令接受以下选项
--match-substrings
搜索字符串的匹配可以是部分单词(默认)。
--match-words
搜索字符串的匹配只能是完整的单词。
-x, --match-exact
搜索软件包的精确名称。
--provides
搜索提供搜索字符串的软件包。
--requires
搜索需要搜索字符串的软件包。
--recommends
搜索推荐搜索字符串的软件包。
--suggests
搜索建议搜索字符串的软件包。
--conflicts
搜索与搜索字符串冲突的软件包。
--obsoletes
搜索使搜索字符串过时的软件包。
--supplements
搜索补充搜索字符串的软件包。
--provides-pkg
搜索提供输入参数匹配的软件包的任何提供的所有软件包。
--requires-pkg
搜索需要输入参数匹配的软件包的任何提供的所有软件包。
--recommends-pkg
搜索推荐输入参数匹配的软件包的任何提供的所有软件包。
--supplements-pkg
搜索补充输入参数匹配的软件包的任何提供的所有软件包。
--conflicts-pkg
搜索与输入参数匹配的任何软件包冲突的所有软件包。
--obsoletes-pkg
搜索使输入参数匹配的任何软件包过时的所有软件包。
--suggests-pkg
搜索建议输入参数匹配的软件包的任何提供的所有软件包。
-n, --name
与依赖项选项结合使用时很有用,否则默认在软件包名称中搜索。
-f, --file-list
在软件包的文件列表中搜索。请注意,完整的文件列表仅适用于已安装的软件包。对于远程软件包,仅在元数据中提供其文件列表的摘要(包含 /etc/、/bin/ 或 /sbin/ 的文件)。
-d, --search-descriptions
也在摘要和描述中搜索。
-C, --case-sensitive
执行区分大小写的搜索。
-i, --installed-only
仅显示已安装的软件包。
-u, --not-installed-only
仅显示未安装的软件包。+ 旧选项名称 --uninstalled-only 仍然可以接受,但应视为已弃用。
-t, --type type
仅搜索指定类型的软件包。请参阅“软件包类型”部分,了解可用软件包类型的列表。允许使用多个 --type 选项。+ 另请参阅特定于类型的查询命令,例如 packages、patterns 等。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
--sort-by-name
按名称对软件包进行排序(默认)。
--sort-by-repo
按存储库对软件包进行排序,而不是按名称。
-s, --details
显示匹配软件包的所有可用版本,每个版本在每个存储库中单独一行。
-v, --verbose
类似于 --details,并提供有关搜索匹配位置的其他信息(在搜索依赖项时很有用,例如 --provides)。
示例
$ zypper se 'yast*’
搜索 YaST 软件包(用引号引起来,以防止 shell 扩展通配符)。
$ zypper se -s --match-exact kernel-default
显示软件包 kernel-default 的所有可用版本
$ zypper se -dC --match-words RSI
查找 RSI 首字母缩写词(区分大小写),也在摘要和描述中。
packages (pa) [options] [repository]...
列出所有可用的软件包或指定存储库中的所有软件包。类似于 zypper search -s -t package。
-r, --repo alias|name|#|URI
指定存储库的另一种方式。
-i, --installed-only
仅显示已安装的软件包。
-u, --not-installed-only
仅显示未安装的软件包。+ 旧选项名称 --uninstalled-only 仍然可以接受,但应视为已弃用。
--orphaned
显示孤立的软件包(没有存储库)。
--suggested
显示建议的软件包。
--recommended
显示推荐的软件包。
--unneeded
显示不需要的软件包。
patches (pch) [options] [repository]...
列出指定存储库中的所有可用补丁,包括不需要的补丁。简写形式为 zypper lp -a。
-r, --repo alias|name'|#|URI
指定存储库的另一种方式。
patterns (pt) [options] [repository]...
列出所有可用的模式或指定存储库中的所有模式。类似于 zypper search -s -t pattern。
-r, --repo alias|name|#|URI
指定存储库的另一种方式。
-i, --installed-only
仅显示已安装的模式。
-u, --not-installed-only
仅显示未安装的模式。+ 旧选项名称 --uninstalled-only 仍然可以接受,但应视为已弃用。
products (pd) [options] [repository]...
列出所有可用的产品或指定存储库中的所有产品。类似于 zypper search -s -t product,但还显示产品的类型(基本、附加)。
-r, --repo 'alias|name|#|URI
指定存储库的另一种方式。
-i, --installed-only
仅显示已安装的产品。
-u, --not-installed-only
仅显示未安装的产品。+ 旧选项名称 --uninstalled-only 仍然可以接受,但应视为已弃用。
--xmlfwd tag
仅 XML 输出:如果已安装的产品 .prod-file(位于 /etc/products.d 中)中找到,则字面转发 XML tag。+ 使用此选项,对于每个已安装的产品,将在产品的 <product> 输出节点内创建一个 <xmlfwd> 节点。+ 标签定义了已安装产品 .prod-file 中 xml 标签的名称(或 /分隔的路径)。如果标签存在于产品 .prod-file 中,则标签及其内容将字面转发到产品的 <xmlfwd> 输出节点。+ 可以多次指定该选项。
示例
$ zypper -x pd --xmlfwd name --xmlfwd register/target
what-provides (wp) capability
列出提供指定功能的软件包。另请参阅 install 命令,了解有关指定 capabilities的信息。
命令行将自动转换为适当的搜索命令,例如:
$ zypper what-provides 'zypper>1.6'
$ zypper se --provides --match-exact 'zypper>1.6'
存储库管理
Zypper 能够与 YaST、RPM-MD (yum) 软件存储库以及包含 .rpm 文件的纯目录一起工作。
存储库主要使用其 URI 或 alias 标识。Alias 作为 URI 或存储库名称的简写。存储库的 name 应简要描述该存储库,并在表格和消息中显示给用户。名称不是必需的,如果不知道,则显示 alias。Alias 是必需的,并且唯一标识系统上的存储库。
alias、name、URI 或 zypper repos 列表中的 number 可用于将存储库指定为各种 zypper 命令和选项(如 refresh、--repo 或 --from)的参数。
除了上述内容之外,存储库还有其他一些属性,可以使用本节下面描述的命令或通过手动编辑存储库定义文件(.repo 文件,请参阅“FILES”部分)来设置。
变量替换
您可以在 .repo 或 .service 文件的 name 和 URI 值中使用以下变量
$arch
使用此变量引用系统的 CPU 架构。
$basearch
使用此变量引用系统的基本架构。例如,iX86 机器的基本架构为 i386,而 AMD64 和 Intel64 为 x86_64。
$releasever、$releasever_major、$releasever_minor
使用此变量引用您的 openSUSE 或 SUSE Linux 的版本。该值从 /etc/products.d/baseproduct 中的 /product/version XML 节点获取。+ 这对于相关的存储库(如 packman ( ⟨ URL: http://ftp.gwdg.de/pub/linux/packman/suse/$releasever ⟩ ))非常有用,这些存储库应始终适合已安装的发行版,即使在发行版升级之后也是如此。+ 为了帮助执行发行版升级,可以将 $releasever 的值永久设置为用户定义的值,方法是在 /etc/zypp/vars.d 中创建一个具有该名称的自定义变量(如下所示)。这样,您可以轻松地将所有使用 $releasever 的存储库切换到新版本(前提是服务器布局没有更改并且已经提供了新的存储库)。+ 对于单个 zypper 命令,可以通过使用 --releasever 全局选项来临时覆盖 $releasever 的值。+ 此外,$releasever_major 将设置为领先部分,直到(但不包括)第一个点;$releasever_minor 设置为第一个点后的尾随部分。如果 $releasever 中没有点,则 $releasever_major 与 $releasever 相同,并且 $releasever_minor 为空。
自定义变量
通过在 /etc/zypp/vars.d 中创建一个文件来定义自定义存储库变量。变量名称等于文件名。文件的第一行(不包括换行符)定义变量的值。有效的变量(文件名)仅包含字母数字字符和下划线。
以下是如何将自定义变量设置为 $releasever 的值为 99.0
echo "99.0" >/etc/zypp/vars.d/releasever
要删除自定义变量,只需删除 /etc/zypp/vars.d 中的文件
rm /etc/zypp/vars.d/releasever
要检查您已经使用 $releasever 的位置,请调用
zypper --releasever @--HERE--@ lr -u
请记住在 shell 命令中保护 $
zypper ar -f ⟨ URL: http://ftp.gwdg.de/pub/linux/packman/suse/ ⟩ \$releasever packman
如果变量后跟字母数字字符或下划线,则需要将其括在 {} 中
zypper ar -f ⟨ URL: http://ftp.gwdg.de/pub/linux/packman/suse/ ⟩ \${releasever}_packman
Bash 样式的默认 ${variable':-’word} 和备用 ${variable':+’word} 值的定义
SLE-${releasever_major'}${’releasever_minor:+-SP-$releasever_minor}
注意
URI 权限内的变量替换仅限于 host 和 port。不支持默认值和备用值的 Bash 样式定义。不能在 URI 的 scheme、user 和 password 中使用变量。
支持的 URI 格式:
scheme: @]host[:port]] /path' [?’query'] [#’fragment]
URI 组件中出现的特殊字符(例如密码中的 @)必须进行百分比编码 (%40)。
CD 或 DVD 光驱
可选地,带有 devices 列表以进行探测。
cd:///
dvd:/subdir'?devices=/dev/sr0,/dev/sr1'
FTP/HTTP/HTTPS 目录树
ftp URL 方案支持绝对路径和相对于默认 ftp 服务器目录的路径(RFC1738,第 3.2.2 节)。要使用绝对路径,必须在路径前加上一个额外的斜杠,这将在 URL 路径的开头产生一个 /%2f 组合(第二个 / 编码为 %2f)。这很重要,尤其是在用户身份验证的 ftp 中,用户的家目录通常是服务器的默认目录(除非服务器 chroots 到用户的家目录)。+ 可以通过可选参数 proxy、 proxyport、 proxyuser 和 proxypass传递显式代理设置。+ 可以通过可选参数 auth定义要使用的 HTTP 身份验证方法。有效方法包括 basic、 digest、 ntlm、 negotiate。请注意,此列表取决于 curl 库支持的方法列表。+ 可以使用 ssl_verify 选项更改 SSL 验证行为(应谨慎使用)。有效值为 yes(安全默认值)、host、peer 或 no。 Host 仅检查服务器证书中的“Common Name”字段或“Subject Alternate Name”字段与 URL 中的主机名是否匹配。 Peer 仅验证服务器提供的证书是否通过 ssl_capath 中找到的数字签名链进行身份验证。 No 不执行任何检查。 Yes 是安全默认值,执行 host 和 peer 检查。+ 对于 SSL 客户端证书身份验证,请使用 ssl_clientcert 选项定义 SSL 客户端证书的路径,并使用 ssl_clientkey 选项定义 SSL 客户端密钥的路径。使用 ssl_capath 更改包含 CA 证书的目录(默认值为 /etc/ssl/certs)。
⟨ URL: ftp://user:pass@server/path/to/media/dir ⟩
⟨ URL: ftp://user:pass@server/%2fhome/user/path/to/media/dir ⟩
⟨ URL: http://user:pass@server/path ⟩
⟨ URL: https://user:pass@server/path ⟩ '?proxy=foo&proxyuser=me&proxypass=pw'
⟨ URL: https://server/path ⟩ '?ssl_clientcert=/entitlement/1234.pem&ssl_clientkey=/entitlement/1234-key.pem'
磁盘卷(分区)
强制参数,指定要挂载的块设备的名称。可选的 filesystem 参数的默认值为“auto”。
hd:/subdir?device=/dev/sda1'&filesystem=reiserfs'
本地目录树
dir:/directory/name
ISO 镜像中的介质(环回挂载)
+ 强制参数,指定 iso 文件的名称。可选的 url 参数指定包含 iso 文件的目录的 URL。可选的 mnt 参数指定源媒体 url 的首选挂载点。可选的 filesystem 名称是 iso 文件中使用的文件系统。默认值为“auto”。
iso:/?iso=CD1.iso'&url=nfs://server/path/to/media'
iso:/?iso=CD1.iso'&url=hd:/?device=/dev/hda'
iso:/subdir?iso=DVD1.iso'&url=nfs://nfs-server/directory&mnt=/nfs/attach/point&filesystem=udf'
NFS 导出的目录树
要使用 NFSv4,请使用模式 tnfsv4:// 或传递可选参数 type=nfs4。可以作为逗号分隔列表传递额外的 mountoptions。默认值为“ro”。
nfs://nfs-server/exported/path
nfs://nfs-server/exported/path'?mountoptions=ro&type=nfs4'
nfs4://nfs-server/exported/path'?mountoptions=ro'
CIFS/SMB 目录树
cifs 和 smb 方案之间没有区别(不再有)。在两种情况下,都使用 cifs 文件系统。可以作为逗号分隔的列表传递额外的 mountoptions 。默认值为 "ro,guest"。指定 "noguest" 以关闭 "guest"。如果 Samba 配置为拒绝访客连接,这是必需的。+ 可选的 workgroup 或 domain 参数设置工作组的名称。作为传递 username:password 在 URI 授权中的替代方法,可以使用 user 和 pass 参数。
smb://servername/share/path/on/the/share
cifs://usern:passw@servername/share/path/on/the/share'?mountoptions=ro,noguest'
cifs://usern:passw@servername/share/path/on/the/share'?workgroup=mygroup'
cifs://servername/share/path/on/the/share'?user=usern&pass=passw'
OpenSUSE Build Build Service (OBS) 仓库
Zypper 也接受识别 openSUSE Build Service (OBS) 仓库的特殊 URI,在 addrepo 命令中使用。这些 URI 的形式为 obs://project/[platform],其中 project 是 OBS 项目的名称, platform 是目标平台(操作系统),仓库是为之设计的。+ 如果省略 platform ,则使用 openSUSE_$releasever,除非在 zypper.conf 中定义了 obs.platform 的值。如果您正在跟踪 openSUSE_Factory 或 openSUSE_Tumbleweed,您可能需要将这些设置为您的默认平台。但我们只能猜测,服务器上包含适合您发行版的仓库的目录是如何命名的。如有疑问,您需要在浏览器中查找正确的 URL。
obs://zypp:Head/
obs://zypp:Head/openSUSE_Factory
obs://zypp:Head/openSUSE_Factory_Staging_Gcc49_standard
{nop}
2020 年 4 月 10 日 19:01 (UTC)~
addrepo (ar) [options] URI alias
addrepo (ar) [options] FILE.repo
通过 URI 指定一个新的仓库并为其分配指定的别名,或指定指向 .repo 文件的 URI。+ 新添加的仓库默认禁用自动刷新(从 .repo 导入的仓库除外,这些仓库已启用自动刷新)。要启用自动刷新,请使用 addrepo -f,或 modifyrepo 命令的 --refresh 选项。+ 此外,此命令不会自动刷新新添加的仓库。仓库将在第一次使用时刷新,或者您可以在完成使用 *repo 命令的修改后使用 refresh 命令。
-r, --repo file.repo
从指定的 .repo 文件读取 URI 和别名
-c, --check
探测给定的 URI。
-C, --no-check
不要探测 URI,在刷新期间探测。
-n, --name name
为仓库指定描述性名称。
-e, --enable
启用仓库(默认)。
-d, --disable
将仓库添加为禁用状态。仓库默认添加为启用状态。
-f, --refresh
启用仓库的自动刷新。添加新仓库时默认禁用自动刷新。
-F, --no-refresh
禁用仓库的自动刷新。
-p, --priority positive-integer
设置仓库的优先级。优先级 1 是最高的,数字越大优先级越低。-p 0 将优先级恢复为默认值 (99)。来自具有较高优先级的仓库将优先使用,即使在具有较低优先级的仓库中存在更高的可安装版本也是如此。
-k, --keep-packages
为仓库启用 RPM 文件缓存。
-K, --no-keep-packages
禁用 RPM 文件缓存。
-g, --gpgcheck
为该仓库启用 GPG 检查。行为如“GPG 检查”部分所述。
--gpgcheck-strict
为该仓库启用严格的 GPG 检查。即使来自已签名仓库的软件包也需要有效的 GPG 签名,并且必须确认使用未签名软件包。
--gpgcheck-allow-unsigned
--gpgcheck-allow-unsigned-repo 和 --gpgcheck-allow-unsigned-package 的简写
--gpgcheck-allow-unsigned-repo
启用 GPG 检查,但允许仓库元数据未签名。
--gpgcheck-allow-unsigned-package
启用 GPG 检查,但允许从该仓库安装未签名的软件包。
-G, --no-gpgcheck
禁用该仓库的 GPG 检查。+ 禁用 GPG 检查不建议这样做。签名数据使接收者能够验证数据签名后是否发生过修改。接受没有、错误或未知的签名的可能会导致系统损坏,在极端情况下甚至可能导致系统受到损害。
--default-gpgcheck
使用 /etc/zypp/zypp.conf 中定义的全局 GPG 检查设置。这是默认设置。+ 除非您修改了 zypp.conf 设置,否则这与 --gpgcheck 相同,行为如“GPG 检查”部分所述。
示例
$ zypper ar -c -n 'Packman 11.1 repo' ⟨ URL: http://packman.iu-bremen.de/suse/11.1 ⟩ packman
添加 HTTP 仓库,探测它,将其命名为 Packman 11.1 repo,并使用 packman 作为别名。
$ zypper ar ⟨ URL: https://download.opensuse.org/repositories/zypp:/svn/openSUSE_Factory/zypp:svn.repo ⟩
$ zypper ar myreposbackup.repo
从 .repo 文件添加仓库。
removerepo (rr) [options] alias|name|#|URI...
删除使用别名、名称、编号、URI 或其中一种聚合选项指定的仓库。
--loose-auth
忽略 URI 中的用户身份验证数据
--loose-query
忽略 URI 中的查询字符串
-a, --all
将更改应用于所有仓库。
-l, --local
将更改应用于所有本地仓库。
-t, --remote
将更改应用于所有远程仓库(http/https/ftp)。
-m, --medium-type type
将更改应用于指定类型的仓库。类型对应于仓库 URI 方案标识符,如 http、dvd 等。您可以在 ⟨ URL: https://en.opensuse.net.cn/openSUSE:Libzypp_URIs ⟩ 找到有效的类型列表。
repos (lr) [options] [repo]...
列出所有定义的仓库或显示有关作为参数指定的仓库的详细信息 + 可以为系统上找到的每个仓库打印以下数据: # (仓库编号)、 Alias (唯一标识符)、 Name、 Enabled (仓库是否启用)、 GPG Check (是否启用了仓库元数据 (r) 和/或下载的 rpm 包 (p) 的 GPG 检查)、 Refresh (是否为仓库启用了自动刷新)、 Priority、 Type (仓库元数据类型:rpm-md、yast2、plaindir)。显示哪些数据由命令行选项和 zypper.conf 中的 main.repoListColumns 设置决定。默认情况下,
- , Alias, Name, Enabled, GPG Check 和 Refresh 会显示。
仓库编号是当前仓库集中仓库的唯一标识符。如果您添加、删除或更改仓库,这些编号可能会更改。请记住在使用编号处理仓库命令时这一点。另一方面,使用别名而不是编号始终是安全的。+ 要显示特定仓库的详细信息,请通过别名、名称、来自简单 zypper lr 的编号或 URI 指定它们作为参数;例如 fB zypper lr factory,或 zypper lr 2。
-e, --export FILE.repo|-
此选项将导致 zypper 将所有定义的仓库的仓库定义写入单个 repo 文件格式的文件中。如果指定的是文件名而不是 -,则仓库将被写入标准输出。
-a, --alias
将别名列添加到输出中。
-n, --name
将名称列添加到输出中。
-u, --uri
将基本 URI 列添加到输出中。
-p, --priority
将仓库优先级列添加到输出中。
-r, --refresh
将自动刷新列添加到输出中。
-d, --details
显示更多信息,如 URI、优先级、类型等。
-E, --show-enabled-only
仅显示启用的仓库。
-U, --sort-by-uri
添加基本 URI 列并按其对列表进行排序。
-P, --sort-by-priority
添加仓库优先级列并按其对列表进行排序。
-A, --sort-by-alias
按别名对列表进行排序。
-N, --sort-by-name
按名称对列表进行排序。
示例
$ zypper repos -e myreposbackup.repo
备份您的仓库设置
$ zypper lr -pu
列出带有 URI 和优先级的仓库
renamerepo (nr) alias|name|#|URI new-alias
为使用别名、名称、编号或 URI 指定的仓库分配新的别名。
示例
$ zypper nr 8 myrepo
将仓库 编号 8 重命名为 myrepo(如果仓库具有无法在命令行上使用的可怕别名,则很有用)。
modifyrepo (mr) options alias|name|#|URI...
modifyrepo (mr) options --all|--remote|--local|--medium-type
修改使用别名、名称、编号或 URI 或其中一种聚合选项指定的仓库的属性。
-n, --name name
设置仓库的描述性名称。
-e, --enable
启用仓库。
-d, --disable
禁用仓库。
-f, --refresh (遗留: -r)
为仓库启用自动刷新。
-F, --no-refresh (遗留: -R)
禁用仓库的自动刷新。
-p, --priority positive-integer
设置仓库的优先级。优先级 1 是最高的,数字越大优先级越低。-p 0 将优先级恢复为默认值 (99)。来自具有较高优先级的仓库将优先使用,即使在具有较低优先级的仓库中存在更高的可安装版本也是如此。
-k, --keep-packages
启用 RPM 文件缓存。
-K, --no-keep-packages
禁用 RPM 文件缓存。
-g, --gpgcheck
为该仓库启用 GPG 检查。行为如“GPG 检查”部分所述。
--gpgcheck-strict
为该仓库启用严格的 GPG 检查。即使来自已签名仓库的软件包也需要有效的 GPG 签名,并且必须确认使用未签名软件包。
--gpgcheck-allow-unsigned
--gpgcheck-allow-unsigned-repo 和 --gpgcheck-allow-unsigned-package 的简写
--gpgcheck-allow-unsigned-repo
启用 GPG 检查,但允许仓库元数据未签名。
--gpgcheck-allow-unsigned-package
启用 GPG 检查,但允许从该仓库安装未签名的软件包。
-G, --no-gpgcheck
禁用该仓库的 GPG 检查。+ 禁用 GPG 检查不建议这样做。签名数据使接收者能够验证数据签名后是否发生过修改。接受没有、错误或未知的签名的可能会导致系统损坏,在极端情况下甚至可能导致系统受到损害。
--default-gpgcheck
使用 /etc/zypp/zypp.conf 中定义的全局 GPG 检查设置。这是默认设置。+ 除非您修改了 zypp.conf 设置,否则这与 --gpgcheck 相同,行为如“GPG 检查”部分所述。
-a, --all
将更改应用于所有仓库。
-l, --local
将更改应用于所有本地仓库。
-t, --remote
将更改应用于所有远程仓库(http/https/ftp)。
-m, --medium-type type
将更改应用于指定类型的仓库。类型对应于仓库 URI 方案标识符,如 http、dvd 等。您可以在 ⟨ URL: https://en.opensuse.net.cn/openSUSE:Libzypp_URIs ⟩ 找到有效的类型列表。
示例
$ zypper mr -kt
为所有远程仓库启用保留包。
$ zypper mr -er updates
启用仓库 updates 并为该仓库打开自动刷新。
$ zypper mr -da
禁用所有仓库。
refresh (ref) [alias|name|#|URI]...
刷新使用其别名、名称、编号或 URI 指定的仓库。如果未指定任何仓库,则将刷新所有启用的仓库。
-f, --force
强制刷新指定的仓库。此选项将强制下载原始元数据和解析元数据,即使所有内容表明不需要刷新也是如此。
-b, --force-build
仅强制重新解析缓存的元数据并重建数据库。不会强制下载原始元数据。
-d, --force-download
仅强制下载当前副本的仓库元数据。不会强制解析和重建数据库。
-B, --build-only
仅解析元数据并构建数据库,不要将原始元数据下载到缓存中。这将使您能够从缓存的数据修复损坏的数据库,而无需访问网络。
-D, --download-only
仅下载原始元数据,不要解析它或构建数据库。
-s, --services
在刷新仓库之前也刷新服务。
clean (cc) [options] [alias|name|#|URI]...
清除所有已知或指定仓库的本地缓存。默认情况下,仅清除下载的软件包的缓存。
-m, --metadata
清除仓库元数据缓存而不是软件包缓存。
-M, --raw-metadata
清除仓库原始元数据缓存而不是软件包缓存。
-a, --all
清除仓库元数据和软件包缓存。
服务管理
services、addservice、removeservice、modifyservice 和 refresh-services 命令用于操作服务。服务由其 URI 指定,并且需要定义一个唯一的别名(在服务和仓库中)。
不属于任何服务的独立仓库也像服务一样处理。ls 命令将列出它们,ms 命令将修改它们,等等。但是,这里不可用仓库特定的选项,如 --keep-packages。您可以使用仓库处理命令来操作它们。
addservice (as) [options] URI alias
将由 URI 指定的服务添加到系统。alias 必须是唯一的,用于标识该服务。+ 新添加的服务不会自动刷新。使用 refresh-services 命令刷新它们。Zypper 在添加服务时不会访问服务 URI,因此在刷新之前服务的类型是未知的。+
-n, --name name
为服务指定描述性名称。
-e, --enable
启用服务(默认)。
-d, --disable
将服务添加为禁用状态。
-f, --refresh
启用服务的自动刷新。
-F, --no-refresh
禁用服务的自动刷新。
removeservice (rs) [options] alias|name|#|URI...
从系统中删除指定的服务。删除服务还将删除其所有仓库。
--loose-auth
忽略 URI 中的用户身份验证数据。
--loose-query
忽略 URI 中的查询字符串。
modifyservice (ms) options alias|name|#|URI
modifyservice (ms) options --all|--remote|--local|--medium-type
修改指定服务的属性。
常用选项
这些选项适用于所有类型的服务和仓库。
-n, --name name
为服务设置描述性名称。
-e, --enable
启用禁用的服务。
-d, --disable
禁用服务(但不删除它)。
-f, --refresh (遗留: -r)
启用服务的自动刷新。
-F, --no-refresh (遗留: -R)
禁用服务的自动刷新。
-a, --all
将更改应用于所有服务。
-l, --local
将更改应用于所有本地服务。
-t, --remote
将更改应用于所有远程服务。
-m, --medium-type type
将更改应用于指定类型的服务。
RIS 服务特定选项
这些选项被除 Repository Index Services 以外的服务忽略。
-i, --ar-to-enable alias
安排 RIS 服务仓库在下次服务刷新时启用。
-I, --ar-to-disable alias
安排 RIS 服务仓库在下次服务刷新时禁用。
-j, --rr-to-enable alias
删除要启用的 RIS 服务仓库。
-J, --rr-to-disable "alias'
删除要禁用的 RIS 服务仓库。
-k, --cl-to-enable
清除要启用的 RIS 仓库列表。
-K, --cl-to-disable
清除要禁用的 RIS 仓库列表。
services (ls) [options]
列出系统上定义的服务。
-u, --uri
同时显示仓库的基 URI。
-p, --priority
同时显示仓库优先级。
-d, --details
显示更多信息,例如 URI、优先级、类型。
-r, --with-repos
同时显示属于这些服务的仓库。
-P, --sort-by-priority
按仓库优先级对列表进行排序。
-E, --show-enabled-only
仅显示已启用的服务。如果与 --with-repos 一起使用,则拥有(手动)启用的仓库的禁用服务也会显示。
-U, --sort-by-uri
按 URI 对列表进行排序。
-N, --sort-by-name
按名称对列表进行排序。
refresh-services (refs) [options] alias|name|#|URI...
刷新服务意味着执行服务的特殊任务。+ RIS 服务会根据仓库索引的当前内容,在您的系统上添加、删除或修改仓库。但是,通过手动调用 modify-repo 在服务仓库上引起的不同的启用/禁用状态,除非使用 --restore-status 选项,或者仓库索引明确请求更改,否则不会恢复。+ 服务仅管理定义的仓库,不会刷新它们。要同时刷新仓库,请使用 --with-repos 选项或 refresh 命令。
-f, --force
强制完全刷新指定的服务。即使所有内容表明不需要刷新,此选项也会强制下载原始元数据和解析元数据。
-r, --with-repos
同时刷新服务仓库。
-R, --restore-status
还将服务仓库的启用/禁用状态恢复到仓库索引的默认设置。在您手动更改了一些服务仓库的启用状态后,此选项很有用。
软件包锁定管理
软件包锁定旨在防止系统上已安装软件包集的更改。这些锁定以 /etc/zypp/locks 文件中的 *query* 形式存储(请参阅 locks(5))。匹配此查询的软件包将被禁止更改其安装状态;已安装的软件包无法被删除或升级,未安装的软件包无法被安装。当请求安装、升级或删除此类锁定的软件包时,您将收到依赖关系问题对话框。
locks (ll)
列出当前活动的软件包锁定。
-m, --matches
显示每个锁定匹配的可解析软件包的数量。此选项需要加载仓库。
-s, --solvables
列出每个锁定匹配的可解析软件包。此选项需要加载仓库。
addlock (al) [options] package-name...
添加软件包锁定。通过确切的名称或使用 * 和 ? 通配符字符通过 glob 模式指定要锁定的软件包。
-r, --repo alias|name|#|URI
将锁定限制到指定的仓库。
-t, --type type
仅锁定指定类型的软件包(默认:package)。有关可用软件包类型的列表,请参阅软件包类型部分。
removelock (rl) [options] lock-number|package-name...
删除指定的软件包锁定。通过使用 zypper locks 获取的编号或软件包名称指定要删除的锁定。
-r, --repo alias|name|#|URI
将锁定限制到指定的仓库。
-t, --type type
将锁定限制到指定类型的软件包(默认:package)。有关可用软件包类型的列表,请参阅软件包类型部分。
cleanlocks (cl)
删除未使用的锁定。+ 此命令查找当前(根据使用的仓库)未锁定任何软件包的锁定,并为每个此类锁定询问用户是否要删除它。
区域设置管理 2020 年 4 月 10 日 19:01 (UTC)~~ 这些命令提供有关请求的区域设置的信息以及管理这些区域设置的可能性。区域设置由语言代码定义。许多软件包都有依赖于区域设置的软件包,这些软件包提供翻译或词典。要安装这些软件包,必须将所需语言的区域设置标记为由软件包管理器库请求。
locales (lloc) [OPTIONS] [LOCALE] ...
列出请求的区域设置。不带参数调用时,列出已标记为请求的区域设置。指定某些区域设置(s)仅打印此(这些)区域设置的信息。
-a, --all
列出所有可用的区域设置。
-p, --packages
显示相应的软件包。
addlocale (aloc) [OPTIONS] <LOCALE> ...
将指定的区域设置添加到请求的区域设置列表中。
-n, --no-packages
不要安装相应的软件包。
removelocale (rloc) [OPTIONS] <LOCALE> ...
从请求的区域设置列表中删除指定的区域设置。
-n, --no-packages
不要删除相应的软件包。
示例
$ zypper locales
列出请求的区域设置。
$ zypper locales --packages de en
获取 de 和 en 可用的软件包列表(精确匹配)。
$ zypper locales en_
获取具有国家/地区代码的语言代码 en 的所有区域设置,不包括回退 en。
$ zypper locales en*
获取具有语言代码 en 的具有或不具有国家/地区代码的所有区域设置。
$ zypper aloc --packages de_CH
请求 de_CH 并安装语言相关的软件包。
其他命令
versioncmp (vcmp) version1 version2
比较作为参数提供的版本,并说明 version1 是否比 version2 旧或新,或者两个版本字符串是否匹配。+ 默认输出为用户友好的格式。如果使用全局 --terse 选项,则结果是一个整数,如果 version1 比 version2 旧则为负数/如果 version1 比 version2 新则为正数,如果它们匹配则为零。
-m, --match
将缺少的发布号视为任何发布号。
例如
$ zypper vcmp -m 0.15.3 0.15.3-2
0.15.3 匹配 0.15.3-2
$ zypper vcmp 0.15.3 0.15.3-2
0.15.3 比 0.15.3-2 旧
targetos (tos)
显示目标操作系统的 ID 字符串。该字符串具有 *distroname-architecture* 的形式。该字符串由 libzypp 确定,*distroname* 从 (current-rootdir)/etc/products.d/baseproduct 读取,*architecture* 由 uname 和 CPU 标志 确定。
licenses
打印有关已安装软件包的 *licenses* 和 'EULA’s 的报告到标准输出。+ 首先,显示所有软件包及其许可证和/或 EULA 的列表。然后是摘要,包括已安装软件包的总数、需要用户确认的 EULA 的已安装软件包的数量。由于 EULA 未存储在系统中,只能从仓库元数据中读取,因此摘要还包括在仓库中具有对应软件包的已安装软件包的数量。报告以安装软件包使用的所有许可证的列表结束。+ 此命令对于重新分发自定义发行版(如设备)的公司来说很有用,可以确定他们受哪些许可证约束。
download
将命令行中指定的 rpm 下载到本地目录。+ 默认情况下,软件包下载到 libzypp 软件包缓存(/var/cache/zypp/packages;对于非 root 用户 $XDG_CACHE_HOME/zypp/packages),但可以通过使用全局 --pkg-cache-dir 选项来更改。+ 由 zypper --xmlout 生成的可解析 XML 输出将包含一个 <download-result> 节点,用于 zypper 尝试下载的每个软件包。成功后,下载的软件包的位置位于 <localfile> 子节点的 path 属性中(xpath:download-result/localpath@path):+
<download-result>
<solvable>
<kind>package</kind>
<name>zypper</name>
<edition epoch="0" version="1.9.17" release="26.1"/>
<arch>x86_64</arch>
<repository name="repo-oss-update (13.1)" alias="openSUSE:repo-oss-update"/>
</solvable>
<localfile path="/var/cache/zypp/pac.../zypper-1.9.17-26.1.x86_64.rpm"/>
</download-result>
--all-matches
下载匹配命令行参数的所有版本。否则,仅下载每个匹配软件包的最佳版本。
--dry-run
不要下载任何软件包,只需报告将执行的操作。
-r, --repo alias|name|#|URI
仅使用别名、名称、编号或 URI 指定的仓库。此选项可以多次使用。
--from alias|name|#|URI
仅从指定的仓库中选择软件包。此选项可以多次使用。
source-download
将所有已安装软件包的源 rpm 下载到本地目录。
-d, --directory dir
将所有源 rpm 下载到此目录。默认值为 /var/cache/zypper/source-download。
--delete
删除本地目录中多余的源 rpm。这是默认设置。
--no-delete
不要删除多余的源 rpm。
--status
不要下载任何源 rpm,但显示缺少或多余的源 rpm。
ps
在每次升级或删除软件包后,系统上可能存在正在运行的进程,这些进程继续使用同时删除的文件。zypper ps 列出使用已删除文件的所有进程,以及相应的文件和服务的名称提示(如果它是已知服务)。这提示哪些服务可能需要在更新后重新启动。通常是继续使用已删除共享库的程序。该列表包含以下信息
PID
进程 ID
PPID
父进程 ID
UID
运行该进程的用户的 ID
登录
运行该进程的用户的登录名
命令
用于执行该进程的命令
服务
如果该命令与系统服务相关联,则服务名称
文件
已删除文件的列表
-s, --short
创建一个简短的表格,不显示已删除的文件。如果给出两次,则仅显示与系统服务关联的进程。如果给出三次,则仅列出关联的系统服务名称。
--print format
对于每个关联的系统服务,在标准输出上打印 format,后跟换行符。format 中的任何 %s 指令都将替换为系统服务名称。
-d, --debugFile filename
输出一个文件,其中包含最终进入使用的打开文件的所有 proc 条目。这可以作为附加信息提交到错误报告中。
示例
$ zypper ps -ss
仅显示与系统服务关联的进程。
$ zypper ps -sss
zypper ps --print "%s" 的简写;列出可能需要重新启动的服务。
$ zypper ps --print "systemctl status %s"
让 zypper 打印用于检索可能需要重新启动的服务状态信息的命令。
needs-rebooting
检查是否由先前的更新或核心库或服务的安装设置了重新启动所需标志。+ 重新启动所需标志是在更新或安装预定义列表 (/etc/zypp/needreboot) 中的软件包时设置的。退出代码 ZYPPER_EXIT_INF_REBOOT_NEEDED 表示需要重新启动,否则退出代码设置为 ZYPPER_EXIT_OK。
Subommands
subcommand
列出 /usr/lib/zypper/commands 和 $PATH 上的其他位置中的可用子命令。有关详细信息,请参阅 SUBCOMMANDS 部分。
全局选项
-h, --help
帮助。如果与 --help 选项一起指定了 command,则将显示特定于命令的帮助。
-V, --version
打印 zypper 版本号并退出。
-c, --config file
使用指定的 zypper 配置文件而不是默认的 zypper.conf。与其他命令行选项一起指定的选项,这些选项在 zypper 配置文件中具有对应项,仍然优先。+ 使用 --config 的偏好顺序如下
1. 命令行选项
2. --config file
3. [/etc/zypp/zypp.conf] (所有基于 libzypp 的应用程序的系统范围默认值)
注意:无法通过这种方式更改 /etc/zypp/zypp.conf 的使用和位置。此处提到它只是因为某些 zypper 命令行选项允许覆盖 zypp.conf 中定义的系统范围默认值。
+
有关更多信息,请参阅 FILES 部分。
-v, --verbose
增加详细程度。对于调试输出,请指定此选项两次。
-q, --quiet
禁止正常输出。简短的(尤其是结果通知)消息和错误消息仍然会打印,尽管如此。如果与冲突的 --verbose 选项一起使用,则 --verbose 选项优先。
--color, --no-color
如果 tty 支持,则是否在输出中使用颜色。有关详细信息,请参阅 zypper.conf 中的 [color] 部分。
-A, --no-abbrev
不要缩写表格中的文本。默认情况下,zypper 会尝试缩写某些列中的文本,以便表格适合屏幕的宽度。如果您需要查看完整的文本,请使用此选项。
-t, --terse
为机器消耗而精简的输出。意味着 --no-abbrev 和 --no-color。
-s, --table-style integer
从不同的预定义线条绘制字符集中选择一个用于绘制表格。表格样式由一个整数标识。样式 0 是默认样式,样式 1-9 使用不同线条绘制字符的组合,其形状可能取决于终端使用的字体。样式 10 用冒号分隔列,样式 11 不绘制线条。
-n, --non-interactive
切换到非交互模式。在此模式下,zypper 不会要求用户键入各种提示的答案,而是自动使用默认答案。这些默认答案也取决于其他选项,例如 --no-gpg-checks 或 --ignore-unknown。
--non-interactive-include-reboot-patches
在非交互模式下,不要跳过设置了 rebootSuggested 标志的补丁。否则,这些补丁被认为具有交互性,例如包含需要用户确认的许可证或某些消息的补丁。注意:此选项不会启用非交互模式。
-x, --xmlout
切换到 XML 输出。此选项对于使用 zypper 的脚本或图形前端很有用。
-i, --ignore-unknown
忽略未知的软件包。此选项对于脚本很有用,因为在 --non-interactive 模式下安装时,zypper 期望命令行中的每个参数至少匹配一个已知的软件包。未知的名称或没有匹配项的 globbing 表达式,除非使用此选项,否则将被视为错误。
-D, --reposd-dir dir
使用指定的目录查找仓库定义(.repo)文件。默认值为 /etc/zypp/repos.d。
-C, --cache-dir dir
使用替代根目录用于所有缓存。默认值为 /var/cache/zypp。
--raw-cache-dir dir
使用指定的目录存储仓库元数据文件的原始副本。默认值为 /var/cache/zypp/raw。
--solv-cache-dir dir
使用指定的目录存储仓库元数据缓存数据库文件(solv 文件)。默认值为 /var/cache/zypp/solv。
--pkg-cache-dir dir
使用指定的目录存储下载的 rpm 软件包。(参见 addrepo --keep-packages)默认值为 /var/cache/zypp/packages。
--userdata string
用户数据预计是一个简单的字符串,不包含特殊字符或嵌入的换行符,并且可以用作事务 ID。它将被写入在此 zypper 调用期间创建的所有安装历史记录条目中。它还将传递给提交期间执行的 zypp 插件。这将使例如 btrfs 插件能够使用此字符串标记创建的快照。对于 zypper 本身,此字符串没有特殊含义。
仓库选项
--no-gpg-checks
忽略 GPG 检查失败并继续。如果在使用此选项时发生 GPG 问题,zypper 将打印并记录警告,并自动继续操作而不中断。谨慎使用此选项,因为您可能会通过使用它而忽略安全问题。(参见 GPG 检查)+
--gpg-auto-import-keys
如果找到新的仓库签名密钥,不要询问该怎么办;自动信任并导入它。此选项导致新密钥也以非交互模式导入,否则会被拒绝。
-p, --plus-repo URI
在此操作中使用额外的仓库。指定 URI 命名的别名为 tmp# 的仓库将在此操作中添加并在结束时删除。您可以多次指定此选项。
--plus-content tag
在此操作中,还使用被 tag 标记的禁用的仓库。如果 tag 与仓库的别名、名称或 URL 匹配,或者是在仓库元数据中定义的关键字,则该仓库将临时启用此操作。然后将刷新仓库并根据命令规则使用。您可以多次指定此选项。+ 如果禁用的仓库元数据在本地缓存中不可用,它们将被下载以扫描匹配的关键字。否则,关键字扫描将使用本地缓存中可用的元数据。只有与 refresh 命令一起使用时,关键字扫描才会刷新所有禁用的仓库。+
要刷新所有禁用的仓库元数据
zypper --plus-content ref
要在搜索中包含禁用的仓库 repo-debug
zypper --plus-content repo-debug search ...
仅在禁用的仓库 repo-debug 中搜索
zypper --plus-content repo-debug search -r repo-debug ...
启用提供 debug 关键字的所有仓库
zypper in --plus-content debug some -debuginfo 或 -debugsource 包
--disable-repositories
不从仓库读取元数据。此选项将阻止从仓库加载软件包,从而使 zypper 仅使用已安装的软件包(如果未指定 --disable-system-resolvables)。
--no-refresh
不自动刷新仓库(忽略自动刷新设置)。在执行搜索等操作时,如果不需要完全最新的元数据,这很有用,可以节省时间。
--no-cd
忽略 CD/DVD 仓库。指定此选项时,zypper 会表现得好像未定义 CD/DVD 仓库一样。
--no-remote
忽略远程仓库,如 http、ftp、smb 等。这使得在离线时使用 zypper 更加容易。指定此选项时,zypper 会表现得好像未定义远程仓库一样。
--releasever version
对于当前命令,将 $releasever 仓库变量的值设置为 version。这可用于在执行发行版升级时切换到新的发行版仓库。请参阅 dist-upgrade (dup)命令和 Repository Management 部分,了解有关使用 $releasever 仓库变量的更多详细信息。+
要检查您已经使用 $releasever 的位置,请调用:
zypper --releasever @--HERE--@ lr -u
目标选项
-R, --root dir
在不同的根目录上操作。此选项会影响 repos.d 目录和元数据缓存目录的位置,还会导致 rpm 使用 --root 选项来执行实际的软件包安装或删除。请参阅 FILES 部分。
--installroot dir
行为类似于 --root,但与主机系统共享仓库。
--disable-system-resolvables
此选项主要用于测试目的。它将导致 zypper 表现得好像系统中没有安装任何软件包。谨慎使用,因为使用此选项可能会损坏您的系统。
子命令
Zypper 子命令受 git(1) 的启发。子命令是独立的执行文件,它们位于 zypper_execdir (/usr/lib/zypper/commands) 中。对于子命令,zypper 提供了一个包装器,该包装器知道子命令的位置,并通过将命令选项和参数传递给它们来运行它们。如果未在 zypper_execdir 中找到子命令,则包装器将在您的 $PATH 的其余部分中查找它。因此,可以编写不位于系统空间中的本地 zypper 扩展。
这是添加您自己的子命令 zypper mytask 的方法:
• 可执行文件必须命名为 zypper-mytask。
• 可执行文件必须位于您的 $PATH中。
• 应提供 zypper-mytask 的 manpage,并解释命令选项和返回值。在调用 zypper help mytask 时将显示它。
• Zypper 内置命令优先于同名的子命令。
• 在您的子命令中调用 zypper 或使用 libzypp 是可以的。
您可以使用内置的 zypper subcommand 命令来获取 zypper_execdir 和 $PATH 上所有子命令的列表。
目前不支持将 zypper 全局选项与子命令一起使用,也不支持在 zypper shell 中执行子命令。
文件
/etc/zypp/zypper.conf, $HOME/.zypper.conf
zypper 的全局(系统范围)和用户配置文件。在 zypper 启动时以及未使用 --config 选项时,将读取这些文件。+ 用户设置优先于全局设置。同样,命令行选项会覆盖这两个文件中的设置。总而言之,偏好顺序如下(从最高到最低):
1. 命令行选项
2. $HOME/.zypper.conf
3. /etc/zypp/zypper.conf
4. [/etc/zypp/zypp.conf] (所有基于 libzypp 的应用程序的系统范围默认值)
有关可用选项的列表和说明,请参阅 /etc/zypp/zypper.conf 中的注释。
注意:这里提到了系统范围的 /etc/zypp/zypp.conf,只是因为某些 zypper 命令行选项允许覆盖在那里定义的系统范围默认值。zypp.conf 和 zypper.conf 内容不同,用途也不同。
/etc/zypp/zypp.conf
影响所有基于 libzypp 的应用程序的 ZYpp 配置文件。有关可配置属性的说明,请参阅文件中的注释。本节中列出的许多文件和目录的位置都可以通过 zypp.conf 进行配置。此文件本身的位置只能通过在环境中设置 $ZYPP_CONF 来重新定义。
/etc/zypp/locks
包含软件包锁定义的文件,有关详细信息,请参阅 locks(5) 手册页。可以使用软件包锁命令(addlock、removelock 等)来操作此文件。+ 此文件由所有基于 ZYpp 的应用程序使用。
/etc/zypp/repos.d
包含仓库定义 (*.repo) 文件的目录。您可以使用仓库管理命令来操作这些文件,也可以自己编辑它们。无论哪种方式,在进行修改后,强烈建议执行 *zypper refresh*。+ 您可以使用全局选项 --reposd-dir 来使用替代目录,或使用 --root 选项使此目录相对于指定的根目录。+ 此目录由所有基于 ZYpp 的应用程序使用。
/etc/zypp/services.d
包含服务定义 (*.service) 文件的目录。您可以使用服务管理命令来操作这些文件,也可以自己编辑它们。修改完成后,建议运行 *zypper refs*。+ 此目录由所有基于 ZYpp 的应用程序使用。
/usr/lib/zypper/commands
系统目录,包含 zypper 扩展(参见 SUBCOMMANDS 部分)
/var/cache/zypp/raw
用于存储仓库中包含的原始元数据的目录。使用全局选项 --raw-cache-dir 来使用替代目录,或使用 --root 选项使此目录相对于指定的根目录。+ 此目录由所有基于 ZYpp 的应用程序使用。
/var/cache/zypp/solv
包含以 solv 文件形式的预解析元数据的目录。+ 此目录由所有基于 ZYpp 的应用程序使用。
/var/cache/zypp/packages
如果为仓库设置了 keeppackages 属性(参见 modifyrepo 命令),则在安装期间下载的所有 RPM 文件都将保存在此处。有关清理这些缓存目录,请参阅 clean 命令。+ 此目录由所有基于 ZYpp 的应用程序使用。
/var/log/zypp/history
安装历史记录日志。
~/.zypper_history
zypper shell 的命令历史记录(参见 shell 命令)。
/etc/zypp/needreboot
包含在安装或升级时将设置需要重新启动标志的软件包列表的文件。
/etc/zypp/needreboot.d
可以用于定义触发需要重新启动标志的软件包的目录,方法是添加包含所需软件包名称的其他文件。
退出代码
为 zypper 内置命令定义了几个退出代码,用于在脚本中使用等。这些代码在 zypper 源代码包中找到的 src/zypper-main.h 头文件中定义。100 以下的代码表示错误,100 以上的代码提供特定信息,0 表示正常的成功运行。以下是这些代码及其描述的列表
0 - ZYPPER_EXIT_OK
zypper 成功运行,没有特殊信息。
1 - ZYPPER_EXIT_ERR_BUG
发生了意外情况,可能由错误引起。
2 - ZYPPER_EXIT_ERR_SYNTAX
zypper 使用无效的命令或选项调用,或语法错误。
3 - ZYPPER_EXIT_ERR_INVALID_ARGS
提供的一些参数无效。例如,向 addrepo 命令提供了无效的 URI。
4 - ZYPPER_EXIT_ERR_ZYPP
ZYPP 库报告了一个问题。
5 - ZYPPER_EXIT_ERR_PRIVILEGES
调用 zypper 的用户没有指定操作的足够权限。
6 - ZYPPER_EXIT_NO_REPOS
未定义任何仓库。
7 - ZYPPER_EXIT_ZYPP_LOCKED
ZYPP 库已锁定,例如 packagekit 正在运行。
8 - ZYPPER_EXIT_ERR_COMMIT
在安装或删除软件包时发生错误。您可以运行 zypper verify 来修复任何依赖性问题。
100 - ZYPPER_EXIT_INF_UPDATE_NEEDED
由 patch-check 命令返回,如果安装补丁可用。
101 - ZYPPER_EXIT_INF_SEC_UPDATE_NEEDED
由 patch-check 命令返回,如果安装安全补丁可用。
102 - ZYPPER_EXIT_INF_REBOOT_NEEDED
在成功安装需要重新启动计算机的补丁后返回。
103 - ZYPPER_EXIT_INF_RESTART_NEEDED
在成功安装影响软件包管理器本身的补丁后返回。这意味着用于执行的命令(例如 zypper update)需要再次执行才能安装任何剩余的补丁。
104 - ZYPPER_EXIT_INF_CAP_NOT_FOUND
由 install 和 remove 命令返回,如果任何参数与可用的(或已安装的)软件包名称或其他功能不匹配。
105 - ZYPPER_EXIT_ON_SIGNAL
在收到 SIGINT 或 SIGTERM 后退出时返回。
106 - ZYPPER_EXIT_INF_REPOS_SKIPPED
由于无法刷新,因此必须暂时禁用一些仓库。您应该检查您的仓库配置(例如 zypper ref -f)。
107 - ZYPPER_EXIT_INF_RPM_SCRIPT_FAILED
安装基本上成功了,但一些软件包的 %post 安装脚本返回了一个错误。这些软件包已成功解包到磁盘并已在 rpm 数据库中注册,但由于失败的安装脚本,它们可能无法按预期工作。失败的脚本输出可能会揭示实际发生的情况。任何脚本输出都记录在 /var/log/zypp/history 中。
Zypper 子命令(参见 SUBCOMMANDS 部分)可能会返回 不同的代码,这些代码应在命令的 man page 中描述。调用 zypper help subcommand 可以查看子命令的 man page(如果已提供)。
主页
⟨ URL: https://github.com/openSUSE/zypper ⟩
作者
zypper 项目由 Martin Vidner、Jan Kupec、Michael Andres、Duncan Mac-Vicar Prett、Josef Reidinger 和 Stanislav Visnovsky 启动。后来很多人也为它做出了贡献。
参见
locks(5), zypper-log(8), YaST2(8)