为什么执行 yum update 时出现 curl 错误

为什么执行 yum update 时出现 curl 错误

我在实验室工作。这个实验室里有很多台 Windows PC,我正在使用其中的一台。

还有一个代理服务器,可以让所有电脑都连接到互联网。

现在,我有一台 Red Hat 7 机器,它连接到我的电脑,这意味着它没有连接到代理服务器。

|          |                  |           |
| Internet |<--- proxy server |<--- my PC |<--- RHEL7
|          |                  |           |

假设 RHEL7 可以 ping 通我的电脑的 IP 是a.a.a.a,我的电脑可以 ping 通代理服务器的 IP 是b.b.b.b,代理服务器使用的端口是8080

现在,我需要让 RHEL7 上网。以下是我所做的:

1)我在电脑上进行如下配置:

port_forwarding(a.a.a.a, 6113, b.b.b.b, 8080)

2)我在Linux机器上进行如下配置:

export http_proxy="http://my_name:[email protected]:6113/"
export http_proxys="https://my_name:[email protected]:6113/"
export ftp_proxys="ftp://my_name:[email protected]:6113/"

现在,我可以wget www.google.fr在我的 RHEL7 上使用它了。我的配置有效。

然后,我执行yum makecache,结果如下:

me@localhost:/etc/yum.repos.d$ yum makecache
Loaded plugins: langpacks, product-id, search-disabled-repos
base                                                                                                                                   | 3.6 kB  00:00:00
extras                                                                                                                                 | 2.9 kB  00:00:00
updates                                                                                                                                | 2.9 kB  00:00:00
(1/10): base/x86_64/group_gz                                                                                                           | 165 kB  00:00:00
(2/10): base/x86_64/primary_db                                                                                                         | 6.0 MB  00:00:02
(3/10): extras/x86_64/primary_db                                                                                                       | 165 kB  00:00:00
(4/10): extras/x86_64/filelists_db                                                                                                     | 217 kB  00:00:00
(5/10): base/x86_64/filelists_db                                                                                                       | 7.3 MB  00:00:03
(6/10): extras/x86_64/other_db                                                                                                         | 106 kB  00:00:00
(7/10): base/x86_64/other_db                                                                                                           | 2.6 MB  00:00:00
(8/10): updates/x86_64/filelists_db                                                                                                    | 4.5 MB  00:00:01
(9/10): updates/x86_64/other_db                                                                                                        | 573 kB  00:00:00
(10/10): updates/x86_64/primary_db                                                                                                     | 7.6 MB  00:00:03

看起来似乎yum makecache有效。但是,当我执行时sudo yum update,出现错误:

https://mirrors.huaweicloud.com/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.huaweicloud.com; Unknown error"
Trying other mirror.
https://mirrors.huaweicloud.com/centos/7/extras/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.huaweicloud.com; Unknown error"

我已经尝试过这里所有的镜像:http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os,但我总是收到同样的错误。

顺便说一句,输出curl -v mirrors.huaweicloud.com

* About to connect() to proxy 192.168.120.176 port 6113 (#0)
*   Trying 192.168.120.176...
* Connected to 192.168.120.176 (192.168.120.176) port 6113 (#0)
* Proxy auth using Basic with user 'me'
> GET HTTP://mirrors.huaweicloud.com/ HTTP/1.1
> Proxy-Authorization: Basic ejAwNDM2ODgwOnI2Ni0xODE2
> User-Agent: curl/7.29.0
> Host: mirrors.huaweicloud.com
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 301 Moved Permanently
< via: proxy A
< Date: Fri, 10 Apr 2020 03:49:09 GMT
< Server: CloudWAF
< Location: https://mirrors.huaweicloud.com/
< Set-Cookie: HWWAFSESID=b0be07ce156888de4e; path=/
< Set-Cookie: HWWAFSESTIME=1586490548595; path=/
< Content-Type: text/html
< Cache-Control: public
< Content-Length: 182
< Proxy-Connection: Keep-Alive
<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>
* Connection #0 to host 192.168.120.176 left intact

答案1

我的猜测是,当您导出和时,您只为用户“我”设置了代理http_proxyhttp_proxy因此当您yum makecache使用该用户执行或 curl 时它会起作用。

但是当您运行时,sudo yum update您会以 root 身份执行命令,因此您为用户“me”设置的变量不会被考虑,您需要为 root 设置它们,或者您可以在中添加以下内容yum.conf

proxy=http://a.a.a.a:6113/
proxy_username=my_name
proxy_password=my_passwd

如果不是这个原因,您可以尝试添加-v到您的 yum 命令中以获取更多信息。

相关内容