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,因為它滿足指定的第二個包版本。
更好的
起初我在這裡嘗試了 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。