当前位置: 首页>>技术问答>>正文


‘apt-get’不适用于Proxy

ubuntuer 技术问答 , 去评论

问题描述

对于命令

sudo apt-get update

我收到以下错误:

W: Failed to fetch http://ch.archive.ubuntu.com/ubuntu/dists/maverick-updates/multiverse/binary-i386/Packages.gz  
407  Proxy Authentication Required (The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied. )

我正在使用VirtualBox在Windows XP上运行Ubuntu 10.10。对于Internet连接,我使用代理服务器进行身份验证。我尝试使用gnome-network-proxy工具设置代理设置system-wide。

之后/etc/environmenthttp_proxy变量更新,格式为http://my_proxy:port/,没有认证数据。

我用Firefox检查过这个。浏览器询问我的登录名和密码,一切正常。不幸的是,apt-get并非如此。我也尝试过描述here。不幸的是它不起作用。

可能它在某种程度上与代理在Windows域中的事实有关,任何想法?

我的代理名称是http-proxy。 ‘-‘在这里是一个特殊角色吗?

最佳解决方法

对于我的公司网络,我的管理员给出了以下格式的代理名称:

http://[username]:[password]@[proxy-webaddress]:[port]

对于我们的Windows网络,我们的用户名格式为:

[domain]\[username]

例如:

http://mywindowsdomain\fossfreedom:password@askubuntu-proxy.com:8080

这被添加到以下新文件中(默认情况下不存在):

gksudo gedit /etc/apt/apt.conf.d/01proxy

添加了以下文字:

Acquire::http::Proxy "http://mywindowsdomain\fossfreedom:password@askubuntu-proxy.com:8080";

如果您使用的是匿名代理,则不需要登录凭据:

Acquire::http::Proxy "http://askubuntu-proxy.com:8080";

保存文件,然后检查一切正常:

sudo apt-get update

次佳解决方法

我发现进入”Network Proxy”小程序的USERNAME和PASSWORD没有存储到apt.conf文件中,您必须在/etc/apt/apt.conf文件中手动添加用户名和密码。

“Network Proxy”小程序仅存储主机名和端口。

基本语法是

Acquire::http::proxy "http://User:Password@host:port/";

Acquire::ftp::proxy "ftp://User:Password@host:port/";

Acquire::https::proxy "https://User:Password@host:port/";

如果您使用的是Windows用户名和密码,请遵循以下建议:

User = Domain/Username

(Windows用户使用/而不是\)

如果您使用带有特殊字符的Windows强/复密码,则必须使用值的URL编码,例如密码中的”@”将为”%40″。

第三种解决方法

尝试将http_proxy设置为http://user:pass@proxyserver:port/

编辑:如果设置http_proxy不起作用,请尝试编辑apt.conf。在Ubuntu中,apt.conf/etc/apt/apt.conf.d/目录中被分段。在此目录中编辑/etc/apt/apt.conf.d/01ubuntu

APT {
    Acquire {
        http {
            Proxy "http://user:password@server:port";
        };
    };
};

或尝试使用Synaptic进行设置:设置 – >偏好 – >网络然后在“手动代理配置”中设置代理设置。

第四种方法

cntlm有一个发现选项,可以帮助找到正确的配置以使用网络的NTLM身份验证,试试这个:

cntlm -I -M http://test.com

将结果复制并粘贴到/etc/cntlm.conf中

重启cntlm

第五种方法

我在MS ISA代理后面,我正在使用Cntlm身份验证代理;在apt.conf我有4行;我在某处读过最后一行必须是空的,但我不确定。它完美地运作:

Acquire::http::proxy "http://127.0.0.1:3128/";
Acquire::ftp::proxy "ftp://127.0.0.1:3128/";
Acquire::https::proxy "https://127.0.0.1:3128/";

第六种方法

  1. 打开终端并将以下行添加到/etc/apt/apt.conf。

    gksu gedit /etc/apt/apt.conf
    
  2. 添加以下两行:

    Acquire::http::Proxy "http://user:pass@proxy-host:port/";
    Acquire::ftp::Proxy "http://user:pass@proxy-host:port/";
    
  3. 保存并退出。

    现在apt-get update应该在代理后面工作,但你会注意到仍然有些东西不起作用,那就是add-apt-repository命令。

    为了能够在代理后面添加存储库,请键入以下命令:

    # export https_proxy="http://192.168.1.5:8080"
    # sed -i 's/"keyserver.ubuntu.com"/"hkp://keyserver.ubuntu.com:80"/' /usr/share`/pyshared/softwareproperties/ppa.py`
    

    现在,您可以使用LANG = C add-apt-repository在Lucid和Natty中添加存储库

    例:

    root @ ubuntu:〜#LANG = C add-apt-repository ppa:motumedia /mplayer-daily

通过Unixmen

第七种方法

如何在Ubuntu中应用apt-get更新或安装?我在代理服务器后面,在安装Ubuntu之后,使用apt-get命令更新或安装任何内容。搜索后我发现apt软件包已经更改,现在/etc /apt目录下没有apt.conf了。

我为解决这个问题所做的是以下内容:

打开终端和文件

sudo -H gedit /etc/bash.bashrc

并在文件的底部添加这两行:

#proxy 
export http_proxy=http://user:password@host:port/
export ftp_proxy=http://user:pass@host:port/

现在保存并退出,现在您将能够在Ubuntu中更新,升级或安装软件包

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1722.html,未经允许,请勿转载。