从一个较新的上游源版本更新一个RPM—针对初学者

您的RPM基于Linux发行版慢慢更新您喜欢的包裹吗?您是否在最近发布版本的软件中不耐烦了,您只需拥有最新版本?以下是重建RPM的快速指南,即最新上游源。

您可以使用您想要yabo亚博体育下载更新的包跟随本教程。在整个教程中,我使用了nginx作为示例包,但是您可以使用已经存在于发行版包库中的任何其他包。根据RPM包的复杂性和上游的兼容性,您自己更新它应该没有问题。直到本教程的最后一步,您才有可能破坏您的系统(好吧,就是您正在更新的包)。您可以继续学习,yabo亚博体育下载并考虑在最后安装RPM包时感觉有多舒服。

我将参考本教程中的Fedora和Fedora存储库,但这里没有应用于其他基于RPM的分布,例如CentOS,OpenSUSE和QUBES OS。你可能需要补充dnf命令与您的发行版相同。

先决条件

您需要满足以下先决条件才能继续。yabo亚博体育下载

  • 您的发行版已经为您想要更新的软件提供RPM包。
  • 您的发行版提供了新软件版本所需的所有构建依赖项的最新版本。
  • 对自己解决问题的能力有一点信心。

您还需要作为根用户安装一些构建工具和依赖包。完成以下两个命令后,退出根shell并在本教程的其余部分中使用非特权用户。在本教程结束之前,您将不再需要root访问。我将使用nginx包,在所有代码示例中都用蓝色标记。补充nginx出于要更新的​​包的名称。

dnf安装rpm-build rpmdevtools dnf builddepnginx

现在您已经为您的包提供了一个支持rpm构建的环境。恭喜你!现在,让我们开始吧。

得到了RPM规范以及存储库中的当前源

接下来需要设置RPM开发目录树。你会得到一个新的~ / rpmbuild /在主文件夹中的目录。接下来,您将用要更新的包的源代码填充它。

/rpmbuild/ dnf下载——来源nginxrpm -ivh ./nginx- * .src.rpm

你的~ / rpmbuild /目录现在应该包含具有nginx源的文件夹。你可能会得到一堆关于遗失的东西的警告“mockbuild“,但你可以安全地忽略这些。

如果您想测试并验证您可以构建源RPM的当前版本,那么请跳过下一节,继续进行后面的一节。完成该部分之后,您可以返回到下面的部分。yabo亚博体育下载

更新RPM规范文件版本,并获得新的源文件

打开spec文件,位于~ / rpmbuild /规范/nginx.spec在你最喜欢的编辑器里。你需要对文件做以下两个改变:yabo亚博体育下载

  • 更新版本实地以匹配新的上游版本号。
  • 改变释放领域0。当您的分发方式在其存储库中发布更新版本的程序包时,它将获得版本号1或更高。将家庭酿造的RPM包设置为较低的数字可确保您将来获得分发存储库的更新,因为它们将来可用。

现在,假设您正在为您的环境构建一个包,并且假设上游没有发生太多更改。这就是你所需要做的!运行以下命令尝试yabo亚博体育下载从上游下载新的源。

/rpmbuild/SPECS/nginx.spec

命令成功了吗?进入下一节。请继续阅读本节中最常见的故障排除技巧。

双重检查版本规范文件中的字段编号。从他们的网站找到上游源压缩文件。在文件名中查找版本号。

看看有没有资源#提供到上游源的链接的字段。如果没有,那么这是一个需要手动更改才能更新的特殊包。本教程不介绍这类包。

检查网址资源#领域。您将看到版本号从中替换版本领域。这是正确的下载路径吗?如果没有,您可以欺骗一点并手动设置此地址。

构建二进制RPM

在构建源之前,您需要从您的分发中使用从以前的版本将源RPM包中包含的分发应用于更新的源版本。这些修补程序有助于确保软件在分发上顺利运行,并与系统的其余部分集成。

rpmbuild - bp~ / rpmbuild /规格/nginx.spec

如果所有补丁都正确应用,那么就可以尝试构建了。(感到有点兴奋吗?在这个阶段这很正常。)建筑的命令几乎是相同的,不同之处用粗体突出显示,就像应用补丁:

rpmbuild - bb~ / rpmbuild /规格/nginx.spec

此时您可能有一堆正在工作的rpm,或者构建可能已经完全失败。

它缺乏本教程处理封面如何调试失败的构建或不再适用的旧修补程序。您需要查看源头并修补自己以在这一点上进行任何进展。

测试!

既然你自己做了所有的工作,你也志愿开了测试新包,并成为你一个人的质量保证部门。也许你没有意识到你在你开始时签名的东西,但在这里我们是。

但是如何准确地测试RPM包呢?当然,您应该安装并测试它是否工作。您可以安装它,并确保所有东西都安装在正确的位置。您还应该测试软件是否按预期工作。

您可能希望在PC上的一次性虚拟机中执行测试,或者在按小时付费的虚拟私有服务器提供商(如虚拟私有服务器提供商)上执行测试Linode。如果新版本有任何意外问题,这将隔离您的主计算机。

安装最终产品

您可以像安装其他软件包一样安装或卸载它。

dnf安装~ / rpmbuild / rpmnginx- * . rpm

一路上玩得开心吗?您的发行版很可能对您参与打包过程非常感兴趣。您可以通过测试和验证新包版本、更新现有包或打包新软件来提供帮助。询问你的发行版的IRC频道,你的时间和贡献在哪里最有用。

来源

  • dnf手册页
  • rpmbuild手册页
  • spectool手册页