AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 703950
Accepted
Philip Couling
Philip Couling
Asked: 2022-05-27 06:28:10 +0800 CST2022-05-27 06:28:10 +0800 CST 2022-05-27 06:28:10 +0800 CST

deb 文件或 apt 中的依赖项要求末尾的波浪号 (~) 是什么意思?

  • 772

我很想知道~Apt 在依赖项中是如何处理的,或者它是如何为 deb 文件定义的(我不确定语法的确切定义位置)。

我遇到了关于python3具有依赖约束的 Ubuntu (Focal) 元包的依赖关系:(python3.8 >= 3.8.2-1~见这里)。

我相信包版本的定义是为了让它们按词法排序,但是当我检查 ubuntu 焦点时,没有python3.8按词法排序的版本,>= 3.8.2-1~但是有一个版本3.8.10-0ubuntu1~20.04.4推断 Ubuntu Focal 的依赖项被破坏(它们不是)或者有依赖中的一些特殊含义~。

我能找到的关于该主题的唯一文档是 Debian 的Declaring Relations between packages。但这并没有提到 a ~or 模式匹配。

那么~.deb 依赖项中的尾随是什么意思?

dpkg apt
  • 2 2 个回答
  • 1072 Views

2 个回答

  • Voted
  1. Eduardo Trápani
    2022-05-27T07:48:22+08:002022-05-27T07:48:22+08:00

    控制字段状态的文档(请参阅Version完整算法的页面):

    首先,确定完全由非数字字符组成的每个字符串的初始部分。这两个部分(其中一个可能为空)在词法上进行比较。如果发现差异,则返回。

    词法比较是对修改后的 ASCII 值的比较,以便所有字母排在所有非字母之前,并且波浪号排在任何内容之前,甚至是部分的结尾。例如,以下部分按从早到晚排序:~~、~~a、 ~、空部分、a。

    一个脚注添加了这个关于波浪号的内容:

    一种常见的用途~是用于上游预发布。例如, 1.0~beta1~svn1245排序早于1.0~beta1,排序早于1.0。

    • 10
  2. Best Answer
    Stephen Kitt
    2022-05-27T07:47:51+08:002022-05-27T07:47:51+08:00

    版本中的波浪号在版本政策一节中进行了描述。基本上,波浪线在任何东西之前排序。

    因此>= 3.8.2-1~,任何3.8.2-1以3.8.2-1~bpo. 事实上,在版本(包括 Debian 修订版)的最末尾带有波浪号的此类依赖项通常用于促进向后移植。

    由于这正是您的问题所在,并且 Debian 政策并未解决,因此值得更详细地讨论。一个典型的版本依赖看起来像python3.8 >= 3.8.2-1,需要 3.8.2-1 或更高版本的python3.8包。任何更高版本的 Python 3.8 上游版本以及任何更高版本的 Debian 软件包(3.8.2-2 或 3.8.2-1ubuntu1 等)都可以满足这一要求。但它不会满足于 backports,它有 3.8.2-1~bpo10+1 形式的版本;由于波浪号在空字符串之前排序,因此认为 3.8.2-1~bpo10+1 小于 3.8.2-1。因此,使用这种形式的版本化依赖项向后移植包需要更改它们的依赖项,这与向后移植应尽可能接近原始包的一般规则背道而驰。

    因此,在版本化依赖中添加波浪号作为版本的最后一个字符有助于稍微放松依赖:它允许具有相同前缀和波浪号分隔后缀的版本来满足版本化依赖。这与记录使用波浪线的 pre-releases相反,这导致版本不能满足最终版本的严格版本依赖。

    (请注意,波浪号作为包含 Debian 修订版的版本号中的最后一个字符,如问题中所述,不能允许上游预发布 - 看起来像 3.8.2~pre1-1,小于3.8.2-1~.)

    版本不按词法排序,它们按组件排序,如果可能,按数字排序,否则按词法排序。因此 3.8.10-0ubuntu1~20.04.4 确实满足这个关系:10 大于 2,所以依赖关系得到满足,比较就停止了。

    • 7

相关问题

  • 在发行版的不同版本中混合软件时要寻找什么?

  • 了解 apt 列表输出

  • 尝试安装 debian 软件包 npm,使 apt-get 删除 libssl-dev

  • 如何下载软件包而不是使用 apt-get 命令安装它?

  • /etc/apt/sources.list.d 比 /etc/apt/sources.list 有什么好处

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve