☰
Kali Linux 2026.2 APT源配置与报错排查指南
2026/10/23 5:33:38 网站建设 项目流程

装完 Kali Linux 2026.2,很多人第一反应是打开菜单找工具,我一般先干另一件事:把 APT 源配置理顺。原因很直白——源配错,后面所有apt install都是白费功夫,轻则卡在 404 和 NO_PUBKEY 里出不来,重则把系统依赖搞成一团乱麻。Kali Linux 2026.2 这个版本用的是滚动发布模型,源里的包每天都在变,配置方式和几年前那套apt-key add的老教程已经完全是两个世界了。这篇内容就是把我自己在多台机器上重复过很多遍的 APT 源配置流程整理出来,从sources.list每一段的语义、镜像站怎么挑、deb822 新格式怎么写,到apt update输出里每一行报错对应什么问题,全部摊开讲。刚接触 Kali 的新手可以直接照着抄配置,已经用了几年但每次换环境都要翻旧笔记的老用户,也能在这里找到一些以前没注意过的细节。

1. 先把 APT 源这件事的底层逻辑讲透

配置源之前得先明白 APT 到底在干什么。它不是一个"下载安装包的工具",而是一个带签名校验的元数据检索系统。你在sources.list里写的那几行,本质上是告诉 APT:去哪个地址、取哪个发行版分支、要哪几个组件目录下的Packages索引文件。APT 先把这些索引拉回本地缓存,你apt install的时候它是在缓存里做依赖求解,算出要装哪些包,再去对应的 URI 拼接出真实下载地址。所以源配错的表现往往很分裂——有时候是apt update直接报错,有时候是update一切正常但install时 404,因为索引拿到了、包文件路径却是错的。

1.1 一行源配置到底由哪几段组成

传统格式的sources.list一行可以拆成四段,中间用空白分隔,#开头是注释:

# 类型 地址 分支 组件列表 deb http://mirror.example.org/kali kali-rolling main contrib non-free non-free-firmware

第一段是类型,deb表示二进制包仓库,deb-src表示源码包仓库。日常使用只需要deb,deb-src会额外拉一份源码索引,体积不小,除非你要自己编译或改包,否则没必要开。第二段是 URI,也就是镜像站的根路径,注意不要带末尾的/dists/或/pool/,APT 会自己在后面拼。第三段是 suite(有些文档叫 distribution),对 Kali 来说基本只有kali-rolling一个选项,这是滚动分支的标志。第四段是组件,main是官方维护的自由软件,contrib是自由软件但依赖非自由组件,non-free是非自由授权软件,non-free-firmware是从 Debian 12 时代拆分出来的固件专用组件,网卡、无线、显卡的闭源固件都在里面,缺了它你会遇到"无线网卡能识别但扫不到信号"这类怪问题。

组件的顺序不影响结果,但建议按main contrib non-free non-free-firmware的固定顺序写,方便以后用脚本批量替换。

1.2 suite 为什么只有 kali-rolling 一个答案

这是新手最容易踩的认知坑。很多人从别的发行版迁移过来,习惯性去找kali-2026.2或者stable这样的分支名,写进去直接 404。Kali 走的是滚动发布,不存在"某个版本对应某个固定仓库"的概念,2026.2 只是安装镜像的打包时间点,装完之后系统会一路跟着kali-rolling往前走。这个设计的好处是不用做大版本升级,坏处是某天早上更新完可能某个工具的行为就变了,因为上游刚合并了新版本。

Kali 官方另外维护了两个特殊分支:kali-last-snapshot指向最近一次发布镜像对应的软件状态,kali-experimental是实验性仓库,包新但极不稳定。kali-last-snapshot在需要复现某个时间点环境的场景下很有用,后面第 5 节会细讲。至于kali-bleeding-edge,那是给想尝鲜的人准备的,日常环境不要碰。

1.3 deb822 格式:新版 APT 推荐的写法

从 APT 2.9 开始,官方在推 deb822 格式的源描述文件,扩展名是.sources,放在/etc/apt/sources.list.d/下。它不是把一行拆成多行那么简单,而是改成 RFC822 风格的键值对:

Types: deb URIs: http://mirror.example.org/kali Suites: kali-rolling Components: main contrib non-free non-free-firmware Architectures: amd64 Signed-By: /usr/share/keyrings/kali-archive-keyring.gpg Enabled: yes

这套格式有几个实打实的好处。一是多 URI 多分支可以写在一个文件里,用逗号分隔,APT 会自动做笛卡尔积组合,不用像传统格式那样一行一行复制。二是Signed-By字段把签名密钥绑定到了单个源上,而不是全局信任——传统格式下你用apt-key加的密钥对所有源生效,任何一个源出问题都会波及全局,这是历史遗留的安全隐患。三是字段名自解释,Enabled: no就能临时禁用某个源,不用整行注释掉再恢复。

如果你的 APT 版本支持,可以用apt modernize-sources把现有的传统格式自动转换成 deb822,它会把结果写到sources.list.d/下并给原文件加.bak后缀。我一般会先跑一遍看看转换结果,再决定要不要全量迁移——老机器上如果有手工维护的复杂 pin 规则,自动转换有时候会把注释丢掉。

2. 源站方案选型:三种路线怎么选

源站的选择直接决定了你后面几个月的使用体验。我用过的情况大致分三类,各有明确的适用边界,不是"哪个快用哪个"这么简单。

2.1 三种方案的横向对比

方案典型延迟带宽表现同步时效适用场景
官方源直连高,跨区域链路波动大最快,几乎实时排障对照、验证包是否存在
第三方镜像站低稳定,通常有限速滞后数小时到一天日常主力使用
局域网缓存代理极低取决于内网跟随上游多台机器、团队环境

官方源的地址是http.kali.org,它本身是个重定向入口,会把你导向就近的节点。这个地址最大的价值不是速度,而是作为基准:当你在镜像站上遇到 404,第一件事就是把 URI 临时换成官方源跑一次apt update,如果官方源正常、镜像站 404,那基本可以确定是镜像同步滞后,等几小时就好,不用怀疑自己写错了。

2.2 挑镜像站看哪几个指标

我判断一个镜像站能不能长期用,主要看三点。同步频率排第一位,Kali 是滚动源,索引一天可能变好几次,同步间隔超过 12 小时的镜像站很容易出现"索引是新的、包文件还是旧的"这种半同步状态,表现就是Hash Sum mismatch。是否提供 HTTPS排第二位,虽然 APT 有 GPG 签名兜底,传输层加密仍然能防住中间人替换索引导致的信息泄露。第三是是否保留完整组件,有些小镜像只同步main,你写全四个组件就会 404。

具体选哪家我不做推荐,因为镜像的可用性变化很快,去年好用的今年可能就限速了。判断方法很简单:拿三四个候选域名,分别curl -o /dev/null -s -w '%{time_total}\n' <地址>/dists/kali-rolling/Release测一下响应时间,再下载一个中等大小的包看看实际速率。注意测速要在同一时间段做,晚上八点和凌晨三点的结果没有可比性。

这里有个容易忽略的点:镜像站域名后面跟的路径不一定是/kali。有的镜像把 Kali 放在/kali下,有的放在/kali-images之外的独立路径,配置前务必先用浏览器打开<域名>/dists/kali-rolling/Release确认这个文件真实存在、内容是一段带Origin:和Codename:的文本。这一步能省掉 80% 的 404 排查时间。

2.3 主源和快照源千万别混着用

我见过最典型的翻车方式,是把kali-rolling和kali-last-snapshot同时写进配置,想着"新的装不上就装旧的"。这在 APT 的依赖求解器眼里是一场灾难:两个分支里同名包的版本号不同,求解器会倾向于选版本号高的,但依赖关系可能只在低版本里成立,最后给你抛一堆but it is not going to be installed。正确的做法是通过 pin 优先级明确告诉 APT 谁是主力,这部分放到 2.4 讲。

混用还有一个隐蔽后果:kali-last-snapshot的包是冻结的,kali-rolling的依赖却在往前走,一段时间后快照里的包会依赖一个已经被 rolling 淘汰的库版本,这时候你既装不上也卸不掉,只能手工dpkg --force硬来,非常难受。

2.4 用 pin 优先级控制多源共存

如果确实需要多源共存(比如主力用镜像、排障时切官方源),用/etc/apt/preferences.d/下的优先级文件来约束。优先级数值范围是 0 到 1000,默认每个源的优先级是 500,数值越大越优先,Pin-Priority: 1001表示允许降级。

Package: * Pin: origin mirror.example.org Pin-Priority: 900 Package: * Pin: origin http.kali.org Pin-Priority: 100

这段配置的意思是:优先从镜像站取包,官方源只在镜像站没有该包时才作为备选。origin匹配的是Release文件里的Origin字段,不是域名——这点很多人搞错,写域名进去匹配不上。要确认某个源的实际Origin值,apt-cache policy的输出里会直接显示。

强烈建议不要给任何源设置Pin-Priority: 1001,除非你清楚知道自己在做什么。允许降级意味着 APT 可以主动把已装的包换成低版本,在没有完整快照的情况下,这会把系统带到一个谁也没测过的版本组合上。

3. 完整实操:从备份到验证一次走通

下面这套流程我在虚拟机、裸机、容器里都跑过,按顺序执行基本不会出问题。整个过程的思路是:先确认现状,再改配置,改完立刻验证,验证不过立刻回滚。

3.1 动手前先摸清当前状态

三条命令,别跳过:

cat /etc/os-release apt --version dpkg --print-foreign-architectures

第一条看VERSION_ID和VERSION_CODENAME,确认你面对的确实是你要配的那套系统。第二条看 APT 主版本号,决定能不能用 deb822 的高级字段和modernize-sources。第三条最关键——如果输出里有i386,说明系统开了 32 位兼容架构,而 Kali 的仓库里没有binary-i386索引,你会在apt update里看到一长串N: Skipping acquire of configured file 'main/binary-i386/Packages'的提示。这些是N:开头的通知,不影响使用,但会淹没真正的错误。如果确实不需要 32 位支持:

sudo dpkg --remove-architecture i386

接着备份现有配置,这一步是保命的:

sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak.$(date +%F) sudo cp -a /etc/apt/sources.list.d /etc/apt/sources.list.d.bak.$(date +%F)

-a参数保留了权限和时间戳,恢复的时候不会因为属主变化导致 APT 报权限警告。

3.2 写配置文件:传统格式和 deb822 二选一

传统格式的做法是清空重写。这里用一个虚构的镜像域名mirror.example.org做示范,实际使用时替换成你自己测过可用性的域名:

sudo tee /etc/apt/sources.list > /dev/null <<'EOF' deb http://mirror.example.org/kali kali-rolling main contrib non-free non-free-firmware EOF

用tee加 heredoc 而不是echo >>,是为了保证文件被完整覆盖而不是追加——旧的源不清理干净,后面所有诡异问题的根源都在这里。

如果你倾向 deb822(我个人现在默认用这个),就清空sources.list的内容只留注释,然后新建一个.sources文件:

sudo tee /etc/apt/sources.list.d/kali.sources > /dev/null <<'EOF' Types: deb URIs: http://mirror.example.org/kali Suites: kali-rolling Components: main contrib non-free non-free-firmware Architectures: amd64 Signed-By: /usr/share/keyrings/kali-archive-keyring.gpg Enabled: yes EOF

注意sources.list里如果还留着旧的deb行,会和.sources文件里的源同时生效,APT 会合并去重,但如果两处指向不同镜像,行为就不好预测了。所以要么全用传统格式,要么全用 deb822,别搞成半新半旧。

Architectures: amd64这一行在纯 64 位环境里可以省掉,APT 会根据dpkg --print-architecture自动判断。写上它的唯一好处是防止误装其他架构的索引。如果你是 ARM 设备,这里要改成arm64或armhf,写错了会直接导致索引拉不到。

3.3 签名密钥:别再抄 apt-key 的老教程

网上大量 Kali 源配置教程还在教你:

# 不要这样做 wget -q -O - https://xxx/KEY.gpg | sudo apt-key add -

apt-key命令从 APT 2.1 起就被标记为弃用,现在跑会直接输出警告,未来版本会移除。它的根本问题是把密钥放进了全局信任环/etc/apt/trusted.gpg,任何源都能用这把钥匙开门,等于取消了签名校验的隔离性。

正确的做法是把密钥文件放在/usr/share/keyrings/或/etc/apt/keyrings/,然后在源配置里通过Signed-By精确绑定。如果你装的是官方 Kali 镜像,kali-archive-keyring这个包已经预装好了,密钥文件就在/usr/share/keyrings/kali-archive-keyring.gpg,不需要你自己下载。确认一下:

ls -l /usr/share/keyrings/kali-archive-keyring.gpg

文件存在就跳过密钥这一步。如果不存在,说明系统被精简过,需要重新安装kali-archive-keyring包——这时候鸡生蛋的问题来了:没有正确的源就装不了包。解决办法是从安装介质里提取该包手工dpkg -i,或者临时把源指向官方地址,先完成密钥安装再切回镜像。

有些教程会让你在源配置里加[trusted=yes]绕过校验,用于排障可以理解,但排障结束后必须立刻删掉。长期挂着这行等于对着一个没有签名校验的仓库装软件包,风险由你自己承担。

3.4 更新缓存并逐行读输出

sudo apt update

这一步的输出信息量很大,值得一行一行看完,而不是扫一眼没有E:就完事。正常输出大致长这样:

Get:1 http://mirror.example.org/kali kali-rolling InRelease [41.5 kB] Get:2 http://mirror.example.org/kali kali-rolling/main amd64 Packages [20.1 MB] Get:3 http://mirror.example.org/kali kali-rolling/contrib amd64 Packages [112 kB] ... Fetched 68.4 MB in 23s (2.9 MB/s) Reading package lists... Done Building dependency tree... Done Reading state information... Done All packages are up to date.

几个关键信息点:InRelease那一行拉的是带内联签名的 Release 文件,体积很小,如果这一行就失败,说明地址或网络有问题,跟组件无关。后面每个Packages行对应一个组件一个架构,如果某个组件没有出现对应的 Get 行,说明它没被配置或者镜像站缺这个组件。最后的Fetched行给出总下载量和速率,可以拿来估算后续操作耗时。

关于索引体积,这里有个能省流量的小技巧。APT 默认会下载每个组件的翻译文件(Translation-zh_CN、Translation-en等),在 Kali 这种组件多、包数量大的仓库里,翻译文件能占到总下载量的三成以上。如果你不需要英文以外的包描述:

echo 'Acquire::Languages "none";' | sudo tee /etc/apt/apt.conf.d/99no-languages

再跑一次apt update,下载量通常会从 68 MB 降到 45 MB 左右。这个配置对搜索结果没有实质影响,apt search依然能匹配包名和英文描述。

如果要进一步优化弱网环境,可以调这几个参数:

cat <<'EOF' | sudo tee /etc/apt/apt.conf.d/99net-tuning Acquire::Retries "3"; Acquire::http::Timeout "20"; Acquire::https::Timeout "20"; Acquire::http::Pipeline-Depth "5"; EOF

Retries是单个文件下载失败后的重试次数,默认是 0,弱网下偶尔断流就会整个update失败。Pipeline-Depth是 HTTP 管道深度,调大能提升并发效率,但部分镜像站不支持管道,反而会报An error occurred during the signature verification或者干脆超时,所以这个值我一般设 5 试水,不行就回退到默认。

3.5 验证配置是否真的生效

apt update成功不代表配置正确,还得确认 APT 实际使用的是哪个源、哪些分支:

apt-cache policy

这个命令会列出所有已配置源及其优先级。检查两点:一是每个源的release行里o=(Origin)和a=(Architecture)符合预期;二是没有任何源出现1001这种异常优先级。接着看具体包的候选版本来源:

apt-cache policy bash

输出里Installed是当前版本,Candidate是待装版本,下面会列出候选版本来自哪个源。如果Candidate是(none),说明索引没拉到或者组件不全。

最后做一次真实安装验证。挑一个小体积、依赖少的包:

sudo apt install -y htop

能顺利装上就说明整条链路(索引 → 依赖求解 → 包下载 → 签名校验 → 安装)都通了。卸载掉不想要的话sudo apt purge -y htop,但建议留着,下次换源后可以用它快速复测。

如果验证失败需要回滚,直接覆盖回去就行:

sudo cp -a /etc/apt/sources.list.bak.20260101 /etc/apt/sources.list sudo rm -f /etc/apt/sources.list.d/kali.sources sudo apt update

4. 报错排查实录:常见问题逐个拆

apt update的报错信息其实写得非常精确,大部分问题看一眼前缀就能定位到层。下面这张表是我这几年攒下来的对照,按出现频率排序。

4.1 报错前缀与根因对照

报错片段根因层典型原因处理方向
Temporary failure resolvingDNS解析服务不可用、配置错误检查/etc/resolv.conf,用getent hosts <域名>验证
Could not connect/Connection timed out网络端口不通、链路阻断curl -I <URI>直测,确认是全局问题还是单域名问题
404 Not Found配置suite 或组件名写错、路径不对浏览器打开<URI>/dists/<suite>/Release确认
does not have a Release file配置URI 少写了路径层,或镜像站未同步检查 URI 是否漏了/kali这类前缀
NO_PUBKEY签名密钥缺失或未绑定确认 keyring 文件存在,Signed-By路径正确
is not valid yet/expired时间系统时钟偏差过大校对时间,开启时间同步服务
Hash Sum mismatch数据镜像半同步状态、本地缓存损坏先清缓存重试,重复出现则换源
403 Forbidden服务端镜像站限制区域或 UA换镜像,或临时切官方源验证
Certificate verification failedTLSCA 证书包缺失、时间错误检查ca-certificates是否安装
Could not get lock本地另一个包管理进程在跑等待或找出占用进程,切勿直接删锁文件

4.2 NO_PUBKEY 的处理思路

这个报错最常见,也最容易被搜索引擎带到沟里。完整报错长这样:

The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1234567890ABCDEF

它的意思是:APT 拿到了 Release 文件和它的签名,但本地没有对应的公钥,无法验证。处理顺序应该是:先确认Signed-By指向的 keyring 文件是否存在且可读,再确认这个 keyring 里到底有哪些密钥:

gpg --show-keys --with-fingerprint /usr/share/keyrings/kali-archive-keyring.gpg

输出会列出所有公钥的指纹。如果列表里没有报错中那个 16 位短 ID 对应的密钥,说明 keyring 版本太旧,需要更新。注意这里的 16 位短 ID 是长指纹的后 8 字节,用gpg --list-keys对照时不要看错。

网上有个流传很广的"解决方案"是apt-key adv --keyserver ... --recv-keys,这在现在的 APT 上会警告弃用,而且把密钥加到全局信任环会破坏源之间的隔离。正确做法是把密钥导出成独立文件放进/etc/apt/keyrings/,然后在 deb822 的Signed-By里指定,或者传统格式里用[signed-by=/path/to/key.gpg]选项。

传统格式下绑定单个密钥的写法是这样的,注意方括号要紧贴deb后面,中间不能有空格:

deb [signed-by=/etc/apt/keyrings/custom.gpg arch=amd64] http://mirror.example.org/kali kali-rolling main contrib non-free non-free-firmware

4.3 Hash Sum mismatch 的成因与处置

这个报错是最能骗人的,因为它的字面意思是"哈希不匹配",看起来像文件损坏,实际上绝大多数情况是你拿到了一份索引,但索引里记录的包文件在镜像站上已经被替换了。滚动源每天都在更新,镜像站同步有先后,索引和包文件出现短暂不一致是正常现象。

处置顺序我固定这么走:

sudo rm -rf /var/lib/apt/lists/* sudo apt update

先排除本地缓存损坏的可能。如果清完缓存重试依然报同样的错,那就不是本地问题,直接换镜像站,或者等几小时。继续在同一个源上反复重试是浪费时间。

还有一种少数情况是磁盘或内存问题导致的文件损坏,那种通常伴随其他软件也报错,可以用dmesg看有没有 I/O 错误。真遇到了先别怀疑配置,查硬件。

4.4 时间偏移导致的签名有效期错误

系统时钟不准会引发一连串看起来完全无关的报错。典型的:

E: Release file for http://.../dists/kali-rolling/InRelease is not valid yet (invalid for another 3h 12min 5s). Updates for this repository will not be applied.

或者反向的is expired。GPG 签名自带时间戳,APT 会拿系统时间和签名时间比对,偏差超过允许窗口就拒绝。虚拟机挂起后恢复、双系统切换、主板电池没电,都会造成这个现象。检查:

timedatectl status

看System clock synchronized是不是yes。如果是no,先确认时间同步服务在运行,手动纠正一下:

sudo timedatectl set-ntp true

等几秒再看状态。如果环境里根本没有可用的时间同步服务(比如完全隔离的实验网络),那就手工设置一个接近的时间:

sudo date -s "2026-06-01 10:00:00"

手工设时间只在完全离线的环境里用。有网络的情况下手工设时间会掩盖真正的时间同步故障,下次开机又偏了。

5. 长期维护:让这套配置撑得住日常折腾

配置一次容易,让它半年后还能用才是真本事。滚动源的环境里,我踩过的坑基本都集中在"以为配完就不用管了"这个心态上。

5.1 更新节奏:什么时候该全量升级

apt upgrade和apt full-upgrade的区别值得说清楚。前者只升级包,不会为了解决依赖冲突而卸载任何已装包;后者允许卸载和安装新包来满足依赖。在 Kali 这种滚动源上,只有full-upgrade能保证系统一致,因为上游经常出现包合并、拆包、依赖替换,upgrade会把这些包挂起不升,积累几次之后就变成一个谁也不敢碰的僵局。

我的习惯是每周固定跑一次:

sudo apt update sudo apt full-upgrade -y

但有个前提——升级前先看一遍它打算做什么。把-y去掉,先看输出里的The following packages will be REMOVED:这一段,如果里面出现了你吃饭的家伙,就先别升,等几天看上游有没有修复。这个习惯帮我躲过好几次"某工具因为依赖库大版本跳跃直接跑不起来"的事故。

如果升级中途被打断(断电、误关终端),系统可能停在半配置状态。恢复方法:

sudo dpkg --configure -a sudo apt --fix-broken install

这两条要按顺序跑,先让 dpkg 把未完成的配置走完,再让 APT 修依赖断裂。

5.2 需要复现环境时怎么用快照源

做实验经常遇到"这个结果上个月还能复现,现在不行了"的情况,原因就是 rolling 源往前走了。Kali 提供的kali-last-snapshot分支解决的就是这个问题——它指向最近一次发布镜像时的完整软件状态。

用法是在配置文件里替换而不是追加:

deb http://mirror.example.org/kali kali-last-snapshot main contrib non-free non-free-firmware

注意必须先把kali-rolling那行删掉。替换之后apt update && apt full-upgrade,系统会往回降到快照对应的版本。这个过程会大量降级包,输出会很长,不要中途打断。

降级是不可逆的操作,而且会卸载一批依赖不满足的包。只在虚拟机快照或者有完整备份的机器上做,主力工作机不要尝试。做完实验记得切回来,否则你会一直停留在几个月前的软件状态,连不上新版本的依赖。

5.3 保留离线包缓存应对断网

/var/cache/apt/archives/里存着所有下载过的.deb。默认情况下 APT 在安装成功后会把这些包删掉,但如果你经常需要重装或者给多台机器装同样的包,保留它们能省掉大量重复下载:

echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' | sudo tee /etc/apt/apt.conf.d/99keep-debs

目录会越来越大,定期清理用:

sudo apt clean # 全清 sudo apt autoclean # 只删已过期的

更彻底一点的做法是把整个仓库镜像到本地,不过这需要几百 GB 空间和一套同步工具,个人环境用不上,团队内部做统一分发才有价值。小团队可以搞一台机器跑本地缓存代理,其他机器把源指向它,这样一次下载全队受益,升级窗口也不会撞在一起。

5.4 我在长期使用中攒下的几条经验

第一条,任何一次改源之后都要跑apt update确认,别改完就放着。我见过太多"配好了但没验证"的情况,等到一周后要装东西才发现是错的,那时候已经想不起来当时改了什么。改完立刻验证,失败立刻回滚,这个闭环不能省。

第二条,别在源配置里追求"最快"。测速测出来的最快镜像,通常在晚间高峰期掉到最慢。稳定性和可预测性比峰值速率重要得多。我现在的判断标准是:连续三天在不同时段各跑一次apt update,成功率 100%、耗时波动小于 30%,才算通过。

第三条,报错信息里的第一行往往不是根因。APT 处理多个源是并发加排队的,一个源失败可能连带后面的输出全部错位。看报错先找第一条E:,然后从它提到的那个 URI 单独测。把apt update的输出重定向到文件再慢慢看,比在滚动的终端里翻要靠谱:

sudo apt update 2>&1 | tee /tmp/apt-update.log

第四条,版本号变化的时候重新审一遍配置。Kali Linux 2026.2 这类版本更新如果涉及 APT 主版本变化,deb822 的字段支持范围、modernize-sources的可用性都可能变。升级后花五分钟看一眼apt --version和/etc/apt/apt.conf.d/下有没有新增的默认配置,能避免很多"以前好好的现在不行了"的困惑。

最后分享一个排障时的小习惯:我会在/etc/apt/sources.list.d/下留一个99-debug.list.disabled的文件,里面预写好指向官方源的配置行,文件后缀让 APT 忽略它。真遇到疑难问题时,把后缀改回来、把主力源注释掉,一分钟就能完成对照测试,测完再改回去。这个动作做过太多次,比每次重新手写快得多,也不容易写错。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询