AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 961590
Accepted
nolandda
nolandda
Asked: 2019-04-05 13:12:54 +0800 CST2019-04-05 13:12:54 +0800 CST 2019-04-05 13:12:54 +0800 CST

如何提取 rpm 前导码

  • 772

我正在使用基于非 redhat 的机器,我需要从机器上传递的一些 .rpm 中提取Version: xyz和Release: abc信息。

通常一个人会这样做:

rpm -qip ./Foo.x.y.z.rpm | grep Version | awk ...

但这不是基于 redhat 的机器,所以我没有rpm,我也不想安装第二个包管理器。

我想如果我这样做:

rpm2cpio ./Foo.x.y.z.rpm | cpio -idmv

然后,当提取 cpio 时,我会找到一些名为.preamble的文件或其中包含数据的文件。但没有运气。有人知道另一种方法吗?

linux
  • 2 2 个回答
  • 423 Views

2 个回答

  • Voted
  1. Best Answer
    John Mahowald
    2019-04-05T14:34:28+08:002019-04-05T14:34:28+08:00

    rpm2cpio 用例是提取没有元数据的文件,这与您想要的相反。它像其他工具一样需要链接到 librpm。即使是探索 rpm 文件的 Midnight Commander 也使用 rpm 二进制文件。

    在带有 yum 的系统上,使用 createrepo 从这些 rpm 创建存储库。XML 和 sqlite 将与元数据一起生成。虽然比 rpm 二进制格式更容易解析,但如果您不使用 yum,则必须自己编写查询。保留 repodata,这样你就有一个功能性的 yum repo。

    再上一层抽象,系统生命周期工具包括内容管理。即 Katello 或 Red Hat Satellite。与 shell 脚本相比有点重量级,但您可以通过 API 获取主机和它们订阅的包。

    • 4
  2. Michael Hampton
    2019-04-05T17:36:22+08:002019-04-05T17:36:22+08:00

    继续安装rpm。这是最简单的事情。您的发行版几乎可以肯定有它可供您使用。

    现在您可以使用 RPM 查询格式来提取您想要的信息。

    例如:

    file=/path/to/filename.rpm
    
    name=$(rpm --queryformat "%{name}" -qp $file)
    version=$(rpm --queryformat "%{version}" -qp $file)
    release=$(rpm --queryformat "%{release}" -qp $file)
    
    echo "This RPM named $name has version $version release $release"
    
    • 2

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve