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镜像:
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
:
/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支持的软件包。
操作步骤
注册SUSE产品: https://www.suse.com/documentation/sles-12/book_sle_deployment/data/sec_i_yast2_conf_manual_cc.html
激活SUSE Package Hub extension
有两种方式激活:
通过 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