将 raspbian 切换到 64 位

问题描述

我通过将 arm_64bit=1 添加到 /boot/config.txt 将我的 raspian 切换到 64 位。从这个意义上说,内核现在是 64 位的。

当我想安装软件包(在我的情况下为 docker)时,我想使用 64 位版本,但它安装了 32 位版本。事实证明,包管理器仍然设置为 32 位:

$ dpkg --print-architecture
armhf

如何让包管理器安装 64 位包?

解决方法

$ dpkg --print-architecture
i386
# dpkg --add-architecture arm64
$ dpkg --print-foreign-architectures
amd64
# apt-get update
# apt-get download gcc-4.6-base:arm64 libgcc1:arm64 libc6:arm64 \
          libselinux1:arm64 zlib1g:arm64 libbz2-1.0:arm64 dpkg:arm64
# dpkg -i gcc-4.6-base*.deb libgcc*.deb libc*.deb libselinux*.deb \
          libbz2*.deb zlib*.deb dpkg*.deb
$ dpkg --print-architecture
arm64
$ dpkg --print-foreign-architectures
i386

您的一些软件包是 amd64,但大多数仍是 i386。 apt-get upgrade 会处理一些包,apt-get -f install 会修复一些错误,但大多数包仍然是 i386。如果您想解决这个问题,请跳过棘手的部分;)

使用 dpkg --get-selections | grep :i386 将返回您仍然需要迁移的所有软件包。

我的下一个想法是:

# apt-get install `dpkg --get-selections \
  | grep i386 \
  | awk {'gsub(/:i386/,":amd64"); print $1'}`

但结果证明是个坏主意:有些包在 amd64 中不可用(例如 libc6-i686),apt-get 会混淆,并且在两个版本中都会安装很多包。 aptitude 需要做大量的手工工作。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...