私は次のコマンドでPPAリポジトリを(ルートとして)追加しようとしています:
export HTTP_PROXY="http://[email protected]:[email protected]:8080"
add-apt-repository ppa:nilarimogard/webupd8
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 84, in get_ppa_info_from_lp
curl.perform()
pycurl.error: (56, 'Received HTTP code 407 from proxy after CONNECT')
残念ながら機能しません。 curlはプロキシに接続しているように見えますが、プロキシは認証が必要であると言います。代わりに.curlrc、http_proxy envを試しましたが、機能しません。
strace -e network,write -s1000 add-apt-repository ppa:nilarimogard/webupd8
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 4
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("165.x.x.232")}, 16) = -1 EINPROGRESS (Operation now in progress)
getsockopt(4, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
getpeername(4, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("165.x.x.232")}, [16]) = 0
getsockname(4, {sa_family=AF_INET, sin_port=htons(46025), sin_addr=inet_addr("161.20.75.220")}, [16]) = 0
sendto(4, "CONNECT launchpad.net:443 HTTP/1.1\r\nHost: launchpad.net:443\r\nUser-Agent: PycURL/7.22.0\r\nProxy-Connection: Keep-Alive\r\nAccept: application/json\r\n\r\n", 146, MSG_NOSIGNAL, NULL, 0) = 146
recvfrom(4, "HTTP/1.1 407 Proxy Authentication Required\r\nProxy-Authenticate: BASIC realm=\"proxy\"\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nContent-Type: text/html; charset=utf-8\r\nProxy-Connection: close\r\nSet-Cookie: BCSI-CS-91b9906520151dad=2; Path=/\r\nConnection: close\
たぶん、ユーザー名に@記号が含まれているからでしょうか? Wgetはプロキシで正常に動作します。
関連: プロキシの背後からリポジトリを追加するにはどうすればよいですか?
環境
Ubuntu 12.04
curl 7.22.0(x86_64-pc-linux-gnu)libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
curl機能:GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
UPDATE
資格情報を.curlrcに追加したとき
cat ~/.curlrc
proxy = 165.x.x.232:8080
proxy-user = [email protected]:mypass0
普通のcurlで動作するようです。
curl www.google.com | head
* Proxy auth using Basic with user '[email protected]'
GET HTTP://www.google.com HTTP/1.1
Proxy-Authorization: Basic cmFmYWwud2llY3pvcmVrQHVi...3R0RDA=
HTTP/1.1 302 Found
HTTPSも:
curl -v https://www.google.com | head
* Establish HTTP proxy tunnel to www.google.com:443
* Proxy auth using Basic with user '[email protected]'
> CONNECT www.google.com:443 HTTP/1.1
> Host: www.google.com:443
> Proxy-Authorization: Basic cmFmYWwud2llY3pvcmVrQHVi...3R0RDA=
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Proxy-Connection: Keep-Alive
< HTTP/1.1 200 Connection established
* Proxy replied OK to CONNECT request
* successfully set certificate verify locations
ただし、PPA証明書を追加するときはまだ機能しません。
pycurl.error: (56, 'Received HTTP code 407 from proxy after CONNECT')
CURL HEADERS
送信されたヘッダー:
CONNECT launchpad.net:443 HTTP/1.1
Host: launchpad.net:443
Proxy-Authorization: Basic cGVvcGxlcmVhbGx5c2hvdWxkQHNhbml0aXplcG9zdHM=
User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Proxy-Connection: Keep-Alive
応答:
HTTP/1.1 200 Connection established
PyCURL HEADERS
送信されたヘッダー:
CONNECT launchpad.net:443 HTTP/1.1
Host: launchpad.net:443
User-Agent: PycURL/7.22.0
Proxy-Connection: Keep-Alive
Accept: application/json
応答:
HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: BASIC realm="proxy"
PyCURLは要求されたときに承認を再送信しないようです。
apt-get
がまだプロキシの背後で機能する場合の回避策/etc/apt/sources.list
に手動で追加しますLaunchpad.netでは、すべてのppaにソースを手動で追加する方法についての小さな説明がまだ含まれていると思います。前述のPPA ppa:nilarimogard/webupd8
のランチパッドサイトは https://launchpad.net/~nilarimogard/+archive/webupd8 です。下にスクロールすると、展開可能なラベルが表示されます。このPPAに関する技術的な詳細。展開すると、ソースを手動で追加する方法の説明が表示されます。上記の/etc/apt/sources.list
に次の行を追加します
deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu quantal main
deb-src http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu quantal main
もちろん、現在使用しているバージョンに合わせてクォンタルを調整する必要があります。
説明には、署名キーも含まれます。これは重要であるため、システムは常に、信頼できるppa-addressに実際にアクセスしていることを確認できます。 1024R/4C9D234C
であるPPAの場合(このPPAに関する技術的詳細にもあります)、スラッシュの後ろの数字は重要。 apt-key
プログラムを使用して指紋を追加できます。通常、次のコマンドを実行します
Sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 4C9D234C
apt-key
がプロキシ経由で機能しない場合の追加add-apt-repository
プログラムで既に問題が発生しているため、これも機能しない可能性があります。そのため、代わりに1024ビットキーを手動でダウンロードして追加できます。 wget
が機能する場合は、1ステップでそれを実行できます。
wget "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x531EE72F4C9D234C" -O out && Sudo apt-key add out && rm out
それ以外の場合は安全です " http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x531EE72F4C9D234C " /path/key
およびSudo apt-key add /path/key
を使用して追加します。
その後、リポジトリ情報apt-get update
を更新する必要があり、パッケージをダウンロードできるようになります。
パッケージングメカニズムの使用方法に関する個人的なお気に入り(悲しいことにドイツ語): http://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA
ランチパッドバージョンには、すべての重要なポイントも記載されています。 https://help.launchpad.net/Packaging/PPA/InstallingSoftware
説明された方法でapt-keyを使用することは一般的ではないので、情報はman apt-key
のmanページにしか見つかりませんでした。
Ppaを手動でインストールする標準的な方法をほとんど説明している関連する回答: https://askubuntu.com/a/38029/128349
実際、以前に投稿した回答よりもはるかに簡単なようです。 「Sudo」が必要なのは、プロキシの背後にいること、そしてそれが簡単に機能することを知るためです。これを行うには、http
およびhttps
のプロキシを通常の方法でエクスポートする必要があります。
export http_proxy=http://username:password@Host:port/
export https_proxy=https://username:password@Host:port/
Defaults env_keep="https_proxy"
を/etc/sudoers
ファイルの最後に追加します。この後、次のコマンドを使用してppaを追加できるはずです。
Sudo add-apt-repository ppa:the_ppa_you_want_to_add
または使用する
Sudo -E add-apt-repository ppa:the_ppa_you_want_to_add
/etc/sudoers
ファイルを変更したくない場合。 -E
オプションは、環境変数をSudoユーザーにエクスポートします。
これについて詳しく説明しました ここに私のブログで 。
apt proxyが以下のように設定されていることを確認してください
Sudo vi /etc/apt/apt.conf
次のプロキシ設定を追加して、ファイルを保存します
Acquire::http::proxy "http ://proxy.company.com:port/";
Acquire::https::proxy "https ://proxy.company.com:port/";
Acquire::ftp::proxy "ftp://proxy.company.com:port/";
さらに、コマンドを実行する前に、ターミナルで以下をエクスポートします
export http_proxy=http ://proxy.company.com:port/
export https_proxy=https ://proxy.company.com:port/
これは動作するはずです。