使用Artifactory 6。x ?
JFrog Artifactoryx用户指南
有问题吗?想要报告问题?联系JFrog技术支持
概述
Artifactory是一个成熟的RPM存储库。因此,它使:
- 托管在Artifactory本地存储库中的RPM的RPM元数据计算。
- 直接从Artifactory向YUM客户端提供rpm。
- 来自Artifactory web UI的详细RPM元数据视图。
- 提供YUM客户端可以用来对rpm进行身份验证的GPG签名。
对YUM也有效
本页上的说明可以互换地用于RPM存储库和YUM存储库。
托管RPM的元数据
Artifactory生成的RPM元数据与基于Red hat的Linux命令的基本模式输出相同createrepo
。
一个名为repodata
在本地存储库中的配置位置创建,其中包含以下文件:
文件 | 描述 |
---|---|
primary.xml.gz |
包含描述每个RPM存档的主要元数据的XML文件。 |
filelists.xml.gz |
包含一个XML文件,描述每个RPM存档中包含的所有文件。 |
other.xml.gz |
包含一个XML文件,描述有关每个RPM存档的各种信息。 |
repomd.xml |
包含有关所有其他元数据文件的信息。 |
YUM支持是平台独立的!
Artifactory的元数据的计算基于RPM纯Java。
它的存在并不依赖于createrepo
二进制文件,或者在运行Artifactory的主机上运行外部进程。
触发RPM元数据更新
启用后,元数据计算将由某些操作自动触发,也可以由其他操作手动调用。无论采用哪种方式,生成的元数据都将提供给YUM客户机。
自动
RPM元数据自动计算:
- 部署/删除/复制/移动RPM文件时。
- 在执行内容导入(系统和存储库导入)时。
手册
您可以手动调用RPM元数据计算:
- 通过在Tree Browser中选择本地存储库并单击重新计算指数在行动菜单。
- 通过Artifactoryrest api。
元数据计算清除由于手动部署或导入而已经存在的RPM元数据。这包括作为SQLite数据库文件存储的RPM元数据。
索引文件列表
的filelists.xml
RPM存储库的元数据文件包含存储库中托管的每个包中的所有文件的列表。当存储库包含许多包时,由于与YUM客户端交互而重新索引该文件可能会占用大量资源,从而导致性能下降。因此,从5.4版本开始,当创建RPM存储库时,该文件的重新索引将被禁用。启用索引filelists.xml
,设置启用文件列表索引复选框。
请注意filelists.xml
如果它聚合的任何存储库没有启用文件列表,则虚拟存储库的元数据文件可能不完整(即它可能没有实际列出它聚合的所有文件)。的索引filelists.xml
文件被禁用,则无法使用YUM客户端搜索文件以确定哪个包将查询的文件写入文件系统。
配置
要创建RPM本地存储库,请选择RPM随着包类型创建存储库时。
局部存储库
如果需要在本地RPM存储库中自动计算RPM元数据,请执行RPM的设置部分基本设置界面,设置自动计算RPM元数据。
场 | 描述 |
---|---|
RPM元数据文件夹深度 |
通知Artifactory在哪个目录级别下搜索rpm并保存 默认情况下,此值为0,并引用存储库的根文件夹。在这种情况下,Artifactory在整个存储库中搜索rpm并保存 在为存储库生成元数据时,根据名称、版本和体系结构将其构件分开的情况下,使用不同的深度是有用的。这将允许您在同一个Artifactory RPM存储库下创建多个RPM存储库。 例如: REPO_ROOT/$ARTIFACT_NAME/$ARTIFACT_VERSION/$ARCHITECTURE/FILE_NAME - or - rpm-local/foo/1.0/x64/foo-1.0-x64.rpm 当更改现有存储库的配置深度时,在旧深度中索引的包可能需要重新索引或移动到新深度,以便在新配置的深度中可用,并且YUM客户端可能需要更改其配置以指向新深度。深度。 |
自动计算RPM元数据 |
设置后,RPM元数据计算将按照描述的操作自动触发以上。 |
启用文件列表索引 |
设置后,RPM元数据计算还将包括索引filelists.xml 元数据文件。 |
RPM组文件名 |
的逗号分隔列表YUM组文件与您的RPM包相关联。 请注意,在每个级别(深度)上 |
远程存储库
人工远程存储库支持开箱即用的rpm,并且不需要任何特殊配置就可以在远程存储库中使用rpm。
你所需要做的就是将您的YUM客户机指向远程存储库,然后您就可以使用YUM和Artifactory了。
要定义一个远程存储库来代理RPM远程存储库,请遵循以下步骤:
- 在管理模块下存储库|远程,单击“新建”,创建新的远程存储库。
- 设置库的关键中指定远程存储库的URLURL字段,如下所示。
- 点击“保存并完成”
- 回到工件模块,在树浏览器,选择存储库。请注意,在树浏览器中,存储库名称被附加了“-cache”。
- 点击帮我介绍复制的值baseurl标签。
- 接下来,创建
/etc/yum.repos.d /
targetCentos.repo
文件和p将以下配置放入其中:
[targetCentos] name=targetCentos baseurl=http://localhost:8081/artifactory/targetCentos/ enabled=1 gpgcheck=0
虚拟存储库
Artifactory中定义的虚拟存储库聚合来自本地和远程存储库的包。
这允许您从为虚拟存储库定义的单个URL访问本地托管的RPM包和远程代理的RPM存储库。
要定义虚拟YUM存储库,请创建虚拟存储库,设置包类型是RPM,并选择要包含在目录中的底层本地和远程RPM库基本设置选项卡。
要允许将包部署到此存储库,请设置默认部署存储库。
签名RPM元数据
Artifactory支持使用GPG密钥对RPM元数据签名,以便YUM客户端进行身份验证。
要生成一对GPG密钥并上传到Artifactory,请参考GPG签署。
使用Yum安装RPM包
在配置rpm-local
您需要通过执行以下步骤来配置本地机器,以便从它安装软件包:
编辑
artifactory.repo
具有根权限的文件Sudo vi /etc/yum.repo .d/artifactory.repo
粘贴下面的配置到
artifactory.repo
文件:[Artifactory] name=Artifactory baseurl=http://localhost:8081/artifactory/rpm-local/ enabled=1 gpgcheck=0
现在,每个RPM文件都部署到目录的根目录rpm-local
可以使用以下方式安装存储库:
Yum install
使用Yum部署RPM包
一旦您配置了本地机器来安装来自RPM本地存储库的RPM包,您还可以将RPM包部署到相同的存储库使用UI或者使用REST API。
通过REST API,您还可以选择按校验和部署或从归档部署。
例如,将一个RPM包部署到一个名为rpm-local你可以用下面的句子:
curl -u: -XPUT http://localhost:8080/artifactory/rpm-local/ -T
其中PATH_TO_METADATA_ROOT指定从存储库根到部署文件夹的路径。
百胜餐饮集团
YUM组是一组为特定目的收集在一起的RPM包。例如,您可能会收集一组“开发工具”作为YUM组。
通过添加组XML文件来指定组与其中包含的RPM包相同的目录。组文件包含组的元数据,包括指向组成组的所有RPM文件的指针。
人工支持连接YUM组文件到YUM计算基本上是模仿createrepo - g命令。
还可以通过以下命令创建组文件:
sudo yum-groups-manager -n "My Group"——id=mygroup——save=mygroups.xml——必选yum glibc rpm
附加YUM集团
将YUM组元数据附加到本地存储库的过程很简单:
- 以YUM使用的组格式创建XML文件。您可以使用任何文本编辑器手动输入它,也可以运行
yum-groups-manager
命令从yum-utils
。 - 将创建的组文件部署到
repodata
文件夹中。
Artifactory将自动执行以下步骤:- 创建相应的
. gz
文件,并将其部署到已部署的组XML文件旁边。 - 在本地存储库上调用YUM计算。
- 附加组信息(XML和
. gz
文件)至repomd.xml
文件。
- 创建相应的
- 列表中列出了组文件名YUM集团文件名称字段,位于存储库配置的Basic选项卡下。这告诉Artifactory应该附加哪些文件作为存储库组信息。
YUM组命令
下表列出了一些有用的YUM组命令:
命令 | 描述 |
---|---|
|
安装YUM组。该组必须部署到YUM本地存储库的根目录。 |
|
移除RPM组 |
|
更新RPM组。该组必须部署到YUM本地存储库的根目录。 |
|
列出组内的RPM包。 |
|
列出YUM组 |
设置组属性
YUM组属性可以在/etc/yum.config
文件如下:
设置 | 允许的值 | 描述 |
---|---|---|
overwrite_groups | 0或1 | 如果两个或多个存储库提供具有相同名称的包组,则确定YUM的行为。 如果设置为1,则将使用最后匹配存储库的组包。 如果设置为0,则来自所有匹配存储库的组将合并为一个大组。 |
groupremove_leaf_only | 0或1 | 确定YUM的行为groupremove命令执行完毕。 如果设置为0(默认),则将删除组中的所有包。 如果设置为1,则只删除组中其他包不需要的包。 |
enable_group_conditionals | 0或1 | 确定YUM是否允许使用条件包。 如果设置为0,则不允许使用条件 如果设置为1(默认),则允许包条件。 |
group_package_types | 可选、默认、必选 | 告诉YUM将在何时安装组中的哪种类型的软件包groupinstall 被称为。默认值是:Default, mandatory |
百胜的身份验证
代理服务器设置
如果您的组织使用代理服务器作为Internet访问的中介,请指定代理
设置/etc/yum.conf.
如果代理服务器也需要身份验证,则还需要指定proxy_username
,proxy_password
设置。
Proxy =<代理服务器url> proxy_username=<用户> proxy_password=pass
如果你使用yum插件(yum-rhn-plugin
)访问ULN,请指定enableProxy
和httpProxy
设置/etc/sysconfig/rhn/up2date.
此外,如果代理服务器需要身份验证,还需要指定enableProxyAuth
,proxyUser
,proxyPassword
设置如下所示。
enableProxy=1 httpProxy=<代理服务器url> enablelexyauth =1 proxyUser=<用户> proxyPassword=<密码>
SSL设置
YUM从3.2.27版本开始支持SSL。
要使用SSL保护存储库,请执行以下步骤:
- 生成私钥和证书OpenSSL。
中定义受保护的存储库
.repo
文件如下:[protected] name = SSL受保护的存储库baseurl=
enabled=1 gpgcheck=1 gpgKey=<到公钥>的url sslverify=1 sslclientcert=<到。cert文件>的路径sslclientkey=<到。key文件>的路径 地点:
gpgkey是指向存储库的ascii保护的GPG密钥文件的URL。如果YUM需要一个公钥来验证包,而所需的密钥尚未导入RPM数据库,则使用此选项。
我如果设置了该选项,YUM将自动从指定的URL导入密钥。在安装密钥之前会提示您,除非assumeyes选项已设置。
使用Yum变量
中可以使用和引用以下内置变量百胜
命令和所有YUM配置文件(例如:/etc/yum.conf
和所有.repo
中的文件/etc/yum.repos.d /
目录):
变量 | 描述 |
---|---|
|
将其替换为包的版本,如distroverpkg 。的版本redhat-release 包中。 |
|
将其替换为系统的体系结构,如所列os.uname () 在Python中。 |
|
这将被您的基本体系结构所取代。例如,如果美元拱 = i686那么basearch美元 = i386 |
下面的代码块是如何实现的示例/etc/yum.conf
文件可能如下:
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=3[评论摘要]
查看单个RPM信息
您可以通过在Artifactory的树状浏览器中选择一个RPM并选择RPM的信息标签:
元数据字段作为属性
相应的RPM元数据字段作为RPM构件的属性自动添加到通过Artifactory访问的YUM存储库中:
rpm.metadata.name
rpm.metadata.arch
rpm.metadata.version
rpm.metadata.release
rpm.metadata.epoch
rpm.metadata.group
rpm.metadata.vendor
rpm.metadata.summary
属性可用于搜索和其他功能。有关详情,请参阅属性。
观看视频
观看这个简短的屏幕演示,了解在Artifactory中托管rpm是多么容易。