从上游存储库查询软件包信息

本指南介绍如何从 Clear Linux* OS 上游存储库查询软件包信息。本指南面向开发人员和高级用户。

概述

在 Clear Linux* OS 中,swupd 工具用于管理软件依赖项以及安装捆绑包而非软件包。虽然捆绑包是一个或多个软件包的集合,但 Clear Linux OS 在客户端上无法处理软件包。但是,在上游/工厂端,Clear Linux OS 可以使用名为混合的过程来处理软件包。

当前,swupd 不会报告已安装的软件包,也不会提供软件包版本信息或返回其他软件包详细信息。本指南介绍了用于使用 DNF 命令从 Clear Linux OS 上游存储库检索软件包信息的方法。

必备条件

本指南假定您已在主机系统中安装了 Clear Linux OS。有关在裸机系统中安装 Clear Linux OS 的详细说明,请参见 裸机安装指南

安装任何新软件包之前,请使用以下命令更新 Clear Linux OS:

sudo swupd update

配置 DNF

  1. 使用以下命令安装 DNF 捆绑包:

    sudo swupd bundle-add dnf
    
  2. 使用以下命令创建 dnf.conf 文件:

    sudo mkdir -p /etc/dnf
    sudo curl -L https://github.com/clearlinux/common/raw/master/conf/dnf.conf --output /etc/dnf/dnf.conf
    
  3. 编辑 /etc/dnf/dnf.conf 文件,并为以下示例中的第 3 行和第 9 行中显示的二进制 RPM 和源 RPM 设置 baseurl 变量。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    [clear]
    name=Clear
    baseurl=https://cdn.download.clearlinux.org/releases/$releasever/clear/x86_64/os/
    enabled=1
    gpgcheck=0
    [clear-source]
    name=Clear sources
    failovermethod=priority
    baseurl=https://cdn.download.clearlinux.org/releases/$releasever/clear/source/SRPMS/
    enabled=1
    gpgcheck=0
    
  4. 使用以下命令初始化 RPM 数据库:

    sudo rpm --initdb
    

DNF 命令用法示例

列出当前发行版中的所有二进制 RPM 和源 RPM

命令:

dnf repoquery --releasever=current

示例输出:

Clear                                    5.1 MB/s |  13 MB     00:02
Clear sources                            1.8 MB/s | 1.7 MB     00:00
AVB-AudioModules-0:4.1.0-1.src
AVB-AudioModules-0:4.1.0-1.x86_64
AVB-AudioModules-data-0:4.1.0-1.x86_64
AVB-AudioModules-dev-0:4.1.0-1.x86_64
AVB-AudioModules-lib-0:4.1.0-1.x86_64
AVB-AudioModules-license-0:4.1.0-1.x86_64
AVBStreamHandler-0:1.1.0-21.src
AVBStreamHandler-0:1.1.0-21.x86_64
AVBStreamHandler-abi-0:1.1.0-21.x86_64
AVBStreamHandler-bin-0:1.1.0-21.x86_64
AVBStreamHandler-data-0:1.1.0-21.x86_64
AVBStreamHandler-dev-0:1.1.0-21.x86_64
AVBStreamHandler-lib-0:1.1.0-21.x86_64
AVBStreamHandler-license-0:1.1.0-21.x86_64
...
<trimmed>

显示当前发行版中的软件包的版本信息

此示例查询 zstd 软件包的版本信息。

命令:

dnf repoquery --releasever=current zstd

示例输出:

Last metadata expiration check: 0:02:30 ago on Tue 16 Jul 2019 03:03:34 PM PDT.
zstd-0:1.4.0-46.src
zstd-0:1.4.0-46.x86_64

显示特定发行版中的软件包的版本信息

此示例查询发行版 21000 中的 zstd 软件包的版本信息。

命令:

dnf repoquery --releasever=21000 zstd

示例输出:

Clear
2.7 MB/s | 3.9 MB     00:01
Clear sources
628 kB/s | 559 kB     00:00
zstd-0:1.3.3-20.src
zstd-0:1.3.3-20.x86_64

仅显示特定发行版中的软件包的版本和发行信息

此示例查询发行版 15000 中的 zstd 软件包的版本和发行信息。

命令:

dnf repoquery --releasever=15000 --qf="%{VERSION}\n%{RELEASE}" zstd

示例输出:

Clear
3.4 MB/s | 3.9 MB     00:01
Clear sources
345 kB/s | 528 kB     00:01
1.1.4
5

显示指定二进制文件的二进制包

此示例将返回包含 /usr/bin/zip 二进制文件的二进制包。

命令:

dnf repoquery --releasever=current --whatprovides /usr/bin/zip

示例输出:

Last metadata expiration check: 0:04:47 ago on Tue 16 Jul 2019 03:03:34 PM PDT.
zip-bin-0:3.0-23.x86_64

显示指定二进制文件的源包

此示例将返回包含 /usr/bin/zip 二进制文件的源包。

命令:

dnf repoquery --releasever=current --whatprovides /usr/bin/zip --srpm

示例输出:

Last metadata expiration check: 0:05:50 ago on Tue 16 Jul 2019 03:03:34 PM PDT.
zip-0:3.0-23.src