package - RPM 包文件名语法,与 Debian 的区别
问题描述
我最近为 Debian(实际上是 Ubuntu 18 和 20)构建了一个可执行文件包。核心内容的 tarball 能够在 Fedora 34 上运行。所以现在我被要求为它创建一个 RPM。
Debian 文件名类似于:
mystuff-sfwrname-edu_21.05-0715.1234-u20_amd64.deb
这对应于 Debian 软件包文件名的name _ version _ arch .deb 语法。下划线是主要分隔符;减号并不重要。(u20
表示 Ubuntu 20.04 版本;由于libc
问题,还有一个u18
Ubuntu 18.04 版本。)
来到 RPM 世界,我发现语法是:
name - version - release。arch .rpm,其中减号和最后一个周期很重要。然而,在架构之前的名称和句点中似乎有包名称,例如openssh-clients-7.4p1-16.el7.x86_64
带有减号。
然后我可以将我的包裹命名为:
mystuff-sfwrname-edu-21.05-0715.1234.el7.x86-64.rpm
在哪里:
name
=mystuff-sfwrname-edu
(带有多个减号)version
=21.05
release
=0715.1234.el7
arch
=x86_64
如果我假设相同的 RPM 在 Fedora 34 和 CentOS 7 上工作,我会直接删除el7
还是有其他一些我不知道的规则/实践?
解决方案
简而言之 - 是的,你可以。
有关版本指南的更多信息https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/
是.el7
disttag。通常在规范中写为:
发布:0715.1234%{?dist}
RPM 本身根本不关心它。它把它当作一个简单的字符串。只是.el7
< .el8
. 所以从技术上讲,您可以将软件包安装.el7
到 RHEL8。但当然,有时由于不同平台上的路径不同,它并不能按预期工作。你必须自己测试它。
推荐阅读
- php - 如何在 Plesk 服务器中启动 HTTP 服务器时自动运行 WebSocket(socketo.me) 服务器
- java - 在 Java 中解包数组/集合
- azure - 将 Azure 机器人与 Azure 语音服务集成
- postgresql - 如何将 postgres 数据库用户角色密码从“admin”更改为“mypassword”?
- javascript - 如何执行d3拖放
- android - 实施 Proguard 规则时的 Okio 警告
- java - 如何使用 useDelimiter() 一次?
- html - 请如何在表格 HTML 中附上图片
- flutter - 如何在 Flutter 中使用接口?
- go - mux 返回匿名函数的路由器类型