大家有沒有遇到過這樣的情況:你準(zhǔn)備在本地跑某個開源項目,你找到了這個開源項目的鏡像名稱,也將這個鏡像 docker pull 下來了,但是在運行的過程中,你發(fā)現(xiàn)容器中需要安裝某些軟件才能夠繼續(xù)……
本來以為可以通過簡單的安裝命令即可安裝好軟件,然而卻報下面類似的錯誤:


起初,我還以為是系統(tǒng)鏡像源的問題,但是當(dāng)我更換了鏡像源了之后,發(fā)現(xiàn)依舊還是這個錯誤,??
問題原因
最后問了一下 AI 才知道這是因為:
- 系統(tǒng)是 Debian 10 (Buster)。
- Debian Buster 已經(jīng)停止官方支持 (End-of-Life, EOL)。
Debian 官方已將 Buster 版本的軟件包從主服務(wù)器 (deb.debian.org) 移除,轉(zhuǎn)移到了 存檔服務(wù)器 (archive.debian.org)。所以,現(xiàn)在使用 apt 就會找不到文件。
解決方案
1. 先備份原配置,免得改亂了,無法恢復(fù)
cp /etc/apt/sources.list /etc/apt/sources.list.bak
2. 批量替換為存檔源:
直接使用 sed 命令進(jìn)行批量替換,將所有源地址換成存檔服務(wù)器地址。
# 將主源和安全源地址都替換為存檔服務(wù)器地址
sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list
sed -i 's/security.debian.org/archive.debian.org/g' /etc/apt/sources.list
3. 清理廢棄的更新源:
存檔服務(wù)器通常沒有 -updates 或 /updates 這些子目錄,我們把這些引用清理掉,避免再次報錯。
# 移除所有 *-updates 相關(guān)的行
sed -i '/buster-updates/d' /etc/apt/sources.list
sed -i '/buster\/updates/d' /etc/apt/sources.list
4. 重新嘗試安裝 Git:
配置修改完成后,再次更新并安裝 Git。這次,apt 就會向正確的存檔服務(wù)器請求文件了!
# 重新更新索引,確認(rèn)不再報錯 404
apt update
# 成功安裝 Git!
apt install -y git
# 驗證安裝是否成功
git --version

這樣問題就解決了~
不知道容器所用的系統(tǒng)
不確定容器使用的什么系統(tǒng),就不方便使用安裝命令,當(dāng)然了,你也完全可以敲敲 apt 、yum …… 看這些安裝軟件的工具存不存在,如果存在則直接使用這些命令進(jìn)行安裝,但是我還是建議你先查看清楚使用的是什么系統(tǒng)為好。
# 嘗試查看發(fā)行版信息,這是最準(zhǔn)確的方法
cat /etc/os-release

通過查看 ID 字段,就可以看出來是什么系統(tǒng)。
希望以后你遇到類似的問題的時候,也可以避避坑吧~