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 / 问题 / 481824
Accepted
jdonald
jdonald
Asked: 2018-11-15 17:49:44 +0800 CST2018-11-15 17:49:44 +0800 CST 2018-11-15 17:49:44 +0800 CST

即使使用 Multi-Arch,APT 版本也会在不同架构之间发生冲突:相同吗?

  • 772

使用 Raspbian 和 64 位内核,我从以下来源获取软件包:

deb [arch=armhf] http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
deb http://deb.debian.org/debian stretch main contrib non-free
deb http://deb.debian.org/debian stretch-updates main contrib non-free

尝试安装最小的依赖项来运行类似 gzip:arm64 的东西会报告冲突,例如:

libgcc1 : Breaks: libgcc1:arm64 (!= 1:6.3.0-18+rpi1+deb9u1) but 1:6.3.0-18+deb9u1 is to be installed
gcc-6-base:arm64 : Breaks: gcc-6-base (!= 6.3.0-18+deb9u1) but 6.3.0-18+rpi1+deb9u1 is to be installed

看起来“+rpi1” armhf包与非 rpi1 arm64包冲突。但这意味着它正在比较两种不同架构的包版本!

apt-get 的错误消息可能会产生误导,所以为了让我的系统进入类似于 bamarni 的 Debian Pi64(multiarch 工作的地方)的状态,我可以尝试从https://packages 等链接下载一些非 rpi1 armhf 包。 debian.org/stretch/armhf/libgcc1/download一旦我替换了 libgcc1:armhf、gcc-6-base:armhf、libc6:armhf、libatomic1:armhf 等,基本冲突就会消失,我可以安装 libgcc1:arm64 gcc-6 -base:arm64 libc6:arm64 通过 apt。但是,这不是一个很好的解决方案,因为在此过程中我可能失去了 ARMv6 兼容性和其他 Raspbian 特定的修改。

上述情况仍然可能意味着 Raspbian 包中还隐藏着一些可疑的东西。我的下一个测试是使用 Raspbian *.deb 文件,除了使用脚本我重新打包它们以删除+rpi1每个控制文件中的版本文本部分。一旦我这样做并重新安装这些包,与 arm64 包的冲突就会消失。这再次表明 APT 正在比较两种不同架构的软件包版本。

当我apt-cache show在其中任何一个上运行时,他们都会Multi-Arch: same用正确的对应Architecture:行说。据我了解,它只关心在Multi-Arch: foreignor的情况下跨不同架构的版本Multi-Arch: allowed。

这里发生了什么?似乎 APT 在不应该比较不同架构的包版本时,这会导致虚假冲突。我想知道 multiarch 在 bamarni 的 Pi64 或 Ubuntu MATE(或大多数 i386+x86_64 系统)上是否正常工作这一事实部分是幸运的,因为这些系统在 32 位和 64 位上具有通常一致的软件包版本。

debian apt
  • 1 1 个回答
  • 938 Views

1 个回答

  • Voted
  1. Best Answer
    Stephen Kitt
    2018-11-15T21:50:01+08:002018-11-15T21:50:01+08:00

    这是多架构规范的强制要求:

    多架构包需要保持同步;即,隐含的Breaks: ${self}:other (!= ${binary:Version}).

    /usr/share/doc原因是软件包总是在共享目录(它通过跨架构强制执行相同的版本来做到这一点,即使使用 binNMU。

    在单个发行版中这不是什么大问题,但跨发行版却是。

    具体来说,让我们考虑一下gcc-6-base(因为那是文档所在的位置)。Debian Stretch 版本将其变更日志安装在/usr/share/doc/gcc-6-base/changelog.Debian.gz. 为其他架构安装相同的包,使用相同的版本,安装相同的文件,所以虽然技术上存在冲突,但它被忽略了。然而,Raspbian 版本添加了以下条目:

    gcc-6 (6.3.0-18+rpi1+deb9u1) stretch-staging; urgency=medium
    
      [changes brought forward from 6.1.1-1+rpi1 by Peter Michael Green <[email protected]> at Wed, 11 May 2016 20:
      * Disable testsuite.
    
     -- Raspbian forward porter <[email protected]>  Thu, 01 Mar 2018 00:03:02 +0000
    

    现在/usr/share/doc/gcc-6-base/changelog.Debian.gz不再相同。如果我们要并排安装软件包的 Debian Stretch 和 Raspbian Stretch 版本,应该保留哪个版本的文件?没有办法决定,所以包装系统完全禁止这种情况。

    • 3

相关问题

  • GRUB 配置以识别同一 Linux 发行版的不同桌面环境(安装)

  • astyle 不会更改源文件格式

  • 接收有关全新 Debian 的电子邮件

  • Debian Stretch:libgs_plugin_systemd-updates.so 中的 gnome-software 段错误

  • 如何在拼音输入法中输入ü?

Sidebar

Stats

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

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

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

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

    • 5 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • 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
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +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
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +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