如何使用 zypper 从列表安装软件包?

如何使用 zypper 从列表安装软件包?

结束状态。我想重新格式化我的 / 分区,重新安装 opensuse tumbleweed,并安装与现在相同的软件包。

问题。我做了一个看似糟糕的选择,将根文件系统格式化为 btrfs。之前我拥有的 20 GB 空间对于它来说已经足够了,比如说 ext3,但是我无法跟上 snapper 的快照管理,因为 tumbleweed 有大量的更新。

部分成功。我可以用 导出我的存储库列表sudo zypper lr -u --export repo.list,然后用 将其添加回全新安装。我可以用或sudo zypper addrepo repo.list导出已安装软件包的列表。sudo zypper search --installed-only > installed.packagesrpm -qa | sort

但是我不知道如何从列表中安装软件包,或者生成在发行版安装时可供 opensuse 使用的软件包列表。

编辑:自动调压器可能是可行的方法,但比我想要的更重要。

答案1

用于--queryformat列出不带版本的软件包名称

rpm -qa --qf "%{NAME}\n" > installed_pkgs.txt

要安装,请将文件内容传输到xargs

cat installed_pkgs.txt | xargs sudo zypper install

答案2

它可能很慢,但是您可以使用这个 bash 脚本:

IFS=$'\n'

for package in `cat installed.packages`; do
    zypper install $package
done

答案3

我使用导出的列表(来自rpm -qa | cut ...)作为特定配置的快照,然后使用以下命令复制它,从而获得了良好的结果:

# cat packages.txt | xargs -I {} zypper -n in -l {}

但您需要确保包列表中没有多余的空格。

思考更强大的解决方案可能是:

# xargs -a packages.txt -I {} sudo zypper -n in -l {}

因为我认为它不会有杂散空间的问题,但还没有测试过。

sudo不用的话一定要用su

我没有看到其他解决方案提到-我 {}...{}要求这项工作毫无阻碍。

唯一的问题是从我导入的 repos 列表中自动导入和接受 GPG 密钥(步骤 1,在安装/更新软件之前,要确保带有软件的 repo 确实可用......)不确定为什么它不能像广告中说的那样工作。

相关内容