使用命令行工具管理软件

目录

4.1. 使用 Zypper
4.2. RPM - 包管理器

摘要

本章描述 Zypper 和 RPM,这是两个用于管理软件的命令行工具。

使用 Zypper

Zypper 是用于安装和更新包的命令行工具。zypper 的语法类似于 rug 的语法。与 rug 相反,zypper 不需要在场景后运行 zmd 守护程序。有关 rug 兼容性的更多信息,请参见 man zypper 的 “COMPATIBILITY WITH RUG” 部分。这一点对于完成远程软件管理任务或从外壳脚本管理软件尤其有用。

zypper 在以下位置中包含有帮助概述:

zypper help

一般使用

zypper 的常用语法为:

zypper [global-options] command [command-options] [arguments] ...

不需要括在括号中的组件。执行 zypper 最简单的方式是,键入其名称后跟一个命令。例如,将所有需要的增补程序应用于系统类型:

zypper patch

或者,可以从一个或多个全局选项中选择,方法是:只需在命令前面键入这些选项。例如,--non-interactive 表示运行此命令且不作任何询问,自行决定:

zypper --non-interactive patch

要使用特定于某一特定命令的选项,请在此命令后面键入这些选项。例如,--auto-agree-with-licenses 表示将所有所需增补程序应用于系统且不要求确认任何许可证(所有这些许可证事先都已读取):

zypper patch --auto-agree-with-licenses

某些命令需要一个或多个自变量:

zypper install mplayer

某些选项也需要自变量。以下方式列出所有已知的模式:

zypper search -t pattern

您可以组合上述所有模式。例如,以下方式仅使用 factory 安装源安装 mplayeramarok 包,并且使用详细日志方式:

zypper -v install --repo factory mplayer amarok

使用 Zypper 安装和删除软件

要安装来自注册安装源的包,请使用:

zypper install package_name

要安装特定版本的包,请使用

zypper install package_name=version

zypper 也支持通配符。例如,要安装以 package_name 开头的所有包,请使用

zypper install package_name*

您还可以直接安装本地或远程 RPM - Zypper 还将根据以下命令自动安装所有 package_name 包:

zypper install http://www.example.com/package_name.rpm

要删除已安装的包,请使用

zypper remove package_name

要一次安装和删除多个包,请使用 +/-~/! 修改键一次性安装和删除包:

zypper install emacs -vim

或:

zypper remove emacs +vim

或者,如果选择将 - 和指定的第一个包一起使用,则必须在该包之前写上 --,以免将其解释为命令选项:

zypper install -- -vim emacs
[Warning]请勿删除系统必需的包

请勿删除如 glibczypperkernel 之类的包。这些包是系统必需的,如果缺少这些包,系统可能会停止工作。

默认情况下,在安装或删除选定包之前或发生问题时,zypper 会要求确认。请使用 --non-interactive 选项覆盖此行为。在实际命令(install、remove 和 patch)之前必须提供此选项,如同

zypper --non-interactive install package_name

此选项允许在脚本和 Cron 任务中使用 zypper。

如果要安装某包的对应源代码包,请使用

zypper source-install package_name

使用此命令,还可安装指定包的构建依赖性。如果不想执行此操作,请如下所示添加开关 --no-build-deps

zypper source-install --no-build-deps package_name
  

当然,仅当您已将带有源代码包的安装源添加到安装源列表中时,此操作才有效。输入 zypper search -t srcpackage 以获取安装源中可用的源包。有关添加安装源的更多信息,请参见第 4.1.4 节 “管理安装源”

如果安装期间发生错误,或认为需要的任何时候,可以校验是否仍满足所有依赖性要求:

zypper verify

使用 Zypper 更新软件

使用 zypper 更新软件共有两种不同的方式。要将所有已正式发布的增补程序集成到您的系统中,只需运行

zypper patch

这种情况下,会对安装源中的所有可用增补程序进行相关性检查,如有需要,还会安装这些增补程序。注册 SUSE Linux Enterprise 安装之后,包含此类增补程序的官方更新安装源将添加到您的系统中。需要应用它们时,只需输入上述命令。

如果某个安装源只包含新包,但未提供增补程序,则 zypper patch 不会产生任何作用。要使用新的可用版本更新所有安装的包,请使用:

zypper update

要更新单个包,请使用带自变量的更新命令:

zypper update package_name

或安装命令:

zypper install package_name

可使用此命令来获取所有可用新包的列表:

zypper list-updates

类似的,要列出所有所需的包,请使用:

zypper list-patches

管理安装源

zypper 的所有安装或增补程序命令均基于 zypper 已知的安装源列表。要列出系统已知的所有安装源,请使用命令:

zypper repos

结果将类似于与以下输出:


# | Alias                             | Name                              | Enabled | Refresh
--+-----------------------------------+-----------------------------------+---------+--------
1 | SUSE-Linux-Enterprise-Server 11-0 | SUSE-Linux-Enterprise-Server 11-0 | Yes     | No
2 | SLES-11-Updates                   | SLES 11 Online Updates            | Yes     | Yes
3 | broadcomdrv                       | Broadcom Drivers                  | Yes     | No      

当在各个命令中指定安装源时,可以使用别名、URI 或 zypper repos 命令输出中的安装源编号。但要注意,在修改安装源列表后,这些编号可能会更改。别名本身不会更改。

如果要从此列表中删除某个安装源,请将命令 zypper removerepo 和要删除的安装源的别名或编号结合使用。要删除示例中的 Broadcom Drivers,请使用以下命令:

zypper removerepo 3

要添加安装源,请运行

zypper addrepo URI Alias

URI 可以是因特网安装源、目录或 CD 或 DVD。Alias 是安装源的唯一简写标识符。您可以自由选择别名,唯一的例外情况是别名必须唯一。如果指定的别名已在使用,zypper 将发出警告。

要使得安装源更便于使用,请使用简短易记的别名。安装源别名可以使用 renamerepo 命令更改。例如,要将示例长名称 SUSE-Linux-Enterprise-Server 11-0 更改为简短的标签 main,请输入:

zypper renamerepo 1 main

查询

可以使用各种查询命令,如 searchinfowhat-provides

search 可用于包名或(可选)包摘要和说明,并在所发现包的列表的第一列中显示状态 (S) 信息。

带有作为自变量的包名的 info 会显示包的详细信息。

what-provides package 类似于 rpm -q --whatprovides package,但是 rpm 只能查询 RPM 数据库(即所有已安装包的数据库)。另一方面,Zypper 将告诉您任意安装源的功能的提供商,而非仅已安装的安装源功能的提供商。

有关更多查询命令和详细的用法信息,请参见 zypper 手册页 (man zypper)。

更多信息

有关通过命令行管理软件的更多信息,请输入 zypper helpzypper help command,或参见 zypper(8) 手册页。