使用命令行工具管理软件

目录

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

摘要

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

使用 Zypper

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 安装和删除软件

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

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
[Warning]请勿删除系统必需的包

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

默认情况下,在安装或删除选定包前 zypper 会要求进行确认。请使用 --non-interactive 选项覆盖此行为。在实际模式(安装、删除和更新)之前必须提供此选项,如同

zypper --non-interactive install package_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 更新软件共有两种不同的方式。要将所有已正式发布的增补程序集成到您的系统中,只需运行

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 addrepo URI Alias

URI 可以是因特网安装源(请参见 http://en.opensuse.org/Additional_YaST_Package_Repositories 以获取可用安装源列表)、目录、CD 或 DVD。Alias 是安装源的唯一简写标识符。您可以自由选择别名,唯一的例外情况是别名必须唯一。如果指定的别名已在使用,zypper 将发出警告。

查询

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

search 会按包名进行操作,并会在输出的第一列中显示状态 (S) 信息。

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

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

特别是对于调试目的,可以使用如 --plus-repo--disable-repositories--disable-system-resolvables 之类的开关。如果只想在一个安装源中进行搜索,请使用这些开关。有关详细使用信息,请参见 zypper 手册页 (man zypper)。

使用 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