zypper:openSUSE中用于在CLI下管理软件包的安装,升级和删除。同时可以管理软件仓库。
1 常规用法
zypper的语法结构如下:
zypper [--global-options] COMMAND [--command-options] [arguments]
zypper command
最简单的使用方式就是输入名称,然后跟参数,例如,应用所有补丁到系统,使用下面的命令:
SUSE15:~ # zypper patch
Global options
另外,在zypper命令后面可以跟一个或多个全局选项,例如:
SUSE15:~ # zypper --non-interactive patch
上面例子的选项代表这是非交互式命令。
Command-specific options
如果要指定特定的功能,需要在后面指定参数:
SUSE15:~ # zypper patch --auto-agree-with-licenses
在上面的列子中,选项的意思是在应用补丁时不再需要任何许可的确认,意思是许可被自动接收。
Arguments
一些命令需要一个或多个参数,例如,使用命令install,你需要指定你需要要安装的软件包:
SUSE15:~ # zypper install mplayer
有些选项也需要一些参数,下面的命令用于先列出所有已知的模式:
SUSE15:~ # zypper search -t pattern
上面所有的选项/参数都可以混合使用。例如,下面的命令将会从factory
仓库安装mc
和vim
软件包,并显示详细信息:
SUSE15:~ # zypper -v install --from factory mc vim
--from
参数在所有的仓库都不关闭的情况下指定安装软件包的仓库。--repo
是它的一个别名,可以任意使用其中一个。
大多数的zypper命令会有dry-run
选项,用于模拟后面给出来的命令,多用于测试:
SUSE15:~ # zypper remove --dry-run MozillaFirefox
zypper支持全局的--userdata STRING
选项。你可以指定一个字符串,这个字符串会写入到zypper的日志文件中,主要是起标记作用。
SUSE15:~ # zypper --userdata STRING patch
2 使用zypper子命令
zypper的子命令是一些可执行文件,存放在zypper可执行文件目录/usr/lib/zypper
中。如果在这里没有找到,zypper会自动搜索你的$PATH
。通过下面的命令列出可用的子命令:
SUSE15:~ # zypper help subcommand
...
Available zypper subcommands in '/usr/lib/zypper/commands'
appstream-cache <No manual entry for zypper-appstream-cache>
lifecycle products and packages lifecycle information
Zypper subcommands available from elsewhere on your $PATH
log Zypper logfile reader
Type 'zypper help <subcommand>' to get subcommand-specific help if available.
3 使用zypper安装和删除软件
命令格式如下:
SUSE15:~ # zypper install openvpn
SUSE15:~ # zypper remove openvpn
3.1 选择具体需要安装或删除的软件包
有很多方式来寻找软件包,例如:
指定软件包的具体名称
SUSE15:~ # zypper install MozillaFirefox
指定软件包的名称和版本
SUSE15:~ # zypper install MozillaFirefox-52.2
指定使用的仓库和软件包名
SUSE15:~ # zypper install mozilla:MozillaFirefox
使用正则表达式的来匹配包名
如果不清楚软件包的具体名字,可以输入部分字符,其他字符以*
代替。或者需要删除很多相关联的软件包时,也可以采用这种方式。
SUSE15:~ # zypper install Mozilla*
当debug某个问题时,可能需要临时安装大量的
- debuginfo
软件包,这些软件包会输出大量的有用信息。在完成debug后,需要清空环境,可以使用命令zypper remove '*-debuginfo'
。
按功能(capability)
例如,如果安装一个不太清楚具体名字的软件包,可以根据提供的功能来进行模糊名称安装:
SUSE15:~ # zypper install firefox
按功能、硬件架构或版本
- 指定功能,以及运行的硬件架构
SUSE15:~ # zypper install 'firefox.x86_64'
- 指定版本范围,有一些选项可供使用:
< (lesser than), <= (lesser than or equal), = (equal), >= (greater than or equal), > (greater than).
SUSE15:~ # zypper install 'firefox>=74.2'
- 也可以将上面两种选项混合使用
SUSE15:~ # zypper install 'firefox.x86_64>=74.2'
给出RPM文件的路径
可以指定本地或远程的软件包路径:
SUSE15:~ # zypper install /tmp/install/MozillaFirefox.rpm
SUSE15:~ # zypper install http://download.example.com/MozillaFirefox.rpm
类似CentOS的
yum localinstall
3.2 安装和删除结合
要同时安装和删除软件包,可以使用+
和-
符号。例如在安装emacs
的同时删除vim
:
SUSE15:~ # zypper install emacs -vim
删除emacs
的同时安装vim
:
SUSE15:~ # zypper remove emacs +vim
为了避免混淆(如以-
开头的包),符号建议用在第二个参数中,如果必须使用,需要添加--
参数
SUSE15:~ # zypper install -emacs +vim # Wrong
SUSE15:~ # zypper install vim -emacs # Correct
SUSE15:~ # zypper install -- -emacs +vim # Correct
SUSE15:~ # zypper remove emacs +vim # Correct
3.3 清除已删除软件的依赖包
SUSE15:~ # zypper rm --clean-deps MozillaFirefox
3.4 在脚本中使用zypper
默认情况下,zypper在使用时会有一些交互选项。添加下面的选项后变成非交互式:
SUSE15:~ # zypper --non-interactive install MozillaFirefox
这样就可以用在脚本或者定时任务中了。
3.5 安装或下载源码包
SUSE15:~ # zypper source-install nginx
以root身份执行时,安装源包的默认位置是/usr/src/packages/
,以用户身份运行时则在~/rpmbuild
。 这些值可以在本地rpm中修改。
安装时会自动安装依赖包,如果不需要,可以添加-D
选项。
如果只是安装依赖包,使用-d
选项。
上面的命令仅限于添加了源码包的仓库。
下面的命令列出仓库中所有可用的源码包:
SUSE15:~ # zypper search -t srcpackage
Loading repository data...
Reading installed packages...
S | Name | Summary | Type
--+-------------------------------+------------------------------------------+-----------
| atftp | Advanced TFTP Server and Client | srcpackage
| createrepo_c | RPM repository metadata generation uti-> | srcpackage
| discord | Voice and Text Chat for Gamers | srcpackage
| gstreamer-plugins-bad | GStreamer Streaming-Media Framework Pl-> | srcpackage
| lsb | LSB Fake Package | srcpackage
| openSUSE-Addon-NonOss-release | openSUSE Leap 15.3 NonOSS Addon | srcpackage
| openSUSE-release | openSUSE Leap 15.3 | srcpackage
| opera | Proprietary web browser | srcpackage
| product-builder | SUSE Product Builder | srcpackage
| rpm-repos-openSUSE | openSUSE package repositories | srcpackage
| rpmlint-mini | RPM file correctness checker | srcpackage
| steam | Installer for Valve's digital software-> | srcpackage
| virtualbox | VirtualBox is an Emulator | srcpackage
| virtualbox-kmp | Kernel modules for VirtualBox | srcpackage
| xfce4-branding-openSUSE | openSUSE Branding of the Xfce Desktop -> | srcpackage
| xfce4-panel | Panel for the Xfce Desktop Environment | srcpackage
| xfce4-settings | Tools for Managing Xfce Settings | srcpackage
也可以所用下面的命令将所有的源码包下载到本地
SUSE15:~ # zypper source-download
默认下载到/var/cache/zypper/source-download/
,该命令的额外选项:
--directory
:在下载时修改目录。--status
:只显示丢失或无关的包,不下载或删除任何内容--delete
:删除无关包--no-delete
:禁用删除
3.6 从关闭的仓库安装包
正常来讲,只能从启用的仓库安装软件。--plus-content
选项可以指定需要使用的仓库,在当前命令中临时启用,完成后会禁用。
例如:临时开启debug仓库,并安装-debuginfo
包,使用下面的选项:
SUSE15:~ # zypper --plus-content debug install "debuginfo(build-id)=eb844a5c20c70a59fc693cd1061f851fb7d046f4"
由于缺少debuginfo包,gdb会报告build-id字符串。
4 使用zypper升级软件
有三种方式升级软件:安装补丁,安装新版本的软件或升级整个系统。
4.1 安装所有补丁
很粗犷的做法就是直接安装补丁
SUSE15:~ # zypper patch
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following 2 NEW patches are going to be installed:
openSUSE-2021-820 openSUSE-2021-863
The following 2 packages are going to be upgraded:
openSUSE-release openSUSE-release-dvd
The following product is going to be reinstalled:
"openSUSE Leap 15.3"
2 packages to upgrade.
Overall download size: 694.9 KiB. Already cached: 0 B. After the operation, additional
895.0 B will be used.
Note: Package manager restart required. (Run this command once again after the update
stack got updated)
Continue? [y/n/v/...? shows all options] (y): y
Retrieving package openSUSE-release-dvd-15.3-lp153.146.1.x86_64
(1/2), 8.1 KiB ( 66 B unpacked)
Retrieving delta: ./x86_64/openSUSE-release-dvd-15.3-lp153.138.1_lp153.146.1.x86_64.drpm, 3.8 KiB
Retrieving: openSUSE-release-dvd-15.3-lp153.138.1_lp153.146.1.x86_64.drpm .....................................[done]
Applying delta: ./openSUSE-release-dvd-15.3-lp153.138.1_lp153.146.1.x86_64.drpm ...............................[done]
Retrieving package openSUSE-release-15.3-lp153.146.1.x86_64 (2/2), 686.8 KiB (231.6 KiB unpacked)
Retrieving: openSUSE-release-15.3-lp153.146.1.x86_64.rpm .........................................[done (89.6 KiB/s)]
Checking for file conflicts: ..................................................................................[done