Answers:
在某些发行版中,sudo的配置方式使得在运行命令时所有环境变量都被清除。要保留您的http_proxy的值并解决此问题,您需要编辑/ etc / sudoers,运行:
visudo
然后找到以下内容:
Defaults env_reset
然后添加:
Defaults env_keep = "http_proxy ftp_proxy"
事情将会按预期开始。
感谢Ubuntu论坛中的kdogksu为该问题找到解决方案。
为了不仅修复apt-get,而且还修复图形化的X11实用程序,例如synaptic,mintintall,...),下面的行/etc/sudoers
应该可以完成此工作:
Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"
用这个。
ubuntu@ubuntu:~$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://Username:Password@proxy.foo.bar.edu.au:8080";
这就是我用的。完美运作。
Apt还允许将各个设置放置在下的文件中/etc/apt/apt.conf.d/
,因此具有与上述完全相同的效果,但是如果.conf
文件中还有其他行,则可能更易于维护:
ubuntu@ubuntu:~$ cat /etc/apt/apt.conf.d/05proxy
Acquire::http::Proxy "http://Username:Password@proxy.foo.bar.edu.au:8080";
apt.conf
。
/etc/apt/apt.conf
也可以使用将配置文件放置在/etc/apt/apt.conf.d
...中。:-)
E: Syntax error /etc/apt/apt.conf:2: Extra junk at end of file
对我有用的是:
sudo http_proxy=http://yourserver apt-get update
这有点奇怪,因为仅导出http_proxy然后运行sudo echo $ http_proxy乖乖地打印了导出的值
$http_proxy
在sudo运行之前被扩展。
export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport
sudo apt-get update
导出不需要sudo
输入,如果您的代理是匿名的,则将其proxyusername:proxypassword@
丢弃。
wget
?
如果是临时配置,则可以尝试以下方法:sudo bash -c'http_proxy =“ http:// <proxy_host>:<proxy_port> /” apt-get update“
您需要这样做,因为需要为“ root”帐户定义环境变量。之前执行导出操作不起作用。
对于永久配置,您将必须修改系统文件。在以下有关如何检查网络代理是否确实适用的答案中已经对此进行了描述。。
Ubuntu非常难以验证代理。我在工作时使用一台Ubuntu笔记本电脑,破损的数量令人难以置信。
Synaptic,Apt,Firefox,Chromium等都使用不同的方法来指定代理,并且无处安全地指定凭据。
关于这个问题的一些错误:https : //bugs.edge.launchpad.net/ubuntu/+source/msttcorefonts/+bug/220070
https://bugs.edge.launchpad.net/ubuntu/+source/apt-cacher/+bug/198138
https://bugs.edge.launchpad.net/ubuntu/+source/apt/+bug/433827
https://bugs.edge.launchpad.net/ubuntu/+source/b43-fwcutter/+bug/683630
奥利(Oli)建议使用出口是这样做的唯一隐约安全的方法。如果代理服务器使用辅助身份验证以最大程度地减少主身份验证服务器(例如Active Directory)上的负载,有时还可能会“模糊”代理支持。在这里,第一个代理连接由代理针对AD进行身份验证,然后在设置的时间段(通常为5分钟)内,将所有其他连接“信任”为该用户。因此,您可以打开Firefox,浏览Internet(任何地方都可以),然后通过指定代理尝试使用实用程序(wget,突触等),但将用户名保留为空白。
通常,Ubuntu对任何公司环境都怀有敌意,仅因为它允许如此轻松地读取密码。Seahorse是主要的罪魁祸首,但是Network Manager也令人震惊-连接到任何经过PEAP身份验证的网络,您刚刚将密码存储在applet中,任何人都可以看到谁可以借用您的笔记本电脑。显然,笔记本电脑共享被视为Linux领域的牺牲品,因为Seahorse开发人员拒绝了有关安全性的声明。之后,我没有联系网络管理员开发人员的心。
您尝试编辑/etc/apt/apt.conf
吗?我用它来在我们的公司代理后面使用apt。
Acquire::http::proxy "http://user:password@host:port/";
我相信除非您的shell环境中定义了$ http_proxy,否则apt将使用此值(即$ http_proxy优先)。
apt.conf
仍应使用。您可以使用来查看apt认为已设置的配置设置apt-config dump
。
如果您想通过代理在命令行中运行“ sudo apt-get update”,请使用以下命令,
sudo apt-get -o Acquire::http::proxy="http://user:password@host:port/" update;