Apt

apt-get 和鏡像錯誤或無法獲取

  • April 21, 2022

我的/etc/apt/sources.list包含:

deb http://ubuntu.mirror.garr.it/ubuntu/ focal main
deb-src http://ubuntu.mirror.garr.it/ubuntu/ focal main

deb-src http://ubuntu.mirror.garr.it/ubuntu/ focal restricted universe multiverse

deb http://ubuntu.mirror.garr.it/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://ubuntu.mirror.garr.it/ubuntu/ focal-updates main restricted universe multiverse

deb http://ubuntu.mirror.garr.it/ubuntu/ focal-security main restricted universe multiverse
deb-src http://ubuntu.mirror.garr.it/ubuntu/ focal-security main restricted universe multiverse

deb http://ubuntu.mirror.garr.it/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://ubuntu.mirror.garr.it/ubuntu/ focal-backports main restricted universe multiverse

deb http://archive.canonical.com/ubuntu focal partner
deb-src http://archive.canonical.com/ubuntu focal partner

但是當我嘗試與軟體更新相關的任何事情時,例如, sudo apt update --fix-missing && sudo apt upgrade我在終端上得到以下輸出:

   sudo apt update --fix-missing && sudo apt upgrade
Err:1 http://archive.canonical.com/ubuntu focal InRelease
 Temporary failure resolving 'proxy_server'
Err:2 http://ubuntu.mirror.garr.it/ubuntu focal InRelease
 Temporary failure resolving 'proxy_server'
Err:3 http://ubuntu.mirror.garr.it/ubuntu focal-updates InRelease
 Temporary failure resolving 'proxy_server'
Err:4 http://ubuntu.mirror.garr.it/ubuntu focal-security InRelease
 Temporary failure resolving 'proxy_server'
Err:5 http://ubuntu.mirror.garr.it/ubuntu focal-backports InRelease
 Temporary failure resolving 'proxy_server'
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.
W: Failed to fetch http://ubuntu.mirror.garr.it/ubuntu/dists/focal/InRelease  Temporary failure resolving 'proxy_server'
W: Failed to fetch http://ubuntu.mirror.garr.it/ubuntu/dists/focal-updates/InRelease  Temporary failure resolving 'proxy_server'
W: Failed to fetch http://ubuntu.mirror.garr.it/ubuntu/dists/focal-security/InRelease  Temporary failure resolving 'proxy_server'
W: Failed to fetch http://ubuntu.mirror.garr.it/ubuntu/dists/focal-backports/InRelease  Temporary failure resolving 'proxy_server'
W: Failed to fetch http://archive.canonical.com/ubuntu/dists/focal/InRelease  Temporary failure resolving 'proxy_server'
W: Some index files failed to download. They have been ignored, or old ones used instead.
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.

我嘗試安裝的任何東西都會出現類似的問題:

$ sudo apt-get install indicator-cpufreq
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package indicator-cpufreq

嘗試從Software update應用程序更改伺服器卡在記憶體刷新中,或最終返回類似於Failed to fetch one(視窗不允許我複制和粘貼輸出錯誤)的錯誤。

有關我的系統的更多資訊:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal

什麼應該進入services.listand proxy,問題可能是什麼?

編輯#1:我認為我/etc/apt/apt.conf錯了,我希望能在該文件中提供一些幫助。echo "$http_proxy"不返回任何東西,也不返回任何東西env | grep -i proxy。設置 –> 代理網路設置為禁用,但如果我檢查Manual我進入proxy-server-ip“代理 HTTP”欄位並且8080是埠。

編輯#2:我的/etc/apt/apt.conf.d/proxy.conf包含兩行:

Acquire::http::Proxy "http://proxy_server:port/";
Acquire::https::Proxy "http://proxy_server:port/";

看起來您的機器正在嘗試解析一個名為proxy_server. 嘗試ping -c 5 proxy_server查看它是否列出了 IP,以及是否可以通過 ICMP 訪問它。如果您確實想要使用代理,請在/etc/hosts或中檢查該 IP grep 'proxy_server' /etc/hosts,並確保您可以使用或proxy_server通過 TCP連接到列出的 IP 。埠通常是 HTTP 的 8080 或 SOCKS 的 1080,但實際上可以設置為任何值。您將從配置文件中獲取埠資訊,詳細步驟如下。telnet proxy_server [port]``nc proxy_server:[port]``apt

如果可以 pingproxy_server通,請確保代理正常工作並偵聽您在任何文件中列出的正確埠/etc/apt。要列出這些文件,請執行grep -rl 'proxy_server' /etc/apt.

如果您不打算使用代理進行連接,那麼grep -rl 'proxy_server' /etc/apt查看哪些文件列出了該字元串。要刪除包含該字元串的所有行,請以 root 身份執行以下命令grep -rl 'proxy_server' /etc/apt | xargs -I file sed -i '/proxy_server/d' file,然後重試。

如果輸出中沒有列出任何文件grep,則執行sudo http_proxy= https_proxy= apt update --fix-missing && sudo http_proxy= https_proxy= apt upgrade,然後重試。

如果可行,那麼您正在環境中的某處設置http_proxy和/或變數,很可能是在 中,但實際上,這些變數可以設置在各種獲取源的文件中)。有關這些文件的更多資訊,請查看此答案。要查看這些變數是否設置在 中,您可以執行以下命令來刪除它們,或者執行下面的腳本,這樣會更安全一些。https_proxy``/root/.bashrc``/root/.bashrc

立即刪除http_proxyhttps_proxy從中刪除的命令.bashrc

sudo sed -i '/http_proxy/d;/https_proxy/d' /root/.bashrc
sed -i '/http_proxy/d;/https_proxy/d' ~/.bashrc

注意:我列出您自己的原因~/.bashrc是因為有時在某些情況下,root 設置為繼承使用者的配置文件。

在嘗試刪除它們之前檢查這些行是否確實存在的腳本(請注意,如果這些行不存在,前面的命令不會失敗,但這實際上會在輸出中返回這些行,以便您知道它們存在的位置:

#!/bin/sh

if grep -E '(http_proxy)|(https_proxy)' /root/.bashrc; then
 sudo sed -i '/http_proxy/d;/https_proxy/d' /root/.bashrc
fi
if grep -E '(http_proxy)|(https_proxy)' ~/.bashrc; then
 sed -i '/http_proxy/d;/https_proxy/d' ~/.bashrc
fi

或者,如果您更喜歡可以複製/粘貼的單線:

if grep -E '(http_proxy)|(https_proxy)' /root/.bashrc; then sudo sed -i '/http_proxy/d;/https_proxy/d' /root/.bashrc; fi; if grep -E '(http_proxy)|(https_proxy)' ~/.bashrc; then sed -i '/http_proxy/d;/https_proxy/d' ~/.bashrc; fi

**重要提示:**如果您在這些.bashrc文件中直接有任何用於切換代理的函式或別名,它將刪除任何包含http_proxy或的行https_proxy。在您的情況下,將上述命令/腳本中的http_proxy和替換為.https_proxy``proxy_server

您的特定單線將如下所示:

if grep 'proxy_server' /root/.bashrc; then sudo sed -i '/proxy_server/d' /root/.bashrc; fi; if grep 'proxy_server' ~/.bashrc; then sed -i '/proxy_server/d' ~/.bashrc; fi

**編輯:**我根據您的評論更正了該grep命令,在重新閱讀您的問題後,如果您根本不想連接到代理,只需mv /etc/apt/apt.conf.d/proxy.conf /tmp/重新執行該命令,它應該可以正常工作。如果這是唯一出現的地方proxy_server,那麼我不確定為什麼刪除這些行不起作用,但它可能會proxy.conf被記憶體在某個地方。通過完全刪除文件,您的代理設置可能會重新初始化。

問題的實際根源是您在 中具有虛擬/範例設置/etc/apt/apt.conf.d/proxy.conf,這實際上是在嘗試解析proxy_server埠上的主機port。如您所知,proxy_server它實際上並不存在,並且port必須是實際的埠號才能apt成功連接。

通過刪除該proxy.conf文件(根本不需要該文件apt,並且預設情況下通常不存在),您應該能夠解決此問題。

**編輯#2:**如果您確實需要連接到代理,那麼只需保留/etc/apt/apt.conf.d/proxy.conf並替換proxy_server為代理伺服器的實際 IP 或主機名以及port實際埠號。或者,您可以替換port為實際的埠號並創建一個條目/etc/hostsproxy_server指向實際代理伺服器的正確 IP 地址。

**最終編輯:**與使用者聊天后,他們刪除了/etc/apt/apt.conf.d/proxy.conf但仍然遇到同樣的問題,除了沒有解決proxy_server,它沒有解決proxy.server,這讓我相信代理設置是在另一個位置設置的。

我讓他們跑grep -rlE 'Acquire::.*::Proxy' /etc/apt/,它回來了/etc/apt/apt.conf

然後我指示他們執行grep -nE 'Acquire::.*::Proxy' /etc/apt/apt.conf,它返回以下內容:

...
5:Acquire::http::Proxy "http://user:password@proxy.server:port/";
6:Acquire::https::Proxy "http://user:password@proxy.server:port/";
...

這基本上與 相同/etc/apt/apt.conf.d/proxy.conf,只是主機名是proxy.server而不是proxy_server。仍然是虛擬/範例設置。在指示他們註釋掉第 5 行和第 6 行並重新執行 的初始命令後sudo apt update --fix-missing && sudo apt upgrade,他們確認它工作正常並獲取更新。

引用自:https://unix.stackexchange.com/questions/699410