gcc --version 的输出是什么意思

gcc --version 的输出是什么意思

以下是输出gcc --version

./gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0

我知道这是 7.5.0 版本,但是为什么版本前面有“Ubuntu”这个词,而后面的“-3ubuntu1~18.04”在这个上下文中(gcc 版本)到底是什么意思?

该手册并没有真正帮助我:

   --version
       Display the version number and copyrights of the invoked GCC.

编辑:请注意,我不仅仅是在问 XubuntuY 是什么意思。我现在知道这个问题已经得到解答了这里。我想知道上面的整个字符串,包括为什么指定了 ubuntu 版本。

答案1

您正在使用gcc版本 7.5.0,这是上游版本。

在受支持的已发布产品上;安全修复程序已移植到现有软件包(除少数例外) 因此其余细节给出了 Ubuntu 软件包中包含的安全修复的详细信息。

有用的链接 -https://packages.ubuntu.com/bionic-updates/gcc-7

你会看到变更日志给出含义的链接,即。

gcc-7 (7.5.0-3ubuntu1~18.04) bionic-proposed;紧急程度=中等

  • SRU:LP:#1848319。 * 将 GCC 7.5.0 反向移植到 bionic。

— 马蒂亚斯·克洛泽[电子邮件保护] 2019 年 12 月 4 日星期三 15:25:41 +0100

即,您获得了导致创建该版本/软件包的修复的详细信息(如果你想要/需要这些信息)。

答案2

据我了解。

括号里的部分是供应商特定的信息。Ubuntu 会告诉你这是 gcc 的 Ubuntu 版本,后面的字符串是软件包版本。

软件包版本用连字符分成两部分(如果有多个连字符,则使用最后一个连字符进行拆分)。“上游版本”和“Debian 修订版本”(在某些情况下,也可能有一个纪元)。“上游版本”可能是上游使用的文字版本号,也可能包含其他指示,例如 +dfsg 表示非免费文件已从原始 tarball 中删除,或 +git 表示打包的内容实际上是 git 快照。

在这种情况下,“上游版本”为“7.5.0”(与文字上游版本相同),“Debian 修订版”为“3ubuntu1~18.04”

“Debian 修订版本”中的更改标识了 Debian 或其衍生产品中的更改,这些更改不会更改上游 tarball 的内容。分配版本号时有几个基本原则。

  • 它应该尽可能唯一地标识软件包的版本。显然,如果多人制作软件包,则无法 100% 保证这一点,但普遍接受的做法是,衍生产品应在他们分配的版本号中包含唯一的“标签”。
  • 当版本更新时,版本号必须增加(根据比较规则),以便用户真正获得升级。
  • 当一个软件包存在于发行版的多个版本中时,新版本中的版本必须高于旧版本中的版本,以便升级系统的用户获得正确的版本。
  • 它对用户来说应该有意义。

版本号中的波浪号是特殊的,在版本比较算法中,它与空字符串进行比较,即“1.2.3-2~foo”<“1.2.3-2”<“1.2.3-2foo”,它通常用于将软件包反向移植到早期版本时,也用于表示预发布版本。

现在让我们来分解一下这个软件包的“Debian 修订版”。

  • “3” 是 Debian 本身的修订版,表明此 Ubuntu 软件包所基于的 Debian 软件包是他们对 7.5.0 软件包所做的第三次修订。
  • “ubuntu1”表示该包已被Ubuntu修改。
  • ~ 通常表示这是某种形式的反向移植。
  • 18.04 似乎表明此软件包被反向移植到了哪个版本。据我所知,这似乎是临时使用。对于上传到反向移植存储库的反向移植应如何进行版本控制,存在标准,但此反向移植是作为稳定更新发布的,而不是通过反向移植存储库发布的。稳定更新过程似乎没有强制要求特定的版本控制方案,它建议使用安全更新过程中的方案,但这似乎不包括反向移植软件包的情况。

相关内容