Kali Linux国内镜像源配置全攻略:解决无法定位软件包与加速更新
1. 项目概述:为什么Kali Linux的源配置如此关键?
如果你刚开始接触Kali Linux,或者从其他Linux发行版转过来,遇到的第一个拦路虎很可能就是“无法定位软件包”。这个报错信息冰冷又直接,常常出现在你满心欢喜地敲下sudo apt update && sudo apt upgrade -y,或者想安装一个心仪的工具(比如nmap或metasploit-framework)之后。屏幕上一行E: Unable to locate package足以让新手瞬间懵圈。这背后的核心原因,十有八九是软件源(Repository)没有正确配置。
Kali Linux基于Debian,使用APT(Advanced Package Tool)作为包管理器。APT的工作原理是连接到一个或多个软件源服务器,从服务器上获取软件包的列表和文件。默认情况下,Kali安装后指向的是官方的、位于海外的软件源。对于国内用户而言,由于众所周知的网络环境问题,连接这些海外源的速度可能极慢,甚至完全无法连接。这直接导致了APT无法获取到最新的软件包列表,自然也就“无法定位软件包”了。
因此,将软件源更换为国内的镜像源,是几乎所有国内Kali用户在安装系统后要做的第一件事。这不仅仅是解决“无法定位软件包”的问题,更是将软件下载速度从几KB/s提升到几MB/s的关键操作,能极大提升后续学习、测试和工作的效率。今天,我就结合自己多年使用Kali的经验,为你拆解配置国内源的完整流程,并分享5种不同场景下的解决方法,确保你无论遇到何种情况,都能让APT“跑”起来。
2. 核心需求解析:不只是换源那么简单
表面上看,我们的需求就是“换一个能用的源”。但深入下去,你会发现这里面有几个层次:
- 基础可用性需求:首要目标是让
apt update和apt install命令能正常工作,不再报错。这是生存需求。 - 速度与稳定性需求:在可用的基础上,我们需要选择延迟低、带宽足、同步及时的国内镜像站,让软件更新和安装过程快速稳定。
- 安全性与完整性需求:软件源必须可信,提供的软件包要经过签名验证,确保没有被篡改。同时,源提供的软件包版本要与Kali官方保持基本同步,避免因版本滞后导致依赖问题或安全漏洞。
- 场景适应性需求:不同的使用场景(如全新安装、旧系统修复、特定网络环境)可能需要不同的配置方法。我们需要一套组合拳,而不是单一方案。
- 问题排查能力:当换源后依然出现问题,我们需要有能力进行诊断,定位问题是出在源地址、网络、密钥还是系统配置上。
基于这些需求,单纯的“替换一个源地址”是远远不够的。我们需要一个系统性的解决方案,涵盖源的选择、配置、验证和故障排除全流程。下面,我们就从最核心的配置文件讲起。
3. 核心配置文件详解:/etc/apt/sources.list
APT的软件源配置,核心就在/etc/apt/sources.list这个文件里。它定义了系统从哪里获取软件包。在深入操作前,理解这个文件的格式至关重要。
每一行有效的源配置,通常遵循以下格式:
deb [arch=架构] 镜像源地址 发行版代号 组件类别或者对于包含源码包的源:
deb-src [arch=架构] 镜像源地址 发行版代号 组件类别deb/deb-src:deb表示二进制软件包,deb-src表示源代码包。对于绝大多数用户,只需要deb。[arch=架构]: 可选,指定CPU架构,如amd64,arm64,i386。通常不需要手动指定,APT会自动处理。- 镜像源地址: 软件源服务器的URL,例如
https://mirrors.aliyun.com/kali。 - 发行版代号: Kali的发行版代号是滚动的,但通常使用
kali-rolling。这是Kali特有的,区别于Debian的stable,testing等。 - 组件类别: 定义软件包的类型。Kali主要包含以下组件:
main: 官方维护的自由及开源软件。contrib: 依赖非自由软件的自由软件。non-free: 非自由软件。
一个典型的Kali国内源配置行看起来是这样的:
deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib注意:Kali是一个专注于渗透测试和安全研究的发行版,其软件仓库的构成与普通Debian不同。务必确保你使用的镜像站提供了完整的Kali仓库,而不仅仅是Debian仓库。错误的源配置是导致各种依赖问题和“无法定位软件包”的常见原因。
4. 主流国内镜像源推荐与选择策略
国内有多个高校和企业提供了Kali的镜像服务。选择哪个,需要考虑地理位置、同步频率和带宽。以下是我长期使用下来比较稳定的几个选择,你可以根据你的网络情况测试后决定。
1. 阿里云镜像 (mirrors.aliyun.com)
- 地址:
https://mirrors.aliyun.com/kali - 特点: 速度非常快,覆盖全国CDN,同步及时(通常延迟在几小时内)。是我个人最常用也最推荐的首选源。无论是电信、联通还是移动网络,表现都很出色。
2. 清华大学镜像 (mirrors.tuna.tsinghua.edu.cn)
- 地址:
https://mirrors.tuna.tsinghua.edu.cn/kali - 特点: 老牌高校镜像,稳定性极佳,教育网用户访问速度有优势。同步也很及时。
3. 华为云镜像 (mirrors.huaweicloud.com)
- 地址:
https://mirrors.huaweicloud.com/kali - 特点: 华为云的资源,带宽充足,速度稳定。作为备选方案非常可靠。
4. 网易镜像 (mirrors.163.com)
- 地址:
http://mirrors.163.com/kali(注意是HTTP) - 特点: 历史悠久的镜像站,但部分用户反馈其Kali源同步可能偶有延迟。可以作为测试选项。
5. 中科大镜像 (mirrors.ustc.edu.cn)
- 地址:
https://mirrors.ustc.edu.cn/kali - 特点: 同样是非常优秀的高校镜像,在华东地区访问速度很快。
选择策略:
- 第一步:优先尝试阿里云或清华大学镜像。这两个是覆盖最广、问题最少的。
- 第二步:如果某个源在
apt update时速度慢或出现错误,可以尝试更换为另一个。你可以同时配置多个源,APT会自动选择可用的。 - 第三步:使用
curl -I https://mirrors.xxx.com/kali或ping mirrors.xxx.com简单测试一下到各个镜像站的网络连通性和延迟,作为参考。
5. 方法一:图形化界面配置(适合纯新手)
如果你对命令行有畏惧感,或者刚刚安装好Kali,桌面环境还不想离开鼠标,那么图形化界面是最友好的方式。Kali默认的桌面环境(如XFce)提供了软件源配置工具。
操作步骤:
- 点击桌面左下角的“开始菜单”(或按
Super/Windows键)。 - 在搜索框中输入
Software & Updates并打开。这个工具在Debian/Ubuntu系列中通用。 - 打开后,切换到“Other Software”选项卡。你会看到已有的软件源列表,其中很可能包含官方的
http.kali.org源。 - 为了安全起见,建议先取消勾选所有已有的源(尤其是那些连接不畅的官方源)。
- 点击底部的“Add...”按钮。
- 在弹出的对话框中,完整地输入一行国内源地址。例如:
deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib - 点击“Add Source”,然后输入你的用户密码进行认证。
- 重复第5-7步,可以添加多个源(如把清华源也加上)。
- 添加完毕后,点击“Close”。系统会提示你“可用的软件信息已过时”,点击“Reload”。
- 这时,系统就会在后台执行
apt update,从你新添加的源获取软件列表。等待其完成即可。
实操心得:
- 图形化工具的本质是帮你修改
/etc/apt/sources.list和/etc/apt/sources.list.d/目录下的文件。对于新手来说,避免了直接编辑配置文件的语法错误风险。 - 但是,这个工具有时在Kali上可能不如在Ubuntu上稳定。如果点击“Reload”后长时间没反应,或者出现错误,建议还是使用命令行方法,更直接可控。
- 通过图形界面添加的源,会以单独的
.list文件形式存放在/etc/apt/sources.list.d/目录下,方便管理。
6. 方法二:命令行直接编辑(最常用、最推荐)
这是最经典、最直接,也是我最推荐给所有用户的方法。通过命令行编辑器修改/etc/apt/sources.list文件,一劳永逸。
操作步骤:
备份原文件(重要!):在修改任何系统关键配置前,备份是好习惯。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak使用文本编辑器打开配置文件:我习惯使用
nano,因为它简单直观。当然,vim也可以。sudo nano /etc/apt/sources.list清空或注释原有内容:打开文件后,你会看到以
deb开头的几行,指向http.kali.org。你有两种处理方式:- 方式A(推荐):在每一行开头加上
#号将其注释掉。这样如果新源有问题,你可以快速恢复。 - 方式B:直接删除所有内容。更干净利落。
- 方式A(推荐):在每一行开头加上
添加国内镜像源:在文件末尾,添加新的源行。强烈建议至少添加两个不同的源,以防某个源临时故障。例如,添加阿里云和清华源:
# 阿里云 Kali 镜像源 deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib # 清华大学 Kali 镜像源 deb https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib注意:
kali-rolling是发行版代号,main non-free contrib是组件,一个都不能少,顺序也不重要。保存并退出:
- 在
nano中:按Ctrl + O写入,回车确认,再按Ctrl + X退出。 - 在
vim中:按Esc,输入:wq,回车。
- 在
更新软件包列表:这是让配置生效的关键一步。
sudo apt update这个命令会访问你新配置的源服务器,下载最新的软件包列表信息。如果看到
Hit(命中)、Get(获取)和Fetched(已获取)等字样,并且最后没有Err(错误)或Ign(忽略),就说明源配置成功了。进行一次升级(可选但推荐):配置好源后,立即进行一次全面升级,可以确保系统所有软件都更新到新源提供的最新版本。
sudo apt upgrade -y
注意事项:
- 确保你的网络连接正常。如果公司或学校网络有特殊限制,可能仍需配置代理。
- 如果
sudo apt update出现Certificate verification failed或The following signatures couldn‘t be verified等错误,可能是因为你的系统时间不正确,或者缺少镜像站的SSL证书。可以先尝试sudo apt install ca-certificates更新证书,并检查系统时间date。 - 命令中的
-y参数表示自动回答“yes”,在升级过程中不需要手动确认。在脚本中或确定要升级时使用很方便。
7. 方法三:使用自动化脚本(高效但需谨慎)
对于需要频繁部署Kali虚拟机或容器的用户,手动编辑效率太低。这时,可以编写或使用一个简单的Shell脚本来自动化这个过程。
一个基础的换源脚本示例 (change_kali_source.sh):
#!/bin/bash # 备份原文件 echo “[*] Backing up original sources.list...” sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak.$(date +%Y%m%d%H%M%S) # 定义要写入的源内容 SOURCE_CONTENT=“# Kali Linux 国内镜像源配置 # 阿里云镜像 deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib # 清华大学镜像 deb https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib # 华为云镜像 (备用) # deb https://mirrors.huaweicloud.com/kali kali-rolling main non-free contrib” # 清空并写入新的源配置 echo “[*] Writing new sources.list...” echo “$SOURCE_CONTENT” | sudo tee /etc/apt/sources.list > /dev/null # 更新软件包列表 echo “[*] Updating package lists from new sources...” sudo apt update # 询问是否立即升级 read -p “Do you want to perform a full upgrade now? (y/N): ” -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo “[*] Starting full upgrade...” sudo apt upgrade -y echo “[*] Upgrade completed.” else echo “[*] Skipped upgrade. You can run ‘sudo apt upgrade‘ later.” fi echo “[+] Source configuration script finished.”使用方法:
- 将上面的代码保存到一个文件中,例如
change_kali_source.sh。 - 给脚本添加执行权限:
chmod +x change_kali_source.sh - 以root权限或在sudo下运行:
sudo ./change_kali_source.sh
脚本解析与注意事项:
#!/bin/bash:指定脚本解释器。cp ... .bak.$(date ...):备份时在文件名后加上时间戳,避免覆盖旧的备份。echo “$SOURCE_CONTENT” | sudo tee ...:使用tee命令配合sudo将内容写入受保护的文件/etc/apt/sources.list。> /dev/null是为了不将tee的输出显示到终端。read -p ...:交互式询问用户是否立即升级,增加了脚本的灵活性。- 安全警告:永远不要直接运行从不可信来源获取的Shell脚本。在运行任何脚本前,最好用
cat或文本编辑器检查其内容,确保它没有执行恶意操作(如删除文件、添加后门等)。上面的脚本是透明且无害的,但这是一个必须养成的好习惯。
8. 方法四:修复因密钥错误导致的更新失败
有时候,即使源地址配置正确,执行sudo apt update时仍会报错,常见错误之一是:
W: GPG error: https://mirrors.xxx.com/kali kali-rolling InRelease: The following signatures couldn‘t be verified because the public key is not available: NO_PUBKEY XXXXXXXXXXXXXXXX E: The repository ‘https://mirrors.xxx.com/kali kali-rolling InRelease‘ is not signed.这表示系统缺少对应软件源的GPG公钥,无法验证从该源下载的软件包的完整性和真实性。
解决方法:手动添加缺失的公钥。
从错误信息中获取密钥ID:错误信息中的
NO_PUBKEY后面那一串16位的十六进制数就是密钥ID,例如ED444FF07D8D0BF6。使用
apt-key命令添加密钥(传统方法,但已逐渐被弃用):sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ED444FF07D8D0BF6这条命令从Ubuntu的密钥服务器获取指定ID的密钥并添加到本地信任库。但注意,
apt-key命令在未来版本的Debian/APT中可能会被移除。更现代、推荐的方法:将密钥文件下载到指定目录:
- 首先,你需要知道Kali官方归档密钥的指纹。对于
kali-rolling,常用的密钥指纹是ED444FF07D8D0BF6。 - 你可以从一个可信的源(如Kali官方文档或镜像站)下载这个密钥的ASCII文件。或者,使用
gpg命令从密钥服务器获取并转换:gpg --keyserver keyserver.ubuntu.com --recv-keys ED444FF07D8D0BF6 gpg --output /etc/apt/trusted.gpg.d/kali-archive-keyring.gpg --export ED444FF07D8D0BF6 - 更简单的方法是,直接安装Kali的官方密钥包(如果源暂时不可用,可以从其他能用的系统拷贝):
# 假设你已经从别处下载了 kali-archive-keyring_xxxx_all.deb 文件 sudo dpkg -i kali-archive-keyring_xxxx_all.deb
- 首先,你需要知道Kali官方归档密钥的指纹。对于
添加密钥后,再次更新:
sudo apt update此时,之前的GPG错误应该消失了。
实操心得:
- 密钥错误在更换为某些第三方镜像站时可能出现,因为这些镜像站需要正确配置并发布自己的镜像签名,或者你的系统缺少对应的密钥环包。
- 最一劳永逸的解决办法是:在配置源之前,先确保系统安装了
kali-archive-keyring这个包。在Kali的ISO安装镜像中通常已经包含。如果是在Docker或其他最小化环境中,可能需要手动安装。 - 如果上述方法都无效,可以尝试临时使用
sudo apt update --allow-insecure-repositories或sudo apt update --allow-unauthenticated,但这会降低安全性,仅作为临时诊断手段,不推荐长期使用。
9. 方法五:处理特定网络环境与代理配置
在某些企业或校园网络内,访问外网或特定端口可能需要配置HTTP/HTTPS代理。即使配置了国内源,如果网络策略要求走代理,那么APT也需要知道如何通过代理连接。
为APT配置代理有两种主要方式:
1. 临时通过环境变量设置(适用于单次会话): 在运行apt命令前,设置http_proxy和https_proxy环境变量。
export http_proxy=“http://your-proxy-server:port” export https_proxy=“http://your-proxy-server:port” # 注意,很多代理服务器http和https用同一个地址和端口 sudo -E apt update-E参数告诉sudo保留当前用户的环境变量(包括刚设置的代理变量)。
2. 创建APT的专用配置文件(永久生效): 创建一个文件/etc/apt/apt.conf.d/80proxy(文件名可以自定义,通常以数字开头决定读取顺序),并写入以下内容:
Acquire::http::Proxy “http://your-proxy-server:port”; Acquire::https::Proxy “http://your-proxy-server:port”;如果你的代理服务器需要认证,格式如下:
Acquire::http::Proxy “http://username:password@proxy-server:port”; Acquire::https::Proxy “http://username:password@proxy-server:port”;重要安全提示:将明文密码存储在系统文件中存在安全风险。如果可能,尽量使用无需认证的代理,或通过其他更安全的方式(如配置
cntlm等本地代理中转)处理认证。
3. 针对sources.list中特定源设置代理: 如果你只想让某个特定的镜像站走代理,而其他站直连,可以在sources.list中单独指定:
deb [arch=amd64] http://your-proxy-server:port/https://mirrors.aliyun.com/kali kali-rolling main non-free contrib但这种写法不常用,且依赖APT版本支持。
网络问题排查清单: 当apt update失败时,可以按以下顺序排查:
- 检查网络连通性:
ping mirrors.aliyun.com或curl -I https://mirrors.aliyun.com/kali。如果不通,是网络层问题。 - 检查DNS解析:
nslookup mirrors.aliyun.com。如果无法解析,检查/etc/resolv.conf文件中的DNS服务器设置。 - 检查防火墙/安全组:确保你的虚拟机或主机防火墙没有阻止对
443(HTTPS) 或80(HTTP) 端口的出站连接。 - 检查代理设置:确认你是否处于需要代理的网络环境,并正确配置了APT代理。
- 检查源地址拼写:仔细核对
/etc/apt/sources.list中的URL,一个字符错误都会导致失败。 - 尝试使用HTTP协议:极少数情况下,镜像站的HTTPS服务可能临时有问题。可以尝试将
https://改为http://(安全性降低,仅作测试)。例如:deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
10. 验证与测试:如何确认换源成功?
完成上述任何一种方法的配置后,不能仅仅看到apt update没有报错就认为万事大吉。我们需要进行更彻底的验证。
验证步骤:
执行全面更新:
sudo apt update sudo apt full-upgrade -yfull-upgrade比upgrade更彻底,会处理因依赖关系变化而需要安装或删除的软件包。观察整个过程是否流畅,下载速度是否显著提升(从几KB/s到几MB/s)。测试安装一个经典工具: 选择一个Kali标志性的工具进行安装测试,例如
nmap(如果尚未安装)。sudo apt install nmap -y观察是否能快速定位到软件包并顺利下载安装。
检查软件包来源: 安装完成后,可以使用
apt命令查看软件包的详细信息,确认其来源是你配置的镜像站。apt policy nmap在输出中,你会看到类似这样的信息:
nmap: 已安装:7.94+dfsg1-1 候选版本:7.94+dfsg1-1 版本列表: 7.94+dfsg1-1 500 500 https://mirrors.aliyun.com/kali kali-rolling/main amd64 Packages *** 7.94+dfsg1-1 500 500 https://mirrors.aliyun.com/kali kali-rolling/main amd64 Packages 100 /var/lib/dpkg/status注意看
https://mirrors.aliyun.com/kali,这明确显示了nmap这个包是从阿里云镜像站获取的。检查源列表状态:
sudo apt update成功的更新输出,应该显示大量的
Hit和Get,并且最后一行是All packages are up to date.或X packages can be upgraded. Run ‘apt list --upgradable‘ to see them.,没有Err或Ign错误。
11. 进阶技巧与深度优化
对于追求极致效率和稳定性的用户,还可以进行以下优化:
1. 选择性启用源码包和特定架构源: 除非你需要查看或编译软件源码,否则deb-src源可以不加,以节省更新列表的时间。同样,如果你的系统是纯64位(amd64),且不需要安装32位(i386)软件,可以在源行中指定架构,避免下载不必要的索引。
deb [arch=amd64] https://mirrors.aliyun.com/kali kali-rolling main non-free contrib2. 使用apt-fast加速下载:apt-fast是一个封装了aria2多线程下载器的脚本,可以显著提升apt install时的下载速度,尤其适合安装大型软件包或更新大量软件时。
- 安装:
sudo apt install aria2 apt-fast - 配置:安装过程中会提示你选择最大连接数(通常16或20即可),并确认替换
apt和apt-get命令(建议选择“否”,保留原命令,通过显式调用apt-fast来使用)。 - 使用:之后就可以用
sudo apt-fast update和sudo apt-fast install <package>来享受多线程加速了。
3. 定期清理APT缓存: APT会缓存下载的.deb包文件,位于/var/cache/apt/archives/。长期不清理会占用大量磁盘空间。
- 查看缓存大小:
du -sh /var/cache/apt/archives/ - 清理已安装软件的缓存包:
sudo apt clean(删除所有缓存包) - 更温和的清理:
sudo apt autoclean(只删除不再能下载的、过时的缓存包)
4. 使用needrestart智能处理服务重启: 在执行大规模系统升级 (apt full-upgrade) 后,一些核心库(如libc)或服务(如ssh,dbus)被更新,可能需要重启才能生效。needrestart工具可以检查并提示你需要重启哪些服务或整个系统。
- 安装:
sudo apt install needrestart - 在
apt upgrade后,它会自动运行并给出交互式提示。
12. 常见问题与排查技巧实录
即使按照指南操作,你也可能会遇到一些“坑”。这里记录了我遇到过的典型问题及解决方法。
问题1:sudo apt update时报错Temporary failure resolving ‘mirrors.aliyun.com‘
- 现象:无法解析镜像站域名。
- 原因:DNS服务器配置问题,或者
/etc/resolv.conf文件被重置(在虚拟机或某些网络管理工具下常见)。 - 解决:
- 检查
/etc/resolv.conf文件:cat /etc/resolv.conf。看里面是否有nameserver配置(如8.8.8.8,114.114.114.114)。 - 如果没有或不对,可以临时修改:
sudo nano /etc/resolv.conf,添加一行nameserver 114.114.114.114。 - 永久修改DNS需要更改网络管理器配置(如
/etc/network/interfaces或Netplan/NetworkManager配置),这取决于你的系统网络管理方式。
- 检查
问题2:更新列表时速度非常慢,甚至卡住
- 现象:
apt update在某个源上卡在0% [Connecting to mirrors.xxx.com]或Waiting for headers。 - 原因:网络连接到该镜像站不稳定,或者该镜像站负载过高。
- 解决:
- 按
Ctrl+C中断。 - 在
/etc/apt/sources.list中注释掉(行首加#)那个响应慢的源。 - 添加另一个备选源(如从阿里云换成清华源)。
- 再次运行
sudo apt update。
- 按
问题3:安装软件时提示“依赖关系无法满足”
- 现象:
sudo apt install metasploit-framework报错,提示缺少某个依赖包,但那个包明明应该存在。 - 原因:最常见的原因是软件源没有完全同步,或者你混合了不同版本的源(如同时使用了
kali-rolling和旧的kali-last-snapshot)。 - 解决:
- 确保
/etc/apt/sources.list中所有源的行都使用kali-rolling作为发行版代号。 - 运行
sudo apt update和sudo apt upgrade确保系统完全更新到最新状态。 - 尝试使用
sudo apt install -f修复损坏的依赖关系。 - 如果问题依旧,可以尝试使用
aptitude这个更智能的包管理器,它能提供更复杂的依赖解决方案:sudo aptitude install metasploit-framework。
- 确保
问题4:执行apt upgrade后,系统出现异常或某些工具无法启动
- 现象:更新后,特别是进行了
full-upgrade,某些图形界面工具打不开,或命令行工具报错链接库找不到(如error while loading shared libraries: libxxx.so.x: cannot open shared object file)。 - 原因:大规模升级可能更新了核心动态链接库,但某些旧版本的软件或第三方未通过包管理的软件仍依赖旧库。
- 解决:
- 重启系统:这是最简单也最有效的方法,可以让所有运行中的服务和应用重新加载新的库文件。
- 如果重启后问题依旧,尝试重新安装出问题的软件:
sudo apt install --reinstall <package-name>。 - 检查缺失的库文件:使用
ldd /path/to/your/binary查看可执行文件依赖哪些库,再用find / -name libxxx.so*或dpkg -S libxxx.so查找库文件被哪个包提供,并重新安装该包。
问题5:在Docker容器中运行Kali,如何配置源?
- 现象:在
kalilinux/kali-rollingDocker镜像中,apt update失败。 - 原因:Docker镜像为了保持最小化,初始的
sources.list可能不完整或指向官方源。 - 解决:进入容器后,操作与方法二完全相同。
更佳实践是在构建自己的Dockerfile时,就写好源配置:docker exec -it <container_name> bash apt update # 此时很可能失败 cp /etc/apt/sources.list /etc/apt/sources.list.bak echo “deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib” > /etc/apt/sources.list apt update # 此时应该成功FROM kalilinux/kali-rolling RUN echo “deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib” > /etc/apt/sources.list RUN apt update && apt upgrade -y
