当前位置: 首页>>技术教程>>正文


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

,

问题描述

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

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

最佳解决方法

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

visudo

然后找到一条说明:

Defaults env_reset 

并在它之后添加:

Defaults env_keep = "http_proxy ftp_proxy" 

事情将按预期开始工作。

感谢Ubuntu论坛中的kdogksu为此找到了solution

为了不仅修复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/下的文件中,因此这与上面的效果完全相同,但如果.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,如果您的代理是匿名的,只需抛弃proxyusername:proxypassword@部分。

第四种方法

对我有用的是:

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

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

第五种方法

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)上的负载,则有时也可以使用”fudge”代理支持。这是第一个代理连接由代理对AD进行身份验证的地方,然后在设定的时间段(通常为5分钟)内,所有其他连接都是”trusted”为该用户。因此,您可以打开firefox,浏览互联网(任何地方都可以),然后通过指定代理来尝试您的实用程序(wget,synaptic等),但将用户名留空。

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

第六种方法

您是否尝试过编辑/etc/apt/apt.conf?我用它在我们的公司代理后面使用apt。

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

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

参考资料

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