我的问题是什么
我无法从 ubuntu 存储库安装更新或任何新软件包。软件包列表似乎只包含已安装的软件包,例如
$ apt-cache policy bash
bash:
Installed: 5.0-4ubuntu1
Candidate: 5.0-4ubuntu1
Version table:
*** 5.0-4ubuntu1 100
100 /var/lib/dpkg/status
$ apt search curl
Sorting... Done
Full Text Search... Done
curl/now 7.65.3-1ubuntu3 arm64 [installed,local]
command line tool for transferring data with URL syntax
libcurl3-gnutls/now 7.65.3-1ubuntu3 arm64 [installed,local]
easy-to-use client-side URL transfer library (GnuTLS flavour)
libcurl4/now 7.65.3-1ubuntu3 arm64 [installed,local]
easy-to-use client-side URL transfer library (OpenSSL flavour)
我期望apt-cache policy
显示如下行
500 http://ports.ubuntu.com/ubuntu-ports eoan/main arm64 Packages
就像在任何其他 ubuntu 上一样。该apt search
命令应该输出一长串软件包列表。
这件事发生之前我做了什么
我今天从http://cdimage.ubuntu.com/releases/eoan/release/ubuntu-19.10-preinstalled-server-arm64+raspi3.img.xz并将dd
其编辑到 SD 卡上并从中启动了 raspberry pi 4b。设备启动正常。然后我想像dist-upgrade
往常一样从某个映像安装 ubuntu 系统后执行此操作。
apt update
似乎运行起来没有任何严重问题:
$ sudo apt update
Hit:1 http://ports.ubuntu.com/ubuntu-ports eoan InRelease
Hit:2 http://ports.ubuntu.com/ubuntu-ports eoan-updates InRelease
Hit:3 http://ports.ubuntu.com/ubuntu-ports eoan-backports InRelease
Hit:4 http://ports.ubuntu.com/ubuntu-ports eoan-security InRelease
WARNING:root:cannot read /var/lib/command-not-found/commands.db.metadata: Expecting value: line 1 column 1 (char 0)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
那个警告看起来有点奇怪,但apt update
再次运行时就消失了。
之后我立即跑了
$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
这首次表明有些事情很奇怪,因为通常这些图像并不是完全最新的。
我尝试解决此问题
我尝试了这些命令几次,在做了其他一些更改(设置主机名、向引导加载程序添加内核参数)后重新启动了系统。仍然没有软件包。
然后我向 apt 添加了另一个存储库,它完全正常工作。我可以在其中找到软件包并安装它们。完全没有问题。
但尝试安装包nfs-common
和时docker.io
,无法找到它们。
我查找了软件包列表文件,/var/cache/apt/list
但找不到该目录。在运行的 18.04 armhf 系统上,该目录也丢失了,所以这似乎没问题。相反,有一个文件/var/cache/apt/pkgcache.bin
,我尝试将其删除(sudo rm /var/cache/apt/pkgcache.bin
),但apt update
问题仍然存在。
更多有用信息
我的/etc/apt/sources.list
(为简洁起见删除了评论):
deb http://ports.ubuntu.com/ubuntu-ports eoan main restricted
deb http://ports.ubuntu.com/ubuntu-ports eoan-updates main restricted
deb http://ports.ubuntu.com/ubuntu-ports eoan universe
deb http://ports.ubuntu.com/ubuntu-ports eoan-updates universe
deb http://ports.ubuntu.com/ubuntu-ports eoan multiverse
deb http://ports.ubuntu.com/ubuntu-ports eoan-updates multiverse
deb http://ports.ubuntu.com/ubuntu-ports eoan-backports main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports eoan-security main restricted
deb http://ports.ubuntu.com/ubuntu-ports eoan-security universe
deb http://ports.ubuntu.com/ubuntu-ports eoan-security multiverse
/etc/apt/sources.list.d
是空的。这是图片中的原始文件,我没有修改它。
我不知所措,不知道如何进一步调试。你们有人知道那个系统出了什么问题吗?
答案1
不知道为什么会发生这种情况,但我遇到了完全相同的问题。对我来说,解决方案是将 universe/multiverse 条目从 /etc/apt/sources.list 中注释掉,然后运行 apt-get purge 和 apt-get clean。之后,我运行了 apt-add-repository universe 和 apt-add-repository multiverse,这样就解决了问题。