摘要
本章描述 Zypper 和 RPM,这是两个用于管理软件的命令行工具。
Zypper 是用于安装和更新包的命令行工具。zypper 的语法类似于 rug 的语法。与 rug 相反,zypper 不需要在场景后运行 zmd 守护程序。有关 rug 兼容性的更多信息,请参见 http://en.opensuse.org/Zypper/Usage#Compatibility_with_Rug。这一点对于完成远程软件管理任务或从外壳脚本管理软件尤其有用。
zypper 在以下位置中包含有帮助概述:
zypper help
zypper 的常用语法为:
zypper[global-options]command[command-options][arguments]...
不需要括在括号中的组件。执行 zypper 最简单的方式是,键入其名称后跟一个命令。例如,将所有需要的增补程序应用于系统类型:
zypper update
或者,可以从一个或多个全局选项中选择,方法是:只需在命令前面键入这些选项。例如,--non-interactive 表示运行此命令且不作任何询问,自行决定:
zypper --non-interactive update
要使用特定于某一特定命令的选项,请在此命令后面键入这些选项。例如,--auto-agree-with-licenses 表示将所有所需增补程序应用于系统且不要求确认任何许可证(所有这些许可证事先都已读取):
zypper update --auto-agree-with-licenses
某些命令需要一个或多个自变量:
zypper install mplayer
某些选项也需要自变量。以下内容表示使用较新的包更新系统:
zypper update -t package
以上所有组合内容表示仅使用 factory 安装源安装,而且很冗长:
zypper -v install --repo factory mplayer amarok
也可使用 +/- 或 ~/! 修改键一次性安装和删除包:
zypper install emacs -vim
Or:
zypper remove emacs +vim
或者,如果选择将 - 和指定的第一个包一起使用,则必须在该包之前写上 --,以免将其解释为命令选项:
zypper install -- -vim emacs
要安装来自注册安装源的包,请使用:
zypper install package_name
zypper 也支持通配符。要安装以 开头的所有包,请使用
package_name
zypper install package_name*
您还可以直接安装本地或远程 RPM - Zypper 还将根据以下命令自动安装所有 package_name 包:
zypper install http://www.example.com/package_name.rpm
为避免解决依赖性,请使用 --no-recommends 或 --no-force-resolution。
要删除已安装的包,请使用
zypper remove package_name![]() | 请勿删除系统必需的包 |
|---|---|
请勿删除如 | |
默认情况下,在安装或删除选定包前 zypper 会要求进行确认。请使用 --non-interactive 选项覆盖此行为。在实际模式(安装、删除和更新)之前必须提供此选项,如同
zypper--non-interactiveinstallpackage_name
此选项允许在脚本和 Cron 作业中使用 zypper。
如果要安装某包的对应源代码包,请使用
zypper source-install package_name
使用此命令,还可安装指定包的构建依赖性。如果不想执行此操作,请如下所示添加开关 --no-build-deps:
zypper source-install --no-build-deps package_name
当然,仅当您已将带有源代码包的安装源添加到安装源列表中时,此操作才有效。有关添加安装源的更多信息,请参见第 4.1.4 节 “管理安装源”。
更改已安装的软件库后,请校验是否仍满足所有的依赖性:
zypper verify
使用 zypper 更新软件共有两种不同的方式。要将所有已正式发布的增补程序集成到您的系统中,只需运行
zypper update
这种情况下,会对安装源中的所有可用增补程序进行相关性检查,如有需要,还会安装这些增补程序。
如果某个安装源只有新包,但未提供增补程序,那么 zypper update 不会产生任何作用。要更新所有这些包,就必须进行指定,以安装 package 类型的更新:
zypper update -t package
要更新单个包,请使用安装命令:
zypper install package_name可使用此命令来获取所有可用新包的列表:
zypper list-updates -t package
zypper 的所有安装或更新命令均基于 zypper 已知的安装源列表。要列出系统已知的所有安装源,请使用命令:
zypper repos
结果将类似于与以下输出:
# | Enabled | Refresh | Type | Alias | Name --+---------+---------+-------+-------------------+------------------- 1 | Yes | Yes | yast2 | openSUSE-DVD 11.0 | openSUSE-DVD 11.0 2 | Yes | No | yast2 | Main (OSS) | Main (OSS) 3 | Yes | No | yast2 | Main (Non-OSS) | Main (Non-OSS)
如果想从此列表中删除某个安装源,请将命令 zypper renamerepo 和要删除的安装源的别名结合使用。要删除示例中的 Main Repository (Non-OSS),请使用以下命令:
zypper renamerepo Main Repository (Non-OSS)
要添加安装源,请运行
zypper addrepoURIAlias
URI 可以是因特网安装源(请参见 http://en.opensuse.org/Additional_YaST_Package_Repositories 以获取可用安装源列表)、目录、CD 或 DVD。Alias 是安装源的唯一简写标识符。您可以自由选择别名,唯一的例外情况是别名必须唯一。如果指定的别名已在使用,zypper 将发出警告。
可以使用各种查询命令,如 search、info 或 what-provides。
search 会按包名进行操作,并会在输出的第一列中显示状态 (S) 信息。
带有作为自变量的包名的 info 会显示包的详细信息。
what-provides 类似于 rpm -q --whatprovides packagepackage,但是 rpm 只能查询 RPM 数据库(即所有已安装包的数据库)。另一方面,Zypper 将告诉您任意安装源的功能的提供商,而非仅已安装的安装源功能的提供商。
特别是对于调试目的,可以使用如 --plus-repo、--disable-repositories 和 --disable-system-resolvables 之类的开关。如果只想在一个安装源中进行搜索,请使用这些开关。有关详细使用信息,请参见 zypper 手册页 (man zypper)。
有时必须依次运行几个不同的 zypper 命令。要避免 zypper 为每个 zypper 命令重复读取所有数据库,可以以壳层模式运行 zypper:
zypper shell
只需在运行壳层时使用相应的参数发出 zypper 命令:
zypper> in zsh ... zypper> exit
使用 zypper 壳层的速度通常更快,因为所有的相关数据都在内存中。
Zypper 支持 readline 库。这意味着您可以使用 Zypper 壳层中的所有命令行编辑功能(这些功能在 Bash 壳层中也可用)。Zypper 在文件 ~/.zypper_history 中维护其命令历史记录。
有关从命令行更新的更多信息,请输入 zypper --help 或参见 zypper(8) 手册页。有关示例和详细信息,请访问 http://en.opensuse.org/Zypper/Usage。