【问题标题】:How to loop through the names of installed packages in SLES如何遍历 SLES 中已安装包的名称
【发布时间】:2018-06-26 03:07:49
【问题描述】:

我想将我在 SLES SP1 系统上安装的软件包移植到另一个没有 Internet 连接的 SLES 系统。所以我有了使用的想法

rpmrebuild packagename

将所有已安装的软件包打包回 rpms,然后将它们复制到另一台机器。

所以我正在寻找一种方法来遍历所有已安装包的名称。

【问题讨论】:

  • 发布您的代码是获得帮助的开始。现在可能的答案可能过于笼统了。
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。

标签: linux shell rpm suse sles


【解决方案1】:

如果我正确理解了您的问题,您始终可以使用以下 shell 脚本循环浏览任何具有 RPM 包管理器的系统上的已安装包列表 -

#!/bin/bash 

while read -r package; do echo "This package is $package"; done < <(rpm -qa)

输出 -

This package is ethtool-3.15-2.27.amzn1.x86_64
This package is libXau-1.0.6-4.9.amzn1.x86_64
This package is libXcomposite-0.4.3-4.6.amzn1.x86_64
This package is libblkid-2.23.2-33.28.amzn1.x86_64
....................................................

【讨论】:

  • 为什么要写入文件? while read -r package; do ...; done &lt; &lt;(rpm -qa) 避免了开销,以及以后清理的需要。
  • (既然您已经将每个值分配给package,为什么还要分配给name?)
  • 另外,rm -rf packages.txt 不会增加任何价值,因为&gt; packages.txt 会按原样截断任何预先存在的内容。
  • 是的@Charles,我错过了很多东西。更新了答案。
猜你喜欢
  • 2022-12-22
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-16
  • 2015-03-01
  • 1970-01-01
相关资源
最近更新 更多