在安装 Web 服务器时,我一直在思考一些严肃的问题……
“我真的需要那个包吗?”
我注意到,当您为 Web 服务器安装软件包时,
通常会有同一个软件包的两个“版本”。
例如,在安装 php7.4 时,可以安装php-mbstring
和php7.4-mbstring
或者php-gd
和php7.4-gd
。
所以我的问题是,如果我安装php7.4-mbstring
,是否还需要安装php-mbstring
?
它是否对所有具有相同命名模式的包都起作用(php-dev
=>php7.4-dev
等)
答案1
通常,没有版本号的包将通过依赖项“指向”最新的包。
所以今天,您可以安装php-mbstring
,它也会安装php7.4-mbstring
。将来的某个时候,php7.5-mbstring
将会出现,然后php-mbstring
“指向” php7.5-mstring
。
因此如果您已经安装了php-mbstring
,下次检查依赖项时它将解析为较新的版本。
如果您只安装了php7.4-mstring
,那么您将无法获得较新的软件包。
答案2
这 Fedora 软件包命名指南 定义软件包名称并处理如您的示例中的情况。几乎所有 Linux 发行版都遵循此约定。
出于多种原因,在 Fedora 中同时安装多个版本的软件包有时是有利的。这样做时,软件包名称必须反映这一事实。一个软件包应该使用基本名称(不带版本信息)。从它派生的所有其他软件包必须包含基本名称,并加上以下后缀:
- 软件包版本应该包含原始版本中的句点。
- 如果基本包名称以数字结尾,则必须在名称后附加一个下划线(“_”),并且必须在其后附加版本,以避免混淆名称的结束位置和版本的开始位置。
- 如果基本包名称不以数字结尾,则版本必须直接附加到包名称中,中间不加分隔符。
- 连字符(“-”)后跟描述性后缀(如“稳定”),它提供了有关打包版本的性质的一些指示。
例子:
- python-sqlalchemy 软件包在 Fedora 中有时会有多个版本,以实现向后兼容。python-sqlalchemy 的最新版本名为 python-sqlalchemy,较旧的受支持版本为 python-sqlalchemy0.5。在这种情况下不使用分隔符。
- v8 软件包的最新版本名为
v8
。为了打包版本“3.13”,软件包必须命名为v8_3.13
。
因此,仅有名称的版本是基本版本,所有附加更多信息的软件包都是派生版本。
派生类型有很多种。最常见的一种是用于标记保留的旧版本,以便与旧软件兼容。但其他派生类型也是可能的,例如用于不同编程语言的附加工具或库。