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
    • 最新
    • 标签
主页 / unix / 问题 / 784367
Accepted
giomanda
giomanda
Asked: 2024-10-02 13:35:08 +0800 CST2024-10-02 13:35:08 +0800 CST 2024-10-02 13:35:08 +0800 CST

帮助理解 spec 文件“提供”语法

  • 772

我对 rpm 构建还很陌生,我一直试图理解 spec 文件中“Provides”的语法,但没有成功。我有以下用于构建 clamav rpm 的 spec 文件片段:

Summary:    End-user tools for the Clam Antivirus scanner
Name:       clamav
Version:    0.103.12
Release:    1%{?dist}

%package data
Summary:    Virus signature data for the Clam Antivirus scanner
Requires:   ns-clamav-filesystem = %{version}-%{release}
Provides:   data(clamav) = full
Provides:   clamav-db = %{version}-%{release}
Obsoletes:  clamav-db < %{version}-%{release}
BuildArch:  noarch

%package update
Summary:    Auto-updater for the Clam Antivirus scanner data-files
Requires:   ns-clamav-filesystem = %{version}-%{release}
Requires:   ns-clamav-lib        = %{version}-%{release}
Provides:   data(clamav) = empty
Provides:   clamav-data-empty = %{version}-%{release}
Obsoletes:  clamav-data-empty < %{version}-%{release}

%package -n ns-clamd
Summary: The Clam AntiVirus Daemon
Requires:   data(clamav)
Requires:   ns-clamav-filesystem = %{version}-%{release}
Requires:   ns-clamav-lib        = %{version}-%{release}
Requires:   coreutils
Requires(pre):  shadow-utils

我知道这里的“提供:”表示什么,并且提供旁边的括号表示模块的安装(针对该包)。在我的例子中,%package data(clamav-data)在安装时,它还会向 rpm/yum 声明它提供clamav-db和data(clamav)。

我data(clamav)不明白。它与默认包名前缀有什么关系clamav-data?不应该是吗clamav(data)?

我如何data(clamav在 yum/rpm 中搜索此 )?我可以在 rpm 信息中看到这一点,但是当我安装它时,我如何像在其他软件包上一样搜索它?例如yum info <package>

    #   rpm -q --requires RPMS/x86_64/ns-clamd-0.103.12-1.el8.x86_64.rpm
   /bin/sh 
   /bin/sh 
   /bin/sh 
   /bin/sh
   coreutils
   data(clamav)

   #   rpm -q RPMS/noarch/ns-clamav-data-0.103.12-1.el8.noarch.rpm  --provides
   clamav-db = 0.103.12-1.el8
   config(ns-clamav-data) = 0.103.12-1.el8
   data(clamav) = full
   ns-clamav-data = 0.103.12-1.el8
rpmbuild
  • 1 1 个回答
  • 19 Views

1 个回答

  • Voted
  1. Best Answer
    larsks
    2024-10-02T21:56:34+08:002024-10-02T21:56:34+08:00

    我不明白的是 data(clamav)。它与 clamav-data 的默认包名前缀有何关系?这不应该是 clamav(data) 吗?

    虚拟提供不一定与包名称绑定。例如,查看打包的 Python 模块,我们会看到:

    $ rpm -q --provides python3-requests
    [...]
    python3dist(requests) = 2.31
    

    或者对于 Perl 模块类似:

    $ rpm -q --provides perl-Net-DNS
    perl(Net::DNS) = 1.43
    perl(Net::DNS::Domain) = 1913
    perl(Net::DNS::DomainName) = 1898
    [...]
    

    在这种情况下,我认为没有人遵循特定的“应该”;它只是由多个包提供的虚拟依赖关系,这意味着另一个包可以声明对data(clamav)其中任何一个包的依赖并满足该要求。

    我如何在 yum/rpm 中搜索此数据 (clamav)?我可以在 rpm 信息中看到这一点,但是当我安装它时,我如何像在其他软件包上一样搜索它?例如 yum info

    您可以像搜索任何其他依赖项一样搜索您的data(clamav)提供程序。例如,要列出存储库中提供此资源的可用包:

    yum repoquery --whatprovides 'data(clamav)'
    

    我的系统上返回:

    clamav-data-0:1.0.5-3.fc40.noarch
    clamav-data-0:1.0.7-1.fc40.noarch
    clamav-freshclam-0:1.0.5-3.fc40.i686
    clamav-freshclam-0:1.0.5-3.fc40.x86_64
    clamav-freshclam-0:1.0.7-1.fc40.i686
    clamav-freshclam-0:1.0.7-1.fc40.x86_64
    

    或者如果你想搜索本地安装的 rpm:

    rpm -q --whatprovides 'data(clamav)'
    

    Fedora 打包指南包含有关使用的几条说明Provides:,但没有一个明确涵盖您所询问的情况。

    • 1

相关问题

  • rpmbuild 失败 | 缺少依赖项(但是安装了缺少的依赖项)

  • Fedora 29 Copr 上没有 Python

  • Fedora rpm vs Redhat rpm?

  • 使用 rpmbuild 安装 RPM 期间的自定义选项

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve