Zypper

Zypper 是个命令行形式的软件包管理器,以 libzypp 为处理引擎,提供诸如供应源管理、依赖关系解决和软件包安装等功能。 Zypper 支持 YaST2 软件源和 RPM 元数据软件包软件源。Zypper 使用的软件源和 YaST 使用的一样,YaST 也是使用 libzypp 。Zypper 还能处理如补丁、模式、成品这样的软件源扩展。

快速参考 #

下列是些常用的命令:

zypper			# 列出可用的全局选项和命令
zypper help search	# 列出 search 命令的帮助
zypper lp		# 列出需要的补丁更新
zypper patch		# 安装所需的补丁
zypper se sqlite	# 搜索 sqlite 软件
zypper rm sqlite	# 删除 sqlite 软件
zypper in sqlite	# 安装 sqlite 软件
zypper in yast*	# 安装所有符合 yast* 名称的软件
zypper up		# 更新所有软件包到可用的新版本

命令 #

zypper 提供的一系列命令可以归类成以下类别:

  • 供应源管理 refresh, repos, addrepo, removerepo, modifyrepo, namerepo refresh-services, services, addservice, removeservice, modifyservice
  • 软件包管理 install, remove, source-install
  • 更新管理 patch, list-patches, patch-check, patches, update, list-updates, dist-upgrade
  • 查询 search, info, what-provides, list-updates, patch-check, patches, packages, patterns, products
  • 锁定 locks, addlock, removelock, cleanlocks
  • 工具 verify, install-new-recommends
  • 其他 help, licenses, versioncmp, targetos

供应源管理 #

您可以以 zypper lr 里的序号、别名或 URI(Uniform Resource Identifier,统一资源标志符)代指相应的供应源。使用序号时,须先 zypper lr 确认一番,因为若变更了供应源这些序号也会变更。

列出设定的供应源 #

repos 或 lr

示例:

$ zypper lr
# | Alias                 | Name                  | Enabled | Refresh
--+-----------------------+-----------------------+---------+--------
1 | packman               | Packman 11.1          | Yes     | No
2 | fate                  | fate                  | No      | No
3 | openSUSE-11.1-Updates | Updates for 11.1      | Yes     | Yes
4 | repo-oss              | openSUSE-11.1-Oss     | Yes     | No
5 | repo-non-oss          | openSUSE-11.1-Non-Oss | Yes     | No
6 | repo-debug            | openSUSE-11.1-Debug   | No      | No
$ zypper lr 5 4
Alias          : openSUSE-11.3-Non-Oss
Name           : openSUSE-11.3-Non-Oss
URI            : http://download.opensuse.org/distribution/11.3/repo/non-oss/
Enabled        : Yes
Priority       : 99
Auto-refresh   : Off
Keep Packages  : Off
Type           : yast2                                                       
GPG Check      : On
GPG Key URI    : 
Path Prefix    : /
Parent Service : 
MD Cache Path  : /var/cache/zypp/raw/openSUSE-11.3-Non-Oss

Alias          : openSUSE-11.3-Oss
Name           : openSUSE-11.3-Oss
URI            : http://download.opensuse.org/distribution/11.3/repo/oss/
Enabled        : Yes
Priority       : 99
Auto-refresh   : Off
Keep Packages  : Off 
Type           : yast2
GPG Check      : On
GPG Key URI    :   
Path Prefix    : /
Parent Service :
MD Cache Path  : /var/cache/zypp/raw/openSUSE-11.3-Oss

其他例子:

zypper lr -u       # 列出供应源 URI
zypper lr -d       # 列出供应源的其他数项属性
zypper lr -P       # 列出供应源优先级并依此排序
zypper lr -e my    # 导出全部的供应源设定信息至文件 my.repo

添加供应源 #

addrepo 或 ar

安装软件包之前至少得有一个供应源。可以使用 addrepo 命令添加供应源:

示例:

# zypper ar http://download.videolan.org/pub/vlc/SuSE/11.1 vlc
Adding repository 'vlc' [done]
Repository 'vlc' successfully added
Enabled: Yes
Autorefresh: No
URI: http://download.videolan.org/pub/vlc/SuSE/11.1

其他例子:

zypper ar http://download.opensuse.org/repositories/X11:/XGL/openSUSE_11.1/X11:XGL.repo  # 通过 .repo 文件
zypper ar -c ftp://some.download.site myalias   # 添加之前试探供应源
zypper ar my/dir/with/rpms local                # 添加含 RPM 文件的本地目录为供应源

刷新供应源 #

refresh 或 ref

添加了供应源之后或供应源不新之时,就需要刷新供应源。即下载软件包的元数据 (metadata),并将数据预处理为 .solv 缓存以便快速读取。

# zypper refresh
Downloading repository 'Packman 11.1' metadata [done]
Building repository 'Packman 11.1' cache [done]
Downloading repository 'Updates for 11.1' metadata [done]
Building repository 'Updates for 11.1' cache [done]
Repository 'openSUSE-11.1-Oss' is up to date.
All repositories have been refreshed.

若是供应源已启用自动刷新,您就不需操心了,当需要的时候他会自动进行。然而,有的用户偏好控制刷新的进行(此举可以避免当您只想看看 ‘zypper info krusader’ 时却须等待刷新的完成),故而禁用了自动刷新。更多细节参阅 man zypper。

其他例子:

zypper ref packman main  # 您也可以只指定特定的供应源刷新
zypper ref -f upd        # 强制 upd 供应源刷新

移除供应源 #

removerepo 或 rr

# zypper rr vlc 1 23 foo
Repository 23 not found by alias, number or URI.
Repository foo not found by alias, number or URI.
Removing repository 'repo-debug' [done]
Repository 'repo-debug' has been removed.
Removing repository 'vlc' [done]
Repository 'vlc' has been removed.

调整供应源 #

modifyrepo 或 mr

禁用序号为 6 的供应源:

# zypper mr -d 6
Repository 'repo-non-oss' has been sucessfully disabled.

启用 packman 供应源的自动刷新并缓存 RPM 文件,再设置其优先级为 70:

# zypper mr -rk -p 70 packman
Autorefresh has been enabled for repository 'packman'.
RPM files caching has been enabled for repository 'packman'.
Repository 'packman' priority has been set to 70.

禁用所有供应源的 RPM 文件缓存:

# zypper mr -Ka
Nothing to change for repository 'local'.
RPM files caching has been disabled for repository 'packman'.
Nothing to change for repository 'fate'.
Nothing to change for repository 'upd'.
Nothing to change for repository 'repo-oss'.
Nothing to change for repository 'repo-non-oss'.

启用所有供应源的 RPM 文件缓存:

# zypper mr -ka
RPM files caching has been enabled for repository 'repo-non-oss'.
RPM files caching has been enabled for repository 'Main Repository (OSS)'.
RPM files caching has been enabled for repository 'Main Repository (NON-OSS)'.
RPM files caching has been enabled for repository 'openSUSE-11.1-Updates'.

重命名供应源 #

renamerepo 或 nr

# zypper nr 3 upd
Repository 'openSUSE-11.1-Updates' renamed to 'upd'.

当前该命令只能更改供应源的别名 (alias),若您想更改显示的名称,请参阅 mr 命令。

取一个简短的别名可以方便地用于命令参数或 –repo 选项中。使用别名较之序号安全,序号可能变化而使您出错,较之 URI 简单,URI 太长复制黏贴不便。

导出导入供应源 #

repos –export 或 lr -e

您可以导出您的供应源列表为一个文件,并于稍后或另一计算机上导入。

# zypper lr --export backups/repos/foo.repo
# zypper ar backups/repos/foo.repo

软件包管理 #

  • 根据其提供的名字或者功能安装或卸载软件包
  • 通过软件包名字安装或卸载软件包
  • 安装或卸载指定版本的软件包
  • 安装纯 RPM 文件以及从软件包中满足其依赖
  • 一次性安装和卸载软件包 (通过 +/- 或者 ~/!)
  • 通过在软件包名字前添加 ‘repo_alias:’ 来安装指定软件源的软件包
  • 用可能的软件源将所有已安装的软件包更新到可用的新版本
  • 支持安装模式,产品和补丁
  • 详细的安装摘要
  • 避免安装推荐的软件包 (仅仅在需要的时候)

软件源管理 #

  • 方便地添加,删除,导入和导出软件源
  • 可以使用临时软件源
  • 限制对指定软件源的操作
  • 一次性修改多个软件源 - 通过选择媒体类型,本地或者选择全部

查询 #

  • 通过名字查询软件包,也可以通过摘要和描述
  • 通过匹配子字符串,glob 表达式 (通配符),整个词组或者精确字符串来查询软件包
  • 通过软件包名字和类型来组织搜索结果,或者显示在所有软件源中软件包的所有可用版本
  • 显示关于软件包,补丁,模式和产品的详细信息
  • 列出所有可用的软件包,补丁,模式和产品

更新管理 #

  • 列出需要或者所有可用的补丁
  • 安装需要的补丁

软件包锁定 #

  • 容易通过名字(用通配符),软件包类型和软件源来增加一个简单的锁来锁定软件包
  • 列出当前的所有软件包锁
  • 通过序号或者名字来删除掉软件包锁

工具 #

  • 验证已安装软件包的依赖
  • 通过已安装的软件包的推荐来安装一个新的软件包,或者是在添加了新的软件源或者硬件之后推荐安装新的软件包。

通用 #

  • 输出 XML 格式给机器理解
  • 非交互模式,可使用于脚本
  • 3种级别的可视输出
  • autorewrite local paths to dir:/working_dir/local_path where URI is expected
  • 当指定本地路径 URI 时,将自动写为 dir:/working_dir/local_path 。
Host by unixetc.com Linux Tags