RPM索引在Artifactory中是如何工作

    技术2023-07-18  93

    RPM

    RPM是用于保存和管理RPM软件包的仓库。我们在RHEL和Centos系统上常用的Yum安装就是安装的RPM软件包,而Yum的源就是一个RPM软件包的仓库。JFrog Artifactory是成熟的RPM和YUM存储库管理器。JFrog的官方Wiki页面提供有关Artifactory RPM存储库的详细信息。

    Artifactory索引RPM包的过程

    Artifactory 5.5.0及之后版本,针对YUM元数据计算处理进行了重大的改进,加入了并发和增量计算的能力。所以新的索引过程:

    性能上优于之前自动触发的异步计算同时不需要在单独开发触发元数据计算的插件可以监控并且准确地知道新的元数据计算的状态

    如下图:创建RPM仓库时选择“Auto Calculate RPM Metadata”,Artifactory将会拦截Copy或Move的操作,并且自动触发计算步骤。保证在及时提供给用户最新的元数据用来获取软件包的版本

     

    元数据的两种方式

    异步:

    正常情况下,如果启动了以上的选项,那么当你使用REAT API或者UI部署包的时候,异步计算将会拦截文件操作,并且将索引添加操作加入到Artifactory内部的队列中进行计算。

    同步:

    只有关闭“Auto Calculate RPM Metadata”时才可以使用,此时您可以手动触发元数据计算。

    例:

    有一个CI任务可以将很多版本上传到一个大型仓库里,可以在流水线中增加一个额外的构建步骤。以下为仓库名为“rpm-release-local”,通过Rest API请求手动触发元数据计算

    curl -uadmin:password -XPOST "localhost:8081/artifactory/api/yum/rpm-release-local?async=0" -i -Lvv

     

    * Connected to localhost (::1) port 8081 (#0)

    * Server auth using Basic with user 'admin'

    > POST /artifactory/api/yum/rpm-release-local?async=0 HTTP/1.1

    > Host: localhost:8081

    > Authorization: Basic YWRtaW46cGFzc3dvcmQ=

    > User-Agent: curl/7.54.0

    > Accept: */*

     

    < HTTP/1.1 200 OK

    < Server: Artifactory/6.3.2

    < X-Artifactory-Id: a9116dfeb1f6dac4:449dde33:1658a295e45:-8000

    < Content-Type: text/plain

    < Transfer-Encoding: chunked

    < Date: Sun, 02 Sep 2018 12:19:56 GMT

    Artifactory RPM系统属性整选项(5.5.0及以上版本)

    artifactory.rpm.metadata.calculation.workers(默认值为8)

    –本地RPM元数据计算线程数。

    artifactory.rpm.metadata.history.cycles.keep(默认值3)

    –保留元数据记录,包括已经计算完成的计算记录

    yum.virtual.metadata.calculation.workers(默认5)

    -虚拟库计算的线程数

    日志

    RPM日志记录org.artifactory.addon.yum.YumAddonImpl:

     

    INFO级别:Starting to calculate Rpm metadata for

    您可以在Artifactory中的以下软件包上启用调试/跟踪级别日志记录(修改$ ARTIFACTORY_HOME / etc / logback.xml)以跟踪/调试您的计算:

    自动计算(异步):

    DEBUG级别:{path}的异步Rpm计算

    触发(同步):

    DEBUG级别:{path}的同步Rpm计算

    虚拟RPM存储库计算:

    为org.artifactory.addon.yum.virtual.index启用每个日志级别  :

    DBUG级别:为{path}启动虚拟yum元数据计算

    整个包逻辑过程的跟踪级别:

    为org.jfrog.metadata.indexer.RpmRepoIndexer启用每个日志级别  :

    TRACE级别:准备索引RPM存储库元数据

    DEBUG级别:完成对RPM存储库元数据的索引编制

    Processed: 0.015, SQL: 10