hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

apt-getコマンドをProxy経由で使用する

apt-getコマンドをProxy経由で使用しなければならない状況になってしまったので調査してみました。

設定方法としては、環境変数(http_proxy,ftp_proxy等)に設定する方法と、/etc/apt/apt.confに設定する方法の2パターンで実現が可能でした。

以下の2つのページがとても参考になりました。

Little Penguin - プロキシ経由のapt使用法
http://members.jcom.home.ne.jp/mitakelp/old/vineapt.html

apt-getコマンドのプロキシ設定について
http://mkserver.dip.jp/vinelinux/perform/network/0135.html

環境変数を使う場合

環境変数(http_proxy,ftp_proxy等)にProxyサーバーのアドレスを設定することでapt-getがProxy経由でも使えるようになります。

認証無しのProxyサーバーを設定する場合

こんな感じで、使用するProxyサーバーのアドレス/ポートを環境変数に設定します。

$ export http_proxy="http://your.proxy.address:8080/"
$ export ftp_proxy="http://your.proxy.address:8080/"
認証ありのProxyサーバーを設定する場合

上記の設定に認証用のユーザーIDとパスワードを追加して、環境変数を設定します。

$ export http_proxy="http://username:password@your.proxy.address:8080/"
$ export ftp_proxy="http://username:password@your.proxy.address:8080/"

/etc/apt/apt.confを使う場合

aptの設定ファイルのapt.confにProxyアドレスを設定してもpt-getがProxy経由でも使えるようになります。

[/etc/apt/apt.confを使う]認証無しのProxyサーバーを設定する場合

こんな感じで、プロトコルと使用するProxyサーバーのアドレス/ポートを設定します。

Acquire::ftp::proxy "ftp://your.proxy.address:8080/";
Acquire::http::proxy "http://your.proxy.address:8080/";
Acquire::https::proxy "https://your.proxy.address:8080/";
[/etc/apt/apt.confを使う]認証ありのProxyサーバーを設定する場合

上記の設定に認証用のユーザーIDとパスワードを追加します。

Acquire::ftp::proxy "ftp://username:password@your.proxy.address:8080/";
Acquire::http::proxy "http://username:password@your.proxy.address:8080/";
Acquire::https::proxy "https://username:password@your.proxy.address:8080/";

問題点(解決方法を知っている方がいたら教えていただきたく)

環境変数に設定する方法と、/etc/apt/apt.confに設定する方法のどちらにも当てはまるのですが、以下の2点がちょっと気になる点です。

1. Proxyで認証が必要な場合、ユーザーIDとパスワードが丸見えになってしまう。
   -> 設定ファイルに記述する場合とかに、パスワードがみえてしまうのはちょっと不安。

2.パスワードに「@」が含まれている場合の記述方法が不明。
  -> 例えばパスワードが「pwd@777」とかの場合、「http://username:pwd@777@your.proxy.address:8080/」と書いてしまうと、
      「777@your.proxy.address:8080/」がProxyアドレスだと見なされてしまうようです。

どなたか解決方法をご存知の方がいらっしゃいましたら、教えていただけるとうれしいです。