生成源类型
Copr支持多种类型的构建源。
URL
这是当前一次提交多个生成的唯一方法。首先,您需要上传SRPM包,然后提供由空格或换行符分隔的URL。请注意,构建不保证单个启动的构建的顺序。
您还可以只输入rpm.spec文件(包元数据)的URL,该文件描述了不带包括实际的构建源。构建源在https下的公共服务器上再次可用,然后在SRPM构建过程中由COPR自动下载。
直接上传
如果您的.spec文件或srpm存储在本地,则可以使用此方法将其直接上传到从命令行(通过使用COPR-cli工具)或通过COPR web UI进行COPR。
供应链管理
此方法允许您从任何包含有效.spec文件的Git、DistGit或SVN存储库构建RPM。唯一必需的参数是克隆URL以及目标存储库是否将.spec文件放在一起如果包源位于根目录中,并且您希望从主HEAD进行构建,那么它将简单地工作。对于更复杂的情况,需要配置更多的东西。例如,您可能需要指定子目录目标存储库的文件包源所在位置。请参见以下内容完整选项说明的列表:
类型:所指向的存储库的SCM类型克隆URL(换句话说,我们是否应该使用plain吉特或git服务器用于后续克隆)。
克隆URL:我们应该克隆哪个存储库来获取源。
承诺:我们应该从克隆存储库的历史记录中检查哪些标记、分支或提交。默认情况下,主分支的HEAD。
子目录:应在何处执行后续SRPM构建命令(见下文)。路径是相对于存储库根的。
等级库文件:相对于给定的规范文件的路径子目录。请注意,您可以选择使用锚定路径/(例如。/rpm/示例spec). 如果没有指定.spec文件将自动定位。
最后一个要配置的可选操作(除了通用构建配置选项)是SRPM构建方法。有四种选择:每千克转数,蒂托,蒂托试验、和制作srpm:
每千克转数:默认方法。除了从任何Git或SVN构建包之外存储库,它还支持直接从距离Git存储库。请注意每千克转数(以及蒂托下面)不仅是生成SRPM,但实际上,它也是一个成熟的包管理器您可以从命令行使用它来维护您的(上游)项目。您可以阅读有关此工具的更多信息在这里.请注意,从2021年12月开始,Copr迁移到rpkg-直到v3,等等您的规范文件需要使用{{}}模板来符合.
蒂托:是一个强大的RPM包管理器,具有许多功能,如果您的项目是用Tito管理的,那么这就是您要选择用于生成SRPM的工具(即包管理器的众多功能之一)。选择此选项后,将使用最新的包GIT标记构建SRPM。请注意,此实用程序当前已不支持指定备用.spec文件,这意味着等级库字段使用此选项时会忽略,.spec文件将始终自动定位。请注意,此工具与每千克转数目标存储库需要用初始化蒂托 初始化
在使用此工具之前从中构建SRPM。您可以阅读更多在这里.
蒂托试验:选择此选项后蒂托实用程序将用于构建SRPM,但这一次承诺上面指定的值(如果没有,则为主分支的HEAD承诺将用于构建SRPM。这对应于使用--测试
开关,用于蒂托
当调用它来生成SRPM时。
制作srpm:使用此方法,用户自己将提供用于生成SRPM的可执行脚本。如果你要使用此方法,您需要提供.copr/生成文件
(路径相对于存储库根目录)srpm公司
目标在您的存储库中。进入那个srpm公司
目标,您可以放置生成SRPM所需的任何内容。您可以使用网络并克隆另一个存储库中,您可以安装新的软件包,并且几乎可以做任何事情,因为这是脚本在内部使用root权限运行模拟chroot。请注意,它是在与构建器主机的操作系统版本相同的模拟chroot中运行的(通常是最新发布的Fedora版本)。这样调用Makefile的目标:
制作 -(f) <克隆repodir>/.铜比/生成文件 srpm公司 外部(outdir)=“<outdir>” 规范=“<规范路径>”
这个规范
参数是您在等级库文件SCM源规范和脚本的字段在中运行子目录您也可以在源代码部分中选择指定。请注意,您可以忽略这个规范
文件参数外部(outdir)
参数指定放置结果的位置SRPM,以便COPR可以在以后找到并构建它。
可以放入的内容示例.copr/生成文件
:
$cd myrepo$cat.copr/生成文件srpm:dnf-y安装titotito build--builder=SomeBuilder--测试--srpm--输出=$(outdir)
请注意,其他工具(蒂托和每千克转数)在指定的中运行子目录也。
距离Git
有一个新选项可以从Copr中现有的DistGit实例构建(例如。,来自Fedora或CentOS DistGit)。要构建足球来自的包可在CentOS 8上执行以下操作:
$copr build-distgit<项目>--名称foo--distgit centos--提交c8
Fedora Rawhide套装更容易:
$copr build-distgit<项目>--名称foo
因为“fedora”distgit是默认值,我们会自动选择默认值分支。
注释
请注意,SRPM是从指定的DistGit实例下载的每次Copr构建仅一次,无论您的chroot数量如何为生成。
它不是在一个Copr构建中,例如。软呢帽-37-x86_64
chroot将由第37页
分支,软呢帽-38-x86_64
来自f38表格
分支,以及软呢帽39-x86_64
来自生皮
分支。你可以,但是,请使用承诺字段指定DistGit应该使用分支(默认情况下,它是生皮
对于Fedora DistGit公司).
来自您的DistGit分支的来源(例如。生皮
)可以是与某些目标色度不兼容(例如。epel-8-x86_64
)由于不同的依赖关系、构建工具等解决方法是提交多个构建,例如:
铜比 建造-分配(distgit) 发出砰的声响 --名称 <包裹> --改变根目录 软呢帽-生皮-x86_64码 --犯罪 生皮
铜比 建造-分配(distgit) 发出砰的声响 --名称 <包裹> --改变根目录 埃佩尔-8-x86_64码 --犯罪 epel8号机组
自定义(脚本)
此源类型使用用户定义的脚本生成源(稍后用于创建SRPM)。有关更多信息,请查看自定义源方法.
常见问题
Copr的目的是什么?¶
Copr是一个适用于所有人的构建系统。您提供src.rpm,Copr提供yum存储库。如果您的项目尚未包含在标准Fedora存储库中,则Copr可以用于上游构建、持续集成或为您的项目用户提供yum存储库。
你需要一个FAS账户为了开始。
我可以在Copr中构建什么?¶
您同意不使用Copr上传软件代码或其他材料(“材料”):
您无权上传或使用,例如侵犯任何第三方的知识产权财产或其他适用法律;
全部或部分受未包含在Fedora可接受的许可证列表,当前位于https://docs.fedoraproject.org/en-US/legal/allowed-licenses网站,Fedora理事会可能会不时对该名单进行修订;
在处被归类为“不允许的项目”https://docs.fedoraproject.org/en-US/legal/not-allowed-licenses网站/因为联邦政府可能会不时修改该页理事会;
旨在干扰、禁用、过载、损坏、,损害或破坏Copr或Fedora项目基础设施;
违反了Fedora项目的任何规则或指南,尤其是Fedora计划行为准则你知道的不需要遵守包装指南.; 或
违反任何适用的法律法规。
您有责任检查许可证,并确保可以将结果yum-repo公开。
如果您认为某些回购可能违反了许可证,您可以竖起一个法律标志-每个项目中都有一个专门的文本区域来这样做。这将向管理员发送一个通知,我们将相应地采取行动。
如果您在“说明”或“安装”说明中说明软件包的许可证,那就太好了。
Copr do中的包不需要遵循Fedora包装指南,尽管建议这样做。特别是内核模块可以在Copr中构建,只要它们不违反许可证第2点中的要求。以上。
你能借给我更快的Copr建筑商吗?¶
是的,很高兴你这么问!但你并不总是想要这个,看-费多拉·科普的建筑工人太慢了!.
使用Copr安全吗?¶
这是一个由两部分组成的问题。
1) 我们可以信任Copr作为一个平台吗?
Copr是一种自由软件,其代码可公开供审查任何人。在内部,它使用标准的Fedora打包工具集,并且对结果存储库进行签名。部署了所有Copr服务器在Fedora基础设施内,我们与Fedora密切合作基础设施团队。
2) 我们可以信任Copr中可用的软件吗?
只有拥有FAS帐户的人才能创建项目和构建Copr中的包。这意味着你可以找到更多信息了解每个项目所有者并自行决定是否找到他们信不信由你。您还可以看到每个构建的具体情况提交,下载其SRPM文件,并验证源代码和规范为自己归档。
如何启用Copr存储库?¶
请参见如何启用回购.
如何将软件打包为RPM?¶
有几个教程:
我可以为不同版本的Fedora构建吗?¶
对。只需点击项目中的“编辑”选项卡,然后选择几个chroot,例如“fedora-19-x86_64”和“fedora-18-x86_64”。完成此操作后,当您提交src.rpm时,将为这两个选定版本的Fedora构建包。
您也可以为EPEL构建。
我可以拥有更多的百胜存储库吗?¶
对。每个用户可以有多个项目,每个项目有一个yum存储库,更准确地说,每个chroot有一个存储库。
我可以一次提交多个生成吗?¶
对。只需用空格或新行将它们隔开,但请记住,我们不保证构建顺序。
当我尝试构建具有相同版本号的包时会发生什么?¶
没什么特别的。您的软件包将重新构建。
我可以依赖Fedora/EPEL中没有的其他软件包吗?¶
是的,它们只需要在一些yum存储库中可用。它可以是另一个Copr回购或第三方yum回购(例如jpackage)。在项目中单击“编辑”,并将相应的存储库添加到“Repos”字段中。项目中的包也可以在生成时使用,但只能用于当前正在生成的项目,而不能用于其他项目。
我可以将回购权限授予我的队友吗?¶
对。如果有人想构建到您的项目中,而您想授予他们访问权限,只需将他们指向您的Copr项目页面即可。然后单击“权限”选项卡,请求所需的权限。“生成器”只能提交生成,“管理员”可以批准权限请求。然后,您必须导航到相同的“权限”选项卡,然后批准或拒绝请求。
您有命令行客户端吗?¶
对。就这么做dnf公司 安装 copr-cli公司
并通过以下方式了解更多信息男人 copr-cli公司
.
你有API吗?¶
对。查看每个Copr页面页脚中的链接或直接跳到API页面.
您将构建保存多久?¶
我们为一个项目中的每个包无限期保留一个构建。所有其他构建(旧包、失败的构建)将在14天后删除。
请注意,我们使用最强大的EPOCH:NAME-VERSION-RELEASE保持构建,尽管这个版本可能不是最新的。此外,如果有同一个包版本的两个构建,不确定要进行哪一个待保存。
选择参与的项目手动创建存储库,是由于技术限制,免除旧包装的移除。
科普怎么发音?¶
在美式英语中,Copr的发音与拼写为“copper”的金属元素类似。
为什么要建立另一个系统?¶
我们并没有开始创建另一个构建系统。我们最初只是想让构建第三方rpm存储库变得更容易,但在与koji开发人员和正在为CentOS构建包的开发人员交谈后,我们意识到需要一个可维护、可插入和轻量级的构建系统。
你考虑过OBS吗?¶
是的,我们做到了。请参见与Koji合作和集成和使用OBS实施Copr.以及邮件列表讨论,以及结论.
我可以从Copr生成中获得通知吗?¶
是的,你可以。在以下位置启用电子邮件/irc/android通知Fedora通知服务.
查看博客帖子如何从总线使用copr消息.
科普是什么意思?¶
社区项目(以前是Cool Other Package Repositories)
我如何告诉百胜更喜欢Copr套餐?¶
不鼓励在Copr中构建与官方Fedora repo中发布的包具有相同版本发布号的包。相反,您应该增加版本号。如果使用相同的版本发布号进行构建,可以通过在.repo文件中添加cost=900来告诉yum更喜欢Copr包而不是分发版提供的包。
Copr可以直接从git构建吗?¶
是的,它可以。请参见供应链管理源类型。
如果您想了解有关从Git repo生成srpm的工具的更多信息,请参阅:
蒂托(博客帖子)
dgroc公司(博客帖子)
为什么科普不下载我的更新包?¶
有时有人报告说,即使他们更新了src.rpm文件并提交了新的构建,Copr仍在使用旧的src.rpm。这通常是在对src.rpm文件进行更改时导致的,但版本号没有相应增加。因此,生成的文件具有相同的URL,因此您的浏览器不会费心获取新的日志文件,并继续在其缓存中显示这些文件。因此,您仍然可以看到上一个任务中的旧内容。
您应该按Ctrl+Shift+R使缓存无效并重新加载页面
如何创建新组?¶
组成员身份由处理船边交货。它可以向现有组添加/删除成员。然而,它不能创建新组。您可以通过以下方式创建新组创建新的fedora基础设施票证.您必须注销,然后再次登录到Copr,以便Copr可以阅读您的新设置。还要注意,您可能需要等待几分钟,直到组列表已同步.用户还报告说首先从伊普西隆注销可能有助于同步。
一旦copr知道您所属的FAS组,您仍然需要激活组。去我的群页面并单击激活 这 组
按钮。
我在日志中看到关于/devel/repodata/的一些奇怪错误。¶
这是有意的。实际上,在下一个版本中会出现类似“请忽略上面的错误”的内容。
这是您可以检入设置“手动创建存储库”的功能的一部分。这是为大像Gnome或KDE这样的项目,由数百个包组成。你想同时释放它们。但另一方面,建造它们需要几天的时间。当然,在构建期间,您需要启用该存储库,同时为用户禁用/冻结。
因此,如果您选中“手动创建存储库”,我们不会在普通目录中运行createrepo_c,而是在中运行/devel/directory。此目录始终传递给模拟skip_if_unavailable=1
.因此,如果Copr有它,则使用它,否则忽略它。但如果缺少DNF/YUM,则打印上述警告,即使被忽略。目前无法告知DNF/YUM不要打印此警告。
我如何影响构建顺序,是否有“链”构建支持?¶
生成批处理可用于保证生成的顺序已处理(一个生成批可以依赖于其他生成批)。请参见博客帖子提供更多信息的示例。
生成成功,但我没有看到生成的结果?¶
Fedora Copr使用AWS CDN在构建的RPM上传播HTTP流量存储库遍布全球,这意味着AWS端需要大量缓存。
当您(或您所在地区的任何其他人)在构建仍在进行中,web服务器目录列表缓存在CDN-然后目录的内容在一段时间内保持不变(即使构建可能已经完成,因此目录也会更新)。
不用担心,此缓存不会影响DNF/YUM行为-即使如此你的浏览器被缓存误导了,包管理器总是下载最新的目录的内容。请忽略不一致,或访问这个非缓存主机变量.
我的构建因超时而失败,为什么?¶
构建不允许永远运行。默认限制为5小时(18000秒),但用户可以将其增加到30小时(108000秒)。
特定于部署
这个费多拉·科普实例增加最大限制为50小时(180000秒)。
如果超过超时限制,则生成将被终止并显示以下错误消息:
!! Copr超时=>发送INTCopr生成错误:生成失败与生成器的共享连接已关闭。
奇怪的SCM构建失败?¶
它以前对我有用,但我最近看到每千克转数
错误如下:
正在运行: 每千克转数 srpm公司 --外部(outdir) /无功功率,无功功率/自由/铜比-rpmbuild公司/结果 ...
科普 建造 错误: 错误: 坏 来源: /无功功率,无功功率/自由/铜比-rpmbuild公司/结果/例子-1.0.13.焦油.gz(高斯): 不 这样的 文件 或 目录
请看一下rpkg-util v2与v3的差异.
Koji和Copr的区别是什么?¶
参见单独的页面Koji与Copr.
如何处理Copr和RPMAutoSpec?¶
最简单的方法是使用DistGit源类型.它是自动的展开%自动释放
和%自动变更日志
来自克隆的dist-git存储库。
如果您需要微调流程并以某种方式改变它,您可以-将源类型设置为“自定义”,并使用以下脚本:
#! /箱子/箱-x
包裹=<包裹>
铜比-分配(distgit)-客户 克隆 “$包” --蒸馏器-吉特 软呢帽
光盘 “$包” || 出口 1
.. 扭 这个 规范 文件 或 结账 这个 渴望的 分支 ..
铜比-分配(distgit)-客户 来源 #下载源
铜比-分配(distgit)-客户 srpm公司 --输出目录 .
bsdtar x英尺 *.型钢混凝土.每分钟转数 -C类 “$COPR_RESULTDIR”
将Buildroot依赖项设置为copr-distgit-客户端 bsdtar
。或者你可以更深入地使用吉特 rpmdevtools工具 rpmautospec公司
与以下人员合作:
吉特 克隆 <吉特 网址> <项目 名称>
光盘 <项目 名称>
光谱工具 -克 <规范 文件>
rpmautospec公司 过程-分配(distgit) <规范 文件> <规范 文件>
在这种情况下,将结果目录指定为<项目 名称>
一串在脚本中使用。
我有个问题,我需要和一个人谈谈。¶
我们本身不提供支持,但请在此碰碰运气:通信