Package-Management

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

  • March 5, 2020

我正在編寫一個腳本來安裝一些軟體包並進行一些配置工作。我希望腳本安裝包的特定主要版本,但我不在乎它是包的哪個次要版本。

更重要的是,我希望它安裝包的最新 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,因為它滿足指定的第二個包版本。

更好的

起初我在這裡嘗試了 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:]'`

最好的

但後來我想出了一個更好的解決方案。zypper addlock我們可以使用版本約束排除沒有黑客攻擊的版本,而不是像這樣針對特定版本的黑客攻擊。

所以,OP想要的實際上是這樣的:

zypper addlock "mypackage < 2"
zypper addlock "mypackage >= 3"

這些將阻止 mypackage 安裝版本 <2 或 >=3。

引用自:https://unix.stackexchange.com/questions/208302