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。
起初我在这里尝试了 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 安装。
归档时间: |
|
查看次数: |
1281 次 |
最近记录: |