配置APT代理?
我需要配置代理。 etc/apt/
没有apt.conf
文件,所以我用nano
创建了它。
但我不明白我需要写什么。 我写了http_proxy = http://lgn:pwd@192.168.1.254:8080/
那里然后重新启动networking
。 但是当我尝试apt-get update
– 它不起作用。
实际上我不明白我应该在apt.conf
文件中写入什么端口和ip(有一个带有192.168.1.254
ip和8080
端口的例子,所以我决定使用它们)。
要使用代理,您需要一个代理服务器。 IP和端口必须来自此代理服务器。 Login和pwd必须是代理服务器上的用户和密码(如果代理需要登录)。
来自help.ubuntu.com网站 :
APT配置文件方法
此方法使用apt / conf文件,该文件位于/ etc / apt /目录中。 如果您只希望apt-get(而不是其他应用程序)永久使用http代理,则此方法很有用。
在某些安装中,将不会设置apt-conf文件。 使用您选择的编辑器编辑apt-conf文件(如果您还没有,则创建一个新文件)。
sudo nano /etc/apt/apt.conf
将此行添加到/etc/apt/apt.conf文件中(将您的详细信息替换为您的appxyaddress和proxyport)。
Acquire::http::Proxy "http://yourproxyaddress:proxyport";
保存apt.conf文件。
如果您的代理需要登录名/密码,请替换:
"http://yourproxyaddress:proxyport";
有:
"http://username:password@yourproxyaddress:proxyport";
使用代理服务器的用户名和密码。
像下面这样的东西应该工作:
Acquire::http::proxy "http://lgn:pwd@192.168.1.254:8080/"; Acquire::https::proxy "http://lgn:pwd@192.168.1.254:8080/";
这是一个更普遍的答案以及apt配置。
由于有很多地方可以配置代理设置,因此在开始时可能会让人感到困惑。 让我总结一些事情并提出一些好的做法。
对于控制台程序
例如:wget,git和几乎所有连接到互联网的控制台应用程序。
如果由于某种原因每次运行命令时都要配置代理,请使用以下命令设置环境变量 。
export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/ export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
否则,如果您希望每次为所有用户使用相同的设置,则使用这些设置。
在bashrc中配置
$ nano /etc/bash.bashrc export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/ export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
在/etc/environment
配置
$ nano /etc/environment https_proxy="http://myproxy.server.com:8080/" ftp_proxy="http://myproxy.server.com:8080/" ...
使用GUI配置
打开网络设置并设置系统范围的网络代理。
网络 – >网络代理 – >配置 – >应用系统范围。
但是,如果您对代理进行身份validation,这可能没有用。
对于apt。
你需要为apt做一些额外的工作,因为偶然的apt不服从环境变量,
$ nano /etc/apt/apt.conf Acquire::http::Proxy "http://USERNAME:PASSWORD@SERVER:PORT"; Acquire::https::Proxy "https://USERNAME:PASSWORD@SERVER:PORT";
对于此范围之外的所有内容,必须有一个选项来在应用程序本身中配置代理设置。 如果不是我很抱歉;)
您可以做的是尝试使用sudo -E
运行命令,它将采用环境设置。 当我尝试更新,添加apt-repository和安装时,它似乎对我有用。 例:
sudo -E add-apt-repository ppa:xxxxx
根据@David Foerster,这仅适用于使用shell进行手动交互,但它不适用于在没有用户交互的情况下调用Apt的自动化任务和服务。
如果你需要在代理后面使用apt,可能其他一切也需要代理配置。 我喜欢在一个地方管理我的代理设置,这将是环境变量。
为此,我创建了一个/etc/profiles.d/99-proxy.sh
,它包含必要的代理设置(如所描述的那样):
export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/ export https_proxy=$http_proxy export ftps_proxy=$http_proxy
这样,该计算机上的所有用户都可以访问代理。 (别忘了chmod a+x
)
当您使用apt或apt-get作为用户时,该用户可以使用sudo。 就像Frank Qiu所描述的那样,sudo没有传递环境变量。 为此你可以添加
Defaults env_keep += "http_proxy https_proxy ftp_proxy"
到(例如)
/etc/sudoers.d/00-environment
或直接进入
/etc/sudoers
文件。 这样,您只需在一个地方管理代理设置。
最初的问题可能是错误的方向。 我相信你想在Linux中设置代理服务器?
这与想要使用Linux环境中的现有代理完全不同。
如果您的问题是第一个问题,那么请使用任何第三方服务在Linux中配置代理服务器。 一个例子可能是鱿鱼。
安装squid的简单命令:
$ sudo apt-get install squid3
然后编辑配置以允许本地网络(在这种情况下是您自己的计算机)。 $ sudo vi /etc/squid3/squid.conf
添加/编辑以下行:
http_access allow local_net acl local_net src 192.168.1.0/255.255.255.0
假设您的Linux机器的IP是192.168.1 / 24块。