✳️ 升级指定包:
sudo zypper up python3-pysmi
#
如果包已是最新,它会提示Nothing to do
,否则就会升级它。
💥 强制重新安装(即使已经装了)
sudo zypper in --force python3-pysmi
若在使用zypper进行升级时报错:旧版本的某个路径和新版本的某个文件重名,新版本中的某个文件与旧版本中存在的“目录”冲突,系统不能把“文件”覆盖成“目录”,或反之,这种情况该怎么办?
解决方案
💥 使用 zypper
搭配 --replacefiles
参数来升级(或强制重装)某个包:
sudo zypper in --force --replacefiles python3-pysmi
命令说明:
参数 | 含义 |
---|---|
in | install(安装包,如果已安装则更新) |
-n | 非交互模式(non-interactive),zypper 不会等待用户输入,例如 [y/n] 选择会自动接受默认答案(通常是“是”) |
-l | 表示 同时升级补丁(patch)包(尤其是来自更新通道的) |
up | update 的缩写,表示升级系统中已安装的包到最新版本 |
dup | dist-upgrade ,执行发行版级别的升级(可能替换软件源供应商) |
--allow-vendor-change | 允许更换软件包的供应商(如从 SUSE 转到某个第三方) |
--force | 即使已安装,也重新安装一遍 |
--force-resolution | 强制自动解决依赖问题,比如删除阻碍的包、降级某些依赖、第三方源(vendor change)需要调整依赖等,即使这种解决方式可能会引起其他包被删除或替换。 |
--replacefiles | 如果文件与已有路径冲突(比如文件 VS 目录),强制替换 |
🙋♂️ 使用zypper 升级包时如果不加 --force
会怎样?
-
如果你已经装了这个包,且版本一样:zypper 会跳过安装,不会覆盖冲突文件;
-
即使加了
--replacefiles
,也只有在 zypper 执行安装操作时才生效; -
所以如果不加
--force
,就有可能什么都不做,冲突依然保留。