如何在命令行中通过代理运行“sudo apt-get update”?

在我的办公室,我想通过(wget)更新和下载,在这里他们使用代理?

我如何通过命令行执行此操作?

在某些版本中,配置sudo的方式是在运行命令时清除所有环境变量。 要保留http_proxy的值并修复此问题,您需要编辑/ etc / sudoers,运行:

visudo 

然后找到一条说明:

 Defaults env_reset 

并在它之后添加:

 Defaults env_keep = "http_proxy ftp_proxy" 

事情将按预期开始工作。

感谢Ubuntu论坛中的kdogksu为此找到了解决方案 。

为了不仅修复apt-get而且修改图形X11 utils,例如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/下的/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"; 
 export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport sudo apt-get update 

导出不应该是sudo ing,如果你的代理是匿名的,只需抛弃proxyusername:proxypassword@ part。

对我有用的是:

 sudo http_proxy=http://yourserver apt-get update 

这有点奇怪,因为只需导出http_proxy然后运行sudo echo $ http_proxy,乖乖地打印出导出的值

Ubuntu对身份validation代理非常不友好。 我在工作中使用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建议使用导出是唯一一种模糊安全的方法。 如果代理服务器使用辅助身份validation来最小化主认证服务器(例如可能是Active Directory)上的负载,有时也可能“捏造”代理支持。 这是第一个代理连接由代理对AD进行身份validation的地方,然后在设定的时间段(通常为5分钟)内,所有其他连接都“被信任”为该用户。 因此,您可以打开firefox,浏览互联网(任何地方都可以),然后通过指定代理来尝试您的实用程序(wget,synaptic等),但将用户名留空。

Ubuntu通常对任何企业环境都有敌意,因为它允许密码读取如此容易。 Seahorse是一个罪魁祸首,但网络管理员也很震惊 – 连接到任何经过PEAP认证的网络,你只需将密码存储在applet中,任何人都可以看看谁可以借用你的笔记本电脑。 显然笔记本电脑共享在Linux领域被认为是亵渎神灵,因为海马开发者拒绝了不安全的说法。 在那之后,我没有心脏联系网络经理开发人员。

你有没有尝试编辑/etc/apt/apt.conf ? 我用它在我们的公司代理后面使用apt。

 Acquire::http::proxy "http://user:password@host:port/"; 

我相信apt会使用这个值,除非在你的shell环境中定义$ http_proxy(即$ http_proxy优先)。

如果是临时配置 ,您可以尝试这样:sudo bash -c’htt_proxy =“http:// /”apt-get update’

您需要这个,因为需要为“root”帐户定义环境变量。 之前做和导出不应该工作。

对于永久配置 ,您必须修改系统文件。 这已经在下面的答案中描述了如何检查网络代理是否真的应用了? 。