使用命令行工具管理软件

目录

5.1. 使用 Zypper
5.2. RPM - 包管理器

摘要

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

使用 Zypper

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

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

一般使用

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 命令都有 dry-run 选项,它模拟给定的命令。它可用于测试。

zypper remove --dry-run MozillaFirefox

使用 Zypper 安装和删除软件

要安装或删除包,请使用以下命令:

zypper install package
zypper remove package

Zypper 知道安装和删除命令处理包的不同方式:

用完整包名称
zypper in MozillaFirefox
用安装源别名和包名称
zypper in mozilla:MozillaFirefox

其中 mozilla 是用于安装的安装源别名。

用使用通配符的包名称

以下命令将安装名称以Moz开头的所有包。使用通配符要小心,特别是删除包的时候。

zypper in Moz*
用功能

例如,如果您要安装 perl 模块但不知道包名称,功能就可以派上用场:

zypper in 'perl(Time::ParseDate)'
用功能和/或体系结构和/或版本

您可以指定功能以及体系结构(例如 i586x86_64)和/或版本。版本前必须带有运算符:<(小于)、<=(小于等于)、=(等于)、>、>=(大于等于)或 >(大于)。

zypper in 'firefox.x86_64'
zypper in 'firefox>=3.5.3'
zypper in 'firefox.x86_64>=3.5.3'
用路径

您还可以指定包的本地或远程路径:

zypper in /tmp/install/MozillaFirefox.rpm
zypper in http://download.opensuse.org/repositories/mozilla/SUSE_Factory/x86_64/MozillaFirefox-3.5.3-1.3.x86_64.rpm

要同时安装和删除包,请使用 +/- 修饰符。要同时安装 emacs 并删除 vim,请使用:

zypper install emacs -vim

要同时删除 emacs 并安装 vim,请使用:

zypper remove emacs +vim

为避免 - 开头的包名称被解释为命令行选项,要始终把它用作第二个自变量。如果做不到这点,在它之前加上 --

zypper install -emacs +vim       # Wrong
zypper install vim -emacs        # Correct
zypper install -- -emacs +vim    # same as above
zypper remove emacs +vim         # same as above

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

zypper --non-interactive install package_name

该选项允许在脚本和 cron 任务中使用 Zypper。

[Warning]不要删除必需的系统包

请勿删除如 glibczypperkernel 之类的包。这些包是系统强制安装的,如果删除可能导致系统不稳定或完全停止运行。

安装资源包

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

zypper source-install package_name
   

使用此命令,还可安装指定包的版本依赖性。如果不想执行此操作,请如下所示添加开关 -D。要只安装版本依赖性,请使用 -d

zypper source-install -d package_name # source package only
    zypper source-install -D package_name # build dependencies only

当然,只有当安装源列表中启用了含有源包的安装源时,才能这样做(默认添加但不启用它)。请参见第 5.1.4 节 “用 Zypper 管理安装源”了解有关安装源管理的细节。

可使用以下方法来获取安装源中所有源包的列表:

zypper search -t srcpackage

实用程序

要校验所有依赖性是否仍然满足,并修复缺少的依赖性,请使用:

zypper verify

除了依赖性必须满足外,某些包还推荐其他包。这些推荐包仅当实际可用时才安装。如果推荐的包是在推荐它们的包已安装(通过添加其他包)之后才可用,请使用以下命令:

zypper install-new-recommends

使用 Zypper 更新软件

用 Zypper 更新软件有三种方式:安装包、安装包的新版本或更新整个分发包。后者用 zypper dist-upgrade 命令实现,该命令在第 4.1.4 节 “Distribution Upgrade with zypper” (第 4 章 Updating SUSE Linux Enterprise, ↑部署指南)中进行了讨论。

安装增补程序

要安装所有适用于您系统的正式发布增补程序,只需运行:

zypper patch

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

Zypper 知道三种查询增补程序可用性的不同命令:

zypper patch-check

列出需要的增补程序数(适用于您的系统但尚未安装的增补程序)

~ # zypper patch-check
Loading repository data...
Reading installed packages...
5 patches needed (1 security patch)
zypper list-patches

列出需要的所有增补程序(适用于您的系统但尚未安装的增补程序)


~ # zypper list-updates
Loading repository data...
Reading installed packages...
S | Repository | Name                          | Current | Available  | Arch
--+------------+-------------------------------+---------+------------+-------
v | Updates    | update-test-interactive       | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-optional          | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-reboot-needed     | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-relogin-suggested | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-security          | 0-2.35  | 0-9999.1.2 | noarch
zypper patches

列出 SUSE Linux Enterprise Desktop 可用的所有增补程序,无论是否已安装或是否适用于您的安装。

还可以列出并安装与特定问题相关的增补程序。 要列出特定的增补程序,请使用带以下选项的 zypper list-patches 命令:

-b

列出 Bugzilla 问题的所有必需增补程序。

--bugzilla[=编号]

列出指定编号的 Bugzilla 问题的必需增补程序。

要安装特定问题的增补程序,请使用命令:

zypper patch --bugzilla=number
  

安装更新

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

zypper update

要更新个别包,请用更新或安装命令指定包:

zypper update package
zypper install package

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

zypper list-updates
[Note]zypper updatezypper dist-upgrade 之间的区别

选择 zypper update 可以在保持系统完整性的前提下将包更新到您的产品版本可用的较新版本。zypper update 遵守以下规则:

不更改供应商
不更改体系结构
不降级
保留已安装的包

要将您的安装升级到新的产品版本,请使用 zypper dist-upgrade 和必需的安装源(有关细节请参见第 5.1.4 节 “用 Zypper 管理安装源”)。该命令可确保安装当前启用的安装源上的所有包。该规则是强制执行的,因此包可能更改供应商或体系结构,甚至降级。升级后不满足依赖性的所有包都将卸装。

用 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 命令输出中的安装源编号。但要注意,在修改安装源列表后,这些编号可能会更改。别名本身不会更改。

默认情况下不显示安装源 URI 或优先级之类的细节。用以下命令可以列出所有细节:

添加安装源

要添加安装源,请运行

zypper addrepo URI Alias

URI 可以是因特网安装源、网络资源、目录、CD 或 DVD(有关细节请参见 http://en.opensuse.org/Libzypp/URI)。Alias 是安装源的唯一简写标识符。您可以自由选择别名,唯一的例外情况是别名必须唯一。如果指定的别名已在使用,Zypper 将发出警告。要使得安装源更便于使用,请使用简短易记的别名。

删除安装源

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

zypper removerepo 3

修改安装源

zypper modifyrepo 启用或禁用安装源。您还可以用该命令更改安装源的属性(例如刷新行为、名称或优先级)。以下命令将会启用安装源名称updates、打开自动刷新并将其优先级设置为 20:

zypper mr -er -p 20 'updates'

修改安装源并不限于单个安装源 - 您还可以按组操作:

-a:所有安装源
-l:本地安装源
-t:远程安装源
-m TYPE:特定类型的安装源(TYPE 可以是以下之一:http、https、ftp、cd、dvd、dir、file、cifs、smb、nfs、hd 和 iso)

要重命名安装源别名,请使用 renamerepo 命令。以下示例把别名从Mozilla Firefox改为firefox

zypper renamerepo 'Mozilla Firefox' firefox

用 Zypper 查询安装源和包

Zypper 提供各种查询安装源或包的方式。要获取所有可用的产品、模式、包或增补程序的列表,请使用以下命令:

zypper products
zypper patterns
zypper packages
zypper patches

要查询特定包的所有安装源,请使用 search。它用于包名称、功能或(可选)包摘要和描述。在搜索字词中允许使用通配符 * 和 ?。默认情况下搜索不区分大小写。

zypper se firefox       # simple search for "firefox"
zypper se *fire*        # using wildcards
zypper se -d fire       # also search in package descriptions and summaries
zypper se -u firefix    # only display packages not already installed

要搜索提供特殊功能的包,请使用命令 what-provides。例如,如果您想知道哪个包提供 perl 模块 SVN::Core,请使用以下命令:

zypper what-provides 'perl(SVN::Core)'

要查询个别包,请使用 info 命令,并用完整包名称作为自变量。它会显示包的详细信息。还可以用选项 --requires--recommends 显示该包需要/推荐的包:

zypper info --requires MozillaFirefox

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