This is common in an environment where a proxy server is not properly configured via HTTP_PROXY or HTTPS_PROXY and you need to add a PPA.
The error is very cryptic unless you look at the code:
sudo add-apt-repository ppa:anonymous/very-important-packages
Cannot add PPA: 'ppa:~anonymous/ubuntu/very-important-packages'.
ERROR: '~anonymous' user or team does not exist.
def _get_suggested_ppa_message(user, ppa_name):
try:
msg = []
try:
try: lp_user = get_info_from_lp(LAUNCHPAD_USER_API % user)
except PPAException: return _("ERROR: '{user}' user or team does not exist.").format(user=user) # <--- this is triggered
....
def get_info_from_lp(lp_url):
if NEED_PYCURL:
# python2 has no cert verification so we need pycurl
return _get_https_content_pycurl(lp_url)
else:
# python3 has cert verification so we can use the buildin urllib
return _get_https_content_py3(lp_url)
...
def _get_https_content_pycurl(lp_url):
# this is the fallback code for python2
try:
callback = CurlCallback()
curl = pycurl.Curl() curl.setopt(pycurl.SSL_VERIFYPEER, 1) curl.setopt(pycurl.SSL_VERIFYHOST, 2) curl.setopt(pycurl.WRITEFUNCTION, callback.body_callback)
if LAUNCHPAD_PPA_CERT: curl.setopt(pycurl.CAINFO, LAUNCHPAD_PPA_CERT) curl.setopt(pycurl.URL, str(lp_url)) curl.setopt(pycurl.HTTPHEADER, ["Accept: application/json"]) curl.perform() curl.close()
json_data = callback.contents
except pycurl.error as e: # <--- if this errors out due to connectivity
raise PPAException("Error reading %s: %s" % (lp_url, e), e)
return json.loads(json_data)
This is common in an environment where a proxy server is not properly configured via HTTP_PROXY or HTTPS_PROXY and you need to add a PPA.
The error is very cryptic unless you look at the code:
sudo add-apt-repository ppa:anonymous/ very-important- packages /ubuntu/ very-important- packages' .
Cannot add PPA: 'ppa:~anonymous
ERROR: '~anonymous' user or team does not exist.
Code path:
https:/ /git.launchpad. net/~usd- import- team/ubuntu/ +source/ software- properties/ tree/softwarepr operties/ ppa.py? h=applied/ ubuntu/ xenial- updates# n305
def _get_suggested_ ppa_message( user, ppa_name):
lp_user = get_info_ from_lp( LAUNCHPAD_ USER_API % user)
return _("ERROR: '{user}' user or team does not exist." ).format( user=user) # <--- this is triggered from_lp( lp_url) : content_ pycurl( lp_url) content_ py3(lp_ url)
try:
msg = []
try:
try:
except PPAException:
....
def get_info_
if NEED_PYCURL:
# python2 has no cert verification so we need pycurl
return _get_https_
else:
# python3 has cert verification so we can use the buildin urllib
return _get_https_
...
def _get_https_ content_ pycurl( lp_url) :
curl.setopt( pycurl. SSL_VERIFYPEER, 1)
curl.setopt( pycurl. SSL_VERIFYHOST, 2)
curl.setopt( pycurl. WRITEFUNCTION, callback. body_callback)
curl. setopt( pycurl. CAINFO, LAUNCHPAD_PPA_CERT)
curl.setopt( pycurl. URL, str(lp_url))
curl.setopt( pycurl. HTTPHEADER, ["Accept: application/json"])
curl.perform( )
curl.close( ) json_data)
# this is the fallback code for python2
try:
callback = CurlCallback()
curl = pycurl.Curl()
if LAUNCHPAD_PPA_CERT:
json_data = callback.contents
except pycurl.error as e: # <--- if this errors out due to connectivity
raise PPAException("Error reading %s: %s" % (lp_url, e), e)
return json.loads(