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)
動いた。したがって、問題はプロキシ構成に関連しています。しかし、回避策があると思います。
プロキシの構成に加えて、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>
端末で次のコードを使用して、プロキシの背後に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
最後に!次の方法でhttps_proxyを設定する必要があります。
export https_proxy=....
http_proxyを設定するだけでは不十分です。
そして、sudo経由ではなく、rootとしてadd-apt-repositoryコマンドを実行する必要がありました。
コード:
Sudo su
add-apt-repository ppa:........
プロキシ設定はセットアップされているようですが、どういうわけかサーバーに接続できません...
私はこのように解決した非常に似た問題を抱えていました:企業のプロキシはセキュリティ上の理由でポート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
ブーム、出来上がり!
sudoers
の変更が期待どおりに機能しなかった理由は、次の代わりに:
Defaults env_keep="http_proxy"
Defaults env_keep="https_proxy"
あなたが書いている必要があります:
Defaults env_keep+="http_proxy"
Defaults env_keep+="https_proxy"
また、Defaults
とenv_keep
の間のスペースが毎回タブであることを確認してください。
/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
がコメント化されていないことを確認することで確認できます。
この4段階のアプローチは、Ubuntu 17.04 VMで企業プロキシの背後で機能しました。
Sudo apt-add-repository ppa:brightbox/Ruby-ng
および失敗させますSudo apt update
およびThe following signatures couldn't be verified because the public key is not available: NO_PUBKEY F5DA5F09C3173AA6
のようなエラーメッセージを探しますSudo apt-key adv --keyserver-options http-proxy=http://10.0.2.2:3128 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F5DA5F09C3173AA6
Sudo apt update
が機能するようになりましたホストVMはポート3128でCNTLM
プロキシサーバーを実行していることに注意してください。
これは私を助けました:
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
コマンドには必要ないが、害を与えないいくつかの環境変数があると思います。
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
を実行すると完了です。
実際、私は同じ問題に遭遇しました。それがこのページを見つけた方法です。
環境変数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で別の検索を保存しています(これを読んでいる場合は、プロキシに複数の)...
ターミナルで以下のコマンドを実行します
export http_proxy=http://username:[email protected]:port/
export ftp_proxy=http://username:[email protected]/
システム全体の環境変数は、実際に/etc/environment
に追加する必要があります(Sudo
またはgksu
を使用してください)が、報告されたエラーはgpgデータが見つからなかったことを示しているようです。アイデア:
私がやっていることは、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の最新バージョンでは無効になっています)の代わりに使用する必要があります。
別の解決策は、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/";