내 /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
(Windows에서는 출력 오류를 복사하여 붙여넣을 수 없습니다).
내 시스템에 대한 추가 정보:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
services.list
합계에는 무엇이 포함되어야 하며 proxy
무엇이 문제일까요?
편집 #1: 제가 틀렸다고 생각합니다. /etc/apt/apt.conf
해당 파일의 내용을 이해하는 데 도움이 필요합니다. echo "$http_proxy"
아무것도 반환하지 않으며 아무것도 반환되지 않습니다 env | grep -i proxy
. 설정-->프록시 네트워크가 비활성화로 설정되어 있는데 확인하면 "프록시 HTTP" 필드로 들어가는데 Manual
포트 입니다.proxy-server-ip
8080
편집 #2: 광산 /etc/apt/apt.conf.d/proxy.conf
에는 두 줄이 포함되어 있습니다.
Acquire::http::Proxy "http://proxy_server:port/";
Acquire::https::Proxy "http://proxy_server:port/";
답변1
귀하의 컴퓨터가 말 그대로 이름이 인 호스트를 확인하려고 시도하는 것 같습니다 proxy_server
. ping -c 5 proxy_server
IP가 나열되어 있는지, ICMP를 통해 접속할 수 있는지 확인해 보세요 . 프록시를 사용하려면 /etc/hosts
또는 IP를 확인하고 TCP를 사용하여 나열된 IP에 연결할 grep 'proxy_server' /etc/hosts
수 있는지 확인하세요 . proxy_server
포트는 일반적으로 HTTP의 경우 8080이고 SOCKS의 경우 1080이지만 실제로는 어떤 값으로도 설정할 수 있습니다. 구성 파일에서 포트 정보를 가져오며, 구체적인 단계는 다음과 같습니다.telnet proxy_server [port]
nc proxy_server:[port]
apt
ping이 가능하다면 proxy_server
프록시가 제대로 작동하고 아래 파일에 나열된 올바른 포트에서 수신 대기하는지 확인하세요 /etc/apt
. 이러한 파일을 나열하려면 를 실행하십시오 grep -rl 'proxy_server' /etc/apt
.
프록시를 사용하여 연결하지 않으려면 grep -rl 'proxy_server' /etc/apt
이 문자열이 나열된 파일을 확인하세요. 이 문자열이 포함된 모든 줄을 삭제하려면 루트로 다음 명령을 실행 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_proxy
삭제 https_proxy
명령 .bashrc
:
sudo sed -i '/http_proxy/d;/https_proxy/d' /root/.bashrc
sed -i '/http_proxy/d;/https_proxy/d' ~/.bashrc
참고: 내가 자신의 프로필을 나열하는 이유 ~/.bashrc
는 경우에 따라 루트가 사용자 프로필을 상속하도록 설정되기 때문입니다.
이 줄을 삭제하기 전에 실제로 존재하는지 확인하는 스크립트(줄이 존재하지 않아도 이전 명령은 실패하지 않지만 실제로 출력에 줄을 반환하므로 해당 줄이 어디에 있는지 알 수 있습니다) :
#!/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:프록시에 연결해야 하는 경우 프록시를 그대로 두고 프록시 서버의 실제 IP 또는 호스트 이름과 실제 포트 번호 로 /etc/apt/apt.conf.d/proxy.conf
바꾸세요 . 또는 실제 포트 번호를 바꾸고 실제 프록시 서버의 올바른 IP 주소를 가리키는 항목 을 만들 수도 있습니다.proxy_server
port
port
/etc/hosts
proxy_server
최종 편집:사용자와 채팅한 후 삭제했지만 /etc/apt/apt.conf.d/proxy.conf
여전히 동일한 문제가 발생합니다. 단 proxy_server
, unresolved 대신 unresolved 이므로 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:[email protected]:port/";
6:Acquire::https::Proxy "http://user:[email protected]:port/";
...
이는 기본적으로 와 동일하며 /etc/apt/apt.conf.d/proxy.conf
호스트 이름만 proxy.server
변경됩니다 proxy_server
. 여전히 더미/샘플 설정입니다. 5행과 6행을 주석 처리하고 다시 실행하도록 지시하는 초기 명령 후에 sudo apt update --fix-missing && sudo apt upgrade
그들은 제대로 작동하고 업데이트를 받고 있음을 확인했습니다.
답변2
부분 답변:
터미널 출력은 프록시 서버가 어딘가에 구성되어 있음을 나타냅니다. 완전한 apt 구성을 제공하지 않았으므로 프록시 서버 apt 구성 방법을 참조하십시오(예:여기, 첫 번째 Google 결과) 그런 다음 전체 적절한 구성을 확인하여 /etc/apt
어딘가에 프록시 설정이 있는지 확인하십시오.
그렇지 않은 경우 다음 단계는 sudo env
환경을 살펴보는 것과 같은 작업을 수행하는 것입니다.뒤쪽에 sudo
프록시가 설정되지 않았는지 확인하십시오.
현재 질문에는 디버깅이 필요한 실제 원인을 파악하기 위한 정보가 충분하지 않습니다.
에 프록시 관련 항목이 없고 sudo env
apt 구성 어디에도 프록시 설정이 없는 경우 다음 단계는 man apt.conf
디버그 출력을 보고 활성화하는 것입니다. Debug::Acquire::http
및 로 시작하십시오 Debug::Acquire::https
.
만약 너라면문자 그대로가지다
가져오기::http::proxy "http://사용자:[이메일 보호됨]:포트/";
적절한 구성 파일에서 이것은 전혀 의미가 없습니다. 따옴표 안에 있는 것은 단지 자리 표시자일 뿐입니다.실제사용자 이름, 귀하의실제비밀번호,실제서버의 호스트 이름 및실제포트.
그러니 네가 없으면특정한프록시 서버를 사용해야 하며 사용자 이름, 비밀번호, 서버 주소를 알고 있으면 파일을 삭제하면 됩니다.
proxy.server
현재 apt는 문자 그대로 에 요청을 시도하고 proxy.server
있으며 물론 해당 호스트 이름이 존재하지 않으므로 연결할 수 없으므로 아무것도 다운로드할 수 없습니다.