问题描述
对于命令
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/environment
由http_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/";
第六种方法
-
打开终端并将以下行添加到/etc/apt/apt.conf。
gksu gedit /etc/apt/apt.conf
-
添加以下两行:
Acquire::http::Proxy "http://user:pass@proxy-host:port/"; Acquire::ftp::Proxy "http://user:pass@proxy-host:port/";
-
保存并退出。
现在
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中更新,升级或安装软件包