Ubuntu 下使用 add-apt-repository
添加 PPA 软件源非常方便,此命令自动在/etc/apt/sources.list.d/
目录下增加相应软件源文件,并导入用于身份验证的密钥文件。以添加 ReText 软件源 ppa:mitya57 举例:
jonathan@n:~$ sudo add-apt-repository ppa:mitya57/ppa
You are about to add the following PPA to your system:
This ppa contains ReText and Unity Mail packages.
ReText homepage: https://launchpad.net/retext
Unity Mail homepage: https://launchpad.net/unity-mail
More info: https://launchpad.net/~mitya57/+archive/ppa
Press [ENTER] to continue or ctrl-c to cancel adding it
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.7j0kponOuB --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver hkp://keyserver.ubuntu.com:80/ --recv 0335F87ABAAAB3E5614B31470BB6536FEB999287
gpg: 下载密钥‘EB999287’,从 hkp 服务器 keyserver.ubuntu.com
gpg: 密钥 EB999287:公钥“Launchpad PPA for Dmitry Shachnev”已导入
gpg: 合计被处理的数量:1
gpg: 已导入:1 (RSA: 1)
jonathan@n:~$ sudo apt-get update
jonathan@n:~$ sudo apt-get install retext
但是在需要通过代理访问互联网的情况下,使用此命令会出现如下错误:
jonathan@n:~$ sudo add-apt-repository ppa:mitya57/ppa
Traceback (most recent call last):
File "/usr/bin/add-apt-repository", line 125, in <module>
ppa_info = get_ppa_info_from_lp(user, ppa_name)
File "/usr/lib/python2.7/dist-packages/softwareproperties/ppa.py", line 80, in get_ppa_info_from_lp
curl.perform()
pycurl.error: (6, "Couldn't resolve host 'launchpad.net'")
从错误内容来看,无法访问互联网。检查 Ubuntu 系统,代理设置正确,终端中 export
命令能够查询到涉及代理的环境变量。通过搜索找到 [1] [2] 两篇内容,据此整理出如下两种解决方法:
-
使用
sudo
参数-E
使得 root 用户可以使用普通用户下的环境变量,包括代理设置。jonathan@n:~$ sudo -E add-apt-repository ppa:mitya57/ppa
-
直接在 root 用户下设置代理。
jonathan@n:~$ sudo bash root@n:~# export http_proxy=http://192.168.1.8:80 root@n:~# export https_proxy=http://192.168.1.8:80 root@n:~# add-apt-repository ppa:mitya57/ppa