概要
Ubuntu-WSL(Windows Subsystem 4 Linux)でProxyの設定をする話。
プロキシ環境下でのapt, curl, wget, git, pip, rbenv
事象
職場でのLinux運用では、Proxyが邪魔してエラーになるケースが多かった。
Proxyが問題になるコマンドとしては、
- apt, yumなどのパッケージマネージャ
- curl, wgetなどのhttpダウンローダ
- curl, wgetを間接的に呼ぶスクリプト(Python, Ruby, javaなど)
- gitなどのバージョン管理ツール
などのネットワークを扱うコマンド。
当社においては、http, httpsプロキシが存在するため、はまった。
少々面倒なのは、社外ネットではProxy設定が不要になるという点だ。
強引ではあるが、VPN環境下でのみ使うということとしてごまかしている。
自動的に切り替えてくれる設定を書けばいいと思うのだが、やり方が分からない。
AliasでProxy無効バージョンのコマンドを用意してあげるなどが良いかもしれない。
[Ubuntu-WSL]コマンド別対処法
(RADIUSか何かで認証している環境ではIDとPASSは不要である。)
1. apt
一時的
sudo apt -o Acquire::http::proxy=”http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]/” install hogehoge
sshなどと同様で、オプションを指定するサブコマンド -o が使える。
永続的
/etc/apt/apt.conf
に下記を追記
Acquire::ftp::proxy “ftp://[id]:[pass]@[FTPproxyのアドレス]:[ポート番号]/”;
Acquire::http::proxy “http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]/”;
Acquire::https::proxy “http://[id]:[pass]@[HTTPSproxyのアドレス]:[ポート番号]/”;
;を忘れない事。
2. curl
一時的
curl –proxy http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]/” http://hogehoge.com
curl –x http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]/” http://hogehoge.com
永続的
~/.curlrc
に下記を追記
proxy=”http://[proxy.example.com]:8080″
3.wget
一時的
wget -e HTTP_PROXY=proxy.co.jp:8080 ‘http://www.goo.ne.jp/’
こちらは、-o サブコマンドではなく、-e でパラメータ指定。
永続的
/etc/wgetrc
に下記を追記
# proxy
ftp_proxy = ftp://[id]:[pass]@[FTPproxyのアドレス]:[ポート番号]/
http_proxy = http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]/
https_proxy = https://[id]:[pass]@[HTTPSproxyのアドレス]:[ポート番号]/
4. git
一時的
#プロキシ指定(上書き)
git clone <repository-url> -c http.proxy=”http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]” -c https.proxy=”https://[id]:[pass]@[HTTPSproxyのアドレス]:[ポート番号]”
#プロキシ無効
git clone <repository-url> -c http.proxy=”” -c https.proxy=””
永続的
下記コマンドを実行
$ git config –global http.proxy http://[HTTPproxyのアドレス]:[ポート番号]
$ git config –global https.proxy https://[HTTPSproxyのアドレス]:[ポート番号]
5. (おまけ)pip
python -m pip install hogehoge –proxy=[HTTPproxyのアドレス]:[ポート番号]
6. (おまけ)rbenv
ruby-buildの設定ファイルを編集
vi ~/.rbenv/plugins/ruby-build/bin/ruby-buildhttp_head_curl() {
curl -qsILf ${CURL_OPTS} “$1” >&4 2>&1
}
http_get_curl() {
curl -q -o “${2:–}” -sSLf ${CURL_OPTS} “$1”
}
↓
http_head_curl() {
curl -sILf ${CURL_OPTS} “$1” >&4 2>&1
}
http_get_curl() {
curl -o “${2:–}” -sSLf ${CURL_OPTS} “$1”
}
[Windows]状況別プロキシ設定法
1. ブラウザ
ブラウザの設定は、インターネットオプションから設定する。
(編集中)
2. PowerShell
環境変数に直接書き込む。
> Set-Item –path Env:http_proxy -value http://[id]:[pass]@”http://proxy.hoge.com”:[port]/
> $Env:http_proxy
http://[id]:[pass]@”http://proxy.hoge.com”:[port]/
3. コマンド別
1. gem (ruby)
gem install hoge -p http://[id]:[pass]@:[port]/ http://proxy.hoge.com
まとめ
Linuxを社内で使っていて、ネットワーク系のコマンドがエラーを出すようだと
プロキシを疑うのが得策。
PCを社外・社内のどちらでよく使うかに応じて一時プロキシ設定を使うか
永続プロキシ設定を使うか変えるといいと思う。
コメント