zypper 安装特定的主要版本而不指定次要版本

Tom*_*ers 6 opensuse package-management zypper

我正在编写一个脚本来安装一些软件包并进行一些配置工作。我希望脚本安装包的特定主要版本,但我不在乎它是包的哪个次要版本。

更重要的是,我希望它安装包的最新 2.yz 版本,而不是 1.yz 或 3.yz(或任何其他主要版本号)。

我试过(没有成功)

  • zypper install 'mypackage=2'
  • zypper install 'mypackage>1<3'
  • zypper install 'mypackage>1' 'mypackage<3'
  • zypper install 'mypackage>=2.0.0' 'mypackage<3.0.0'

最后一个看起来很有希望,因为 zypper 抱怨道:

在包名称中找不到“mypackage>=2.0.0”。尝试能力。未找到“mypackage >= 2.0.0”的提供者。

但是,在该消息之后,它仍然继续安装 mypackage-1.5.0,因为它满足指定的第二个 package-edition。

Art*_*kii 2

更好的

起初我在这里尝试了 SailorCire 的答案并提出了一个改进版本:

zypper search -t package -x -s PACKAGE | grep " MIN_NUM" | cut -d '|' -f 4 | tr -d '[:space:]zypper install,然后您可以通过执行zypper install PACKAGE上面的反引号包围命令来将其输入。

例如,这将安装php7-pear 1.*

zypper -n in --details php7-pear-`zypper search -t package -x -s php7-pear | grep " 1." | cut -d '|' -f 4 | tr -d '[:space:]'`
Run Code Online (Sandbox Code Playgroud)

最好的

但后来我想出了一个更好的解决方案。我们可以排除没有使用版本约束的 hack 的版本,而不是像这样针对特定版本进行 hack zypper addlock

所以,OP想要的其实是这样的:

zypper addlock "mypackage < 2"
zypper addlock "mypackage >= 3"
Run Code Online (Sandbox Code Playgroud)

这些将阻止版本 <2 或 >=3 的 mypackage 安装。