zypper - SUSE包管理工具

Zypper 是一个命令行包管理器,用于安装、更新和删除软件包以及管理软件仓库。可以方便我们远程管理软件或者通过shell完成软件管理。

zypper的简单格式是跟随一个命令,例如应用补丁:

zypper patch

如果希望以非交互方式运行程序(例如在脚本中),则使用参数 --non-interactive

zypper --non-interactive patch

zypper提供了一个模拟执行选项 --dry-run 可以模拟命令但实际不执行,通常用于测试:

zypper remove --dry-run MozillaFirefox

备注

OpenSUSE提供了一个 Zypper Cheat Sheet 快速命令查询,可以方便我们对照找到使用方法。

软件仓库

  • 首先我们检查软件仓库:

    zypper repos
    # 或者
    zypper lr
    

此时显示输出举例:

Repository priorities are without effect. All enabled repositories share the same priority.

# | Alias             | Name              | Enabled | GPG Check | Refresh
--+-------------------+-------------------+---------+-----------+--------
1 | SLES12-SP3-12.3-0 | SLES12-SP3-12.3-0 | No      | ----      | ----

这说明我们的安装系统已经配置了一个 SLES12-SP3-12.3-0 仓库,但是并没有激活。

通过 -u 参数还可以详细显示仓库的url:

zypper lr -u

显示输出:

# | Alias             | Name              | Enabled | GPG Check | Refresh | URI
--+-------------------+-------------------+---------+-----------+---------+-----------------------------------------------------------------------------------------------
1 | SLES12-SP3-12.3-0 | SLES12-SP3-12.3-0 | No      | ----      | ----    | hd:///?device=/dev/disk/by-id/usb-Kingston_DataTraveler_3.0_0C9D9210E304F440990A0478-0:0-part2

原来这个仓库是本地安装U盘,当前已经移除。

  • 添加安装源:

    zypper ar http://download.opensuse.org/update/12.3/ update
    

然后再次检查 zypper lr 则显示:

# | Alias             | Name              | Enabled | GPG Check | Refresh
--+-------------------+-------------------+---------+-----------+--------
1 | SLES12-SP3-12.3-0 | SLES12-SP3-12.3-0 | No      | ----      | ----
2 | update            | update            | Yes     | ( p ) Yes  | No
  • 上述软件仓库名字 update 不清晰,所以我们可以修改软件仓库名字:

    zypper nr 2 opensuse-12.3-update
    

提示:

Repository 'update' renamed to 'opensuse-12.3-update'.

再次检查 zypper lr 显示名字已经修订:

# | Alias                | Name                 | Enabled | GPG Check | Refresh
--+----------------------+----------------------+---------+-----------+--------
1 | SLES12-SP3-12.3-0    | SLES12-SP3-12.3-0    | No      | ----      | ----
2 | opensuse-12.3-update | opensuse-12.3-update | Yes     | ( p ) Yes  | No
  • 如果我们要移除仓库,例如刚才添加的仓库 opensuse-12.3-update 则使用命令:

    zypper rr opensuse-12.3-update
    

备注

现在你基本上应该已经有些感觉了,SUSE的zypper管理命令使用了很多字母缩写,例如:

removerepo = rr
namerepo = nr
addrepo = ar

添加 SLES iso镜像

在SLES 15 sp4中部署GlusterFS 11客户端 ,考虑到需要安装依赖,所以添加iso镜像:

安装 glusterfs 客户端需要安装操作系统依然软件包,所以挂载SLES 15 SP4光盘镜像
zypper ar -c -t yast2 "iso:/?iso=/root/SLE-15-SP4-Full-x86_64-QU2-Media1.iso" "SLES-15-SP4"

此时输出信息:

挂载成功输出信息
Warning: Legacy commandline option --type detected. This option is ignored.
Adding repository 'SLES-15-SP4' ......................................................[done]
Repository 'SLES-15-SP4' successfully added

URI         : iso:/?iso=/root/SLE-15-SP4-Full-x86_64-QU2-Media1.iso
Enabled     : Yes
GPG Check   : Yes
Autorefresh : No
Priority    : 99 (default priority)

Repository priorities are without effect. All enabled repositories share the same priority.

实际上上述操作会在 /etc/zypp/repos.d 目录下创建 SLES-15-SP4.repo :

添加iso镜像仓库的配置文件 /etc/zypp/repos.d/SLES-15-SP4.repo
[SLES-15-SP4]
enabled=1
autorefresh=0
baseurl=iso:/?iso=/root/SLE-15-SP4-Full-x86_64-QU2-Media1.iso

添加 createrepo 创建仓库 构建仓库

在SLES 15 sp4中部署GlusterFS 11客户端 ,采用 createrepo 创建仓库 构建了从社区下载rpm包的软件仓库。实际上SUSE采用了和 RedHat Linux 完全一样的rpm管理方式,只不过配置目录略有差异

  • 配置 glusterfs-11_sles15sp4.repo :

/etc/zypp/repos.d/glusterfs-11_sles15sp4.repo 配置
[sels15sp4-gluster11]
name=SELS-15.4 - Gluster 11
baseurl=http://33.188.24.141:8080/glusterfs/11.0/SLES/15SP4/
enabled=1

实际上 zypper ar 就是在 /etc/zypp/repos.d 目录下添加 .repo 文件,将上述 glusterfs-11_sles15sp4.repo 放到 /etc/zypp/repos.d ,然后执行 zypper lr -u 就会看到:

检查添加 glusterfs-11_sles15sp4.repo 配置后的仓库情况
# | Alias                             | Name                           | Enabled | GPG Check | Refresh | URI
--+-----------------------------------+--------------------------------+---------+-----------+---------+---------------------------------------------------------
1 | SLES 15 SP4                       | SLES 15 SP4                    | Yes     | ( p) Yes  | No      | iso:/?iso=/root/SLE-15-SP4-Full-x86_64-QU2-Media1.iso
2 | sels15sp4-gluster11               | SELS-15.4 - Gluster 11         | Yes     | ( p) Yes  | No      | http://192.168.1.1:8080/glusterfs/11.0/SLES/15SP4/

SUSE Package Hub仓库

除了可以添加OpenSUSE的仓库,对于 SUSE Linux Enterprise Server 12还可以添加 SUSE Package Hub仓库,这个SUSE Package Hub仓库是由使用SUSE Open Build Service的社区提供构建和维护的,这样就可以用于安装SUSE Linux Enterprise Server和Desktop系统的软件包,而不需要自己重新编译。注意,这些软件包不是由SUSE官方直接支持的,但是SLES和SLED系统在使用这些软件包之后依然提供支持。

注意,SUSE Package Hub软件包不能替代或更新SUSE支持的软件包。

操作步骤

有两种方式激活:

通过 YaST2:

yast -> software
  -> Add-on Products
     -> Add
       -> Extensions and Modules from Registration Server...
         -> SUSE Package Hub

或者通过SUSEConnect:

SUSEConnect -p PackageHub/12.1/x86_64

以上案例是针对 SUSE Linux Enterprise 12 SP1,如果是其他版本,例如 SUSE Linux Enterprise 12 SP2 则为:

SUSEConnect -p PackageHub/12.2/x86_64

依次类推。

备注

使用以下命令可以列出所有可用模块和扩展:

SUSEConnect --list-extensions

参考