sudo で呼び出されたプロキシを介して aptitude を適切に動作させる

sudo で呼び出されたプロキシを介して aptitude を適切に動作させる

私は Debian 6 を使用しています。プロキシの背後にいるため、そのプロキシを使用するように Debian を設定しました。GUI を介したブラウジングや HTTP および FTP アクティビティは正常に動作します。

パッケージ リポジトリを更新したかったので、シェルに次のように入力しました。

sudo aptitude

その後、リポジトリを更新しようとすると (「u」を押す)、aptitude は Debian の FTP サーバーにアクセスしようとしている間に停止し、このアクションは最終的にタイムアウトになります。

しかし、試してみると:

$ su
# aptitude

更新作業。

2 つの呼び出しの違いは何ですか?$http_proxyおよび$ftp_proxy環境変数は両方のシェルに存在します。

答え1

コマンドは、root (またはユーザー名と正しいパスワードを指定した場合の任意のユーザー) として別のシェルを起動します。このシェルは、当然ながら HTTP_PROXY および FTP_PROXY 変数を含むすべての通常の環境変数を取得します。このようにして動作します。

須藤コマンドは、特別に選択されたサブセットを除くすべての環境変数を削除します。もちろん、これには HTTP_PROXY および FTP_PROXY 変数は含まれないため、コマンドは失敗します。

あなたは作ることができます須藤*_PROXY変数を保持するには、sudoers設定ファイルを編集し、ビズドコマンド(当然)。

以下を追加すると須藤HTTP_PROXYとFTP_PROXYの値を保持します。

Defaults env_keep += "http_proxy ftp_proxy https_proxy HTTP_PROXY FTP_PROXY HTTPS_PROXY"

偶然にも、そのリストに DISPLAY と HOME を追加すると、sudo で GUI プログラムも使用できるようになります (接続するには DISPLAY 変数が必要です)

Defaults env_keep += "DISPLAY HOME"

このように、この2行だけを追加することもできます。(+=がここでの鍵です)これらの行をファイルの末尾に追加することを忘れないようにしてください。最初の数行では通常、「env_keep' ストレート変数 '=' を実行すると、以前の値がすべて消去されます。

答え2

私自身もこれに苦労しましたが、最終的には Ask Ubuntu で提案された解決策を採用しました。 apt-getはプロキシでは動作しません

設定がhttp_proxy機能しない場合は、編集してみてくださいapt.conf。Ubuntu では
ディレクトリapt.confが断片化されています/etc/apt/apt.conf.d/
このディレクトリで編集します/etc/apt/apt.conf.d/01ubuntu:

APT {
  Acquire {
      http {
          Proxy "http://user:password@server:port";
      };
  };
};

関連情報