如何在命令行中通过代理运行“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://
您需要这个,因为需要为“root”帐户定义环境变量。 之前做和导出不应该工作。
对于永久配置 ,您必须修改系统文件。 这已经在下面的答案中描述了如何检查网络代理是否真的应用了? 。