![如何使用 zypper 在给定日期之前安装软件包?](https://linux22.com/image/66837/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20zypper%20%E5%9C%A8%E7%BB%99%E5%AE%9A%E6%97%A5%E6%9C%9F%E4%B9%8B%E5%89%8D%E5%AE%89%E8%A3%85%E8%BD%AF%E4%BB%B6%E5%8C%85%EF%BC%9F.png)
我们在手册页中找不到它的参数,但也许有一个解决方案:
问题:我们如何在给定日期之前安装软件包?因此,不是软件包的最新版本,而是在给定日期之前发布的旧版本。
手动一一选择它们太慢了。
答案1
我怀疑您是否能够在给定日期之前安装。我尝试向后设置系统日期,但这不起作用。也没有可以传递给 rpm 的选项,而 rpm 正是 zypper 在下面使用的。
因此,我能想到的唯一方法是为 SuSe 设置一个本地 RPM 存储库,并在某个日期之前用这些包填充该存储库并使用它。找出特定日期有哪些可用的内容Archive.org可能有用。
看这了解如何设置本地 OpenSuSE 存储库。
答案2
zypper search -s --match-substrings
可能是您可以拥有的最佳搜索选项。但是,它并不真正在 RPM 中搜索包构建日期。我认为您尝试做的是拉取/安装在特定日期之前发布的所有更新。
我所做的是手动拉取包,用存储库托管它们。我的存储库位于 CentOS 主机上。它是用 createrepo 创建的。在 zypper .repo 文件中,指定“type=yum”。
答案3
我假设您想在最新版本之前安装特定版本的软件包。以 MozillaFirefox 为例,当使用以下命令搜索 MozillaFirefox 软件包时:
zypper se -t package -s MozillaFirefox
输出将为(i586 软件包和其他不相关的软件包已被截断):
v | MozillaFirefox | 软件包 | 38.0.1-30.1 | x86_64 | openSUSE-13.2-Update
v | MozillaFirefox | 软件包 | 37.0.2-27.1 | x86_64 | openSUSE-13.2-Update
v | MozillaFirefox | 软件包 | 37.0.1-23.1 | x86_64 | openSUSE-13.2-Update
v | MozillaFirefox | 软件包 | 36.0.4-18.1 | x86_64 | openSUSE-13.2-Update
v | MozillaFirefox | 软件包 | 36.0-14.2 | x86_64 | openSUSE-13.2-Update
v | MozillaFirefox | 软件包 | 35.0-9.1 | x86_64 | openSUSE-13.2-Update
v | MozillaFirefox |软件包 | 34.0.5-5.4 | x86_64 | openSUSE-13.2-Update
i | MozillaFirefox | 软件包 | 33.0-2.1 | x86_64 | openSUSE-13.2-Oss
i | MozillaFirefox | 软件包 | 33.0-2.1 | x86_64 | openSU
我们可以看到,该系统上已经安装了MozillaFirefox 33.0-2.1版本,最新版本为38.0.1-30.1。
如果您不想安装最新版本,而只想安装 36.0 版之前的版本,那么您所要做的就是调用zypper in
do it for you。
语法是:
zypper in 'Mozillafirefox.x86_64<36.0
您还可以安装 i586 架构包
zypper in 'Mozillafirefox.i586<36.0
或者您可以让 zypper 为您选择包架构
zypper in 'Mozillafirefox<36.0
然后 zypper 将安装与版本 36.0 最接近的版本 35.0-9.1。
zypper 还提供对“>、<=、>= 等”的支持;你可以用 看到它zypper help in
。
希望这就是您正在寻找的内容并希望对您有所帮助。