web-dev-qa-db-ja.com

プロキシを介してadd-apt-repositoryを機能させるにはどうすればよいですか?

wiki.linaro.orgの「Ubuntu 10.04(Lucid)および10.10(Maverick)ホストへのクロスツールチェーンのインストール」の指示 (Ubuntu 10.04 VMの場合)を実行しようとしています。最初のステップは次のとおりです。

Sudo add-apt-repository ppa:linaro-maintainers/toolchain

しかし、私がそれを実行すると、次のようになります:

Error reading https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain: <urlopen error [Errno 110] Connection timed out>

問題は雇用主のプロキシサーバー、特にHTTPSの構成にあると推測しています。

Firefoxで https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain を開くと、「接続がタイムアウトしました」というメッセージが表示されました。次に、Firefoxの設定->詳細設定->ネットワーク->設定...に進み、HTTPプロキシを「ゲートウェイ」に設定し、ポートを8080に設定し、「すべてのプロトコルにこのプロキシサーバーを使用する」をオンにしました。次に、ページがロードされました。これは私の理論を裏付けています。

Http_proxyおよびhttps_proxy環境変数を設定しようとしました(大文字と小文字の両方):

$ set | grep -i proxy
HTTPS_PROXY=https://gateway:8080
HTTP_PROXY=http://gateway:8080
http_proxy=http://gateway:8080
https_proxy=https://gateway:8080

また、それらを次のように変更してみました

$ set | grep -i proxy
HTTPS_PROXY=gateway:8080
HTTP_PROXY=gateway:8080
http_proxy=gateway:8080
https_proxy=gateway:8080

そして、この2行目を/etc/apt/apt.confに追加してみました:

Acquire::http::proxy "http://gateway:8080/";
Acquire::https::proxy "https://gateway:8080/";

しかし、同じエラーが引き続き発生します。

これをトラブルシューティングするにはどうすればよいですか?

更新:受け入れられた答え to "問題のリポジトリを追加し、端末の後ろから接続するプロキシ」 そしてさらに得た:

$ Sudo add-apt-repository ppa:linaro-maintainers/toolchain
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 1DD749B890A6F66D050D985CF1FCBACA7BE1F97B
gpg: requesting key 7BE1F97B from hkp server keyserver.ubuntu.com
gpgkeys: HTTP fetch error 7: couldn't connect to Host
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

「HTTP fetch error」は、「Defaults env_keep = http_proxy」を/etc/sudoers...に追加する必要があることを意味するのだろうか.

#2を更新:追加:

Defaults env_keep="http_proxy"
Defaults env_keep="https_proxy"

... バグ516032のコメント18 の場合と同じですが、「gpgkeys:HTTPフェッチエラー7:ホストに接続できませんでした」というエラーが引き続き表示されます。

そして、これは奇妙です:

$ Sudo env | grep proxy
https_proxy=https://gateway:8080

... http_proxyが存在しないためです。

どんなアドバイスも大歓迎です。

更新#3:私のVMのホストはラップトップなので、家に持ち帰って試してみました(プロキシなしで) :

$ Sudo add-apt-repository ppa:linaro-maintainers/toolchain
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 1DD749B890A6F66D050D985CF1FCBACA7BE1F97B
gpg: requesting key 7BE1F97B from hkp server keyserver.ubuntu.com
gpg: key 7BE1F97B: public key "Launchpad Linaro Overlay PPA" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

動いた。したがって、問題はプロキシ構成に関連しています。しかし、回避策があると思います。

118
Daryl Spitzer

プロキシの構成に加えて、Sudo-Eオプションで環境を保持するように指示します。

export http_proxy=http://<proxy>:<port>
export https_proxy=http://<proxy>:<port>
Sudo -E add-apt-repository ppa:linaro-maintainers/toolchain

ユーザー名とパスワード:

export https_proxy=https://<username>:<password>@<proxy>:<port>
182
Amal Pillai

端末で次のコードを使用して、プロキシの背後にgpgキーを追加します。

Sudo apt-key adv --keyserver-options http-proxy=http://USER:PASSWORD@PROXY_URL:PORT/ --keyserver keyserver.ubuntu.com --recv-keys GPG_KEY

それに応じて大文字を置き換えます。ユーザー認証(つまり、ユーザー名とパスワード)なしでプロキシを使用している場合は、代わりにhttp-proxy=http://PROXY_URL:PORT/を使用します。

たとえば、GPG_KEY=C2514567EEA14886を使用するには、

Sudo apt-key adv --keyserver-options http-proxy=http://user:[email protected]:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

どこ、

USER_ID=user
PASSWORD=abc123
PROXY_URL=10.10.2.21
PORT=3128

ユーザー認証を使用していない場合は、

Sudo apt-key adv --keyserver-options http-proxy=http://10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886
39
Patxi Gomez

最後に!次の方法でhttps_proxyを設定する必要があります。

export https_proxy=....

http_proxyを設定するだけでは不十分です。

そして、sudo経由ではなく、rootとしてadd-apt-repositoryコマンドを実行する必要がありました。

コード:

Sudo su
add-apt-repository ppa:........
9
DaRattler

プロキシ設定はセットアップされているようですが、どういうわけかサーバーに接続できません...

私はこのように解決した非常に似た問題を抱えていました:企業のプロキシはセキュリティ上の理由でポート80と443のみを許可します。したがって、セットアップ時にイベントが発生します.HKPプロトコルはポート11371を使用しているため、通過できません。

したがって、SSHアウトして外部のサーバーの1つからキーを取得し、それをダウンロードしてローカルにインストールする以外に、以下にリストされているキーサーバーからキーサーバーを指定し、ポートを指定できます。

http://sks-keyservers.net/overview-of-pools.php

例えば。:

apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys XXXXX

ブーム、出来上がり!

6
leroyse

sudoersの変更が期待どおりに機能しなかった理由は、次の代わりに:

    Defaults env_keep="http_proxy"
    Defaults env_keep="https_proxy"

あなたが書いている必要があります:

    Defaults env_keep+="http_proxy"
    Defaults env_keep+="https_proxy"

また、Defaultsenv_keepの間のスペースが毎回タブであることを確認してください。

3
Urhixidur

/usr/lib/python3/dist-packages/softwareproperties/ppa.pyを編集して追加することで、これを回避することができました

"--keyserver-options", "http-proxy=<proxy_url>",

次の行の下

"--keyserver", self.keyserver,

背景情報の詳細

ppa.pyは、add-apt-repositoryがgpgを呼び出すために使用するpythonスクリプトです。 http_proxy環境変数を使用しないgpgのバグがあるようです。これは、ファイル/root/.gnupg/dirmngr.confを表示し、honor-http-proxyがコメント化されていないことを確認することで確認できます。

3
Junior Leota

この4段階のアプローチは、Ubuntu 17.04 VMで企業プロキシの背後で機能しました。

  1. Sudo apt-add-repository ppa:brightbox/Ruby-ngおよび失敗させます
  2. Sudo apt updateおよびThe following signatures couldn't be verified because the public key is not available: NO_PUBKEY F5DA5F09C3173AA6のようなエラーメッセージを探します
  3. Sudo apt-key adv --keyserver-options http-proxy=http://10.0.2.2:3128 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F5DA5F09C3173AA6
  4. Sudo apt updateが機能するようになりました

ホストVMはポート3128でCNTLMプロキシサーバーを実行していることに注意してください。

3
thegreendroid

これは私を助けました:

Sudo https_proxy='https://user:password@proxyhost:port/' \
http_proxy='http://user:password@proxyhost:port/' \
ftp_proxy='ftp://user:password@proxyhost:port/' \
no_proxy=localhost,127.0.0.0/8,10.0.0.0/8 add-apt-repository ppa:webupd8team/Java

コマンドには必要ないが、害を与えないいくつかの環境変数があると思います。

1
leo

PPAを手動で/etc/apt/sources.listに追加します:

deb http://ppa.launchpad.net/<user>/<repo>/ubuntu trusty main

ファイルを保存し、Sudo apt-get updateを実行します。このエラーはポップアップするかもしれません:

W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5BB92C09DB82666C

次のコマンドを実行してPPAのキーを受け入れ、対応するPPAのキー(5BB92C09DB82666C)を忘れずに変更します。

Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 5BB92C09DB82666C

Sudo apt-get updateを実行すると完了です。

参照: Debianでadd-apt-repositoryコマンド経由でLaunchpad PPAを追加する方法

1
Ajoy

実際、私は同じ問題に遭遇しました。それがこのページを見つけた方法です。

  • 環境変数http_proxy(大文字と小文字が区別されます)およびhttps_proxy(大文字と小文字が区別されます)は何かを行います。それらを設定しないと、最初の段階で失敗します。環境変数を設定すると、何らかの効果があるようです。それらをエクスポートしないと失敗します

    TCRKVMW ~ $ Sudo su -
    TCRKVMW ~ # export http_proxy=http://10.54.0.4:8080/
    TCRKVMW ~ # export https_proxy=http://10.54.0.4:8080/
    TCRKVMW ~ # add-apt-repository ppa:webupd8team/Java
    You are about to add the following PPA:
     Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK7 / JDK8 / JDK9). There are no actual Java files in this PPA.
    

    (残りは成功です-今回は)

場合によっては、スタックして、通常のタイムアウトメッセージで終了することもあります:PPAを追加できません: '"読み取りエラー https://launchpad.net/api/1.0/~webupd8team/+archive/Java :(7、 'launchpad.netポート443への接続に失敗しました:接続がタイムアウトしました') "'。

...しかし、私は不正行為をしている、私はこれをすべてrootとしてやっている。簡単な解決策は、/ etc/profileを編集するか、Ubuntu/Mintで/etc/profile.dにスクリプトを追加するだけです。

    TCRKVMW ~ $ Sudo su -c 'F=/etc/profile.d/proxy.sh S="export proxy_http=\"http://192.168.99.4\"\nexport proxy_https=\"http://192.168.99.4\"" ; echo -e ${S} > ${F} ; chmod 700 ${F}'

ああ、そうです、カールについてもあります(ちなみにapt-add-repositoryで使用されています)。マニュアルでは、ホームディレクトリに.curlrcを追加するように指示されています。 apt-add-directoryはルート独自のものであるため、/ root/.curlrcに追加することを意味します。

    proxy_http="http://192.168.99.4"
    proxy_https="http://192.168.99.4"

良いアイデアは、あなた自身の〜/ .curlrcで同じことをすることです

また、/ etc/wgetrcでプロキシを有効にすることは良いことです。質問とは関係ありませんが、Googleで別の検索を保存しています(これを読んでいる場合は、プロキシに複数の)...

1
Marabiloso

ターミナルで以下のコマンドを実行します

export http_proxy=http://username:[email protected]:port/
export ftp_proxy=http://username:[email protected]/
0
Deepak Rajput

システム全体の環境変数は、実際に/etc/environmentに追加する必要があります(Sudoまたはgksuを使用してください)が、報告されたエラーはgpgデータが見つからなかったことを示しているようです。アイデア:

  • プロキシ設定を確認します(アクセスできる場合)
  • プロキシが暗号化されたトラフィックの出力を何らかの方法で改ざんしているかどうかを確認します。
  • 連続したnetstatを実行して、プロキシへの接続が実際に行われているかどうかを確認します
  • 最後の手段はtcpdumpで、wiresharkで検査することです。
  • httpトンネルを試してください;)
0
t0m5k1

私がやっていることは、apt-keyまたはgpgをプロキシするのではなく、カール経由でhttpを使用することです:

curl -sSL\' http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xBBEBDCB318AD50EC6865090613B00F1FD2C19886 '\| sudo apt-key add-

このメソッドは、apt-keyコマンドラインまたはhttp_proxyまたはhttps_proxy環境変数設定(apt-keyの最新バージョンでは無効になっています)の代わりに使用する必要があります。

0
Dan Anderson

別の解決策は、APT proxy.confファイル、/etc/apt/apt.conf.d/proxy.confを追加することです

Acquire::http::Proxy "http://your.proxy.server.here.com:port/";
Acquire::https::Proxy "http://your.proxy.server.here.com:port/";
0
Dan Anderson