認証 Proxy 環境下な chocolatey で 407 が出まくった話

  • 2
    Like
  • 0
    Comment

そもそも chocolatey ってなに?

簡単に言うと Windows 版パッケージマネージャー。
Linux でいう yum とか apt-get とか。
PowerShell で簡単にインストール/アップデートができるので、コマンド大好きな人にはオススメ。
有償版もあるけど、無償版でも十分。

https://chocolatey.org/

簡単なリファレンス

注:実行時は PowerShell を管理者権限で実行しましょう。

choco のインストール

PowerShell
# スクリプトを実行できるようにポリシーを RemoteSigned にセット
Set-ExecutionPolicy RemoteSigned

# Proxy 無関係な方はこれだけ
iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex

# Proxy 環境下な方々
iwr -Proxy http://<ProxyServer>:<ProxyPort> https://chocolatey.org/install.ps1 -UseBasicParsing | iex

# 認証 Proxy 環境下な方々
$cred = New-Object pscredential("<ProxyUser>", $("<ProxyPassword>" | ConvertTo-SecureString -AsPlainText -Force))
iwr -Proxy http://<ProxyServer>:<ProxyPort> -ProxyCredential $cred https://chocolatey.org/install.ps1 -UseBasicParsing | iex

パッケージの検索

PowerShell
choco search <PackageName>

# 以下、例
choco search googlechrome
choco search 7zip
choco search thunderbird

パッケージのインストール

PowerShell
choco install <PackageName> -y

# choco search で返ってきた結果をコピペするのが確実
# -y オプションは confirm スキップ

パッケージのアップデート

PowerShell
# 全パッケージをアップデート
choco upgrade all -y

# 特定パッケージをアップデート
choco upgrade <PackageName> -y

# 昔の版では update だったけど、いつからか upgrade に変更
# -y オプションは confirm スキップ

パッケージのアンインストール

PowerShell
choco uninstall <PackageName>

# なお all も指定可能 (全パッケージのアンインストール)

詳細はヘルプ参照のこと

PowerShell
choco -h
choco <Command> -h

choco における Proxy 設定

最新版は v0.10.3 なのだけど、v0.9.9 から Proxy を正式サポートした。
それまでは choco のネットワークモジュール (PowerShell Script) をちょちょっと弄って、認証 Proxy でも通る様にしてた。

v0.9.9 以降では、下記コマンドで Proxy の設定ができる。

PowerShell
choco config set proxy <ProxyServer>:<ProxyPort>
choco config set proxyUser <ProxyUser>
choco config set proxyPassword <ProxyPassword>

設定しているはずなのに 407

上述のコマンドで choco コマンドが認証 Proxy を通る様にしたのだけど、なぜか実行する度に毎回ユーザーとパスワードの入力を求められる。

さらには 407 が返ってくる。
認証情報を渡しているにも関わらず、だ。

情報が少ないこともあり、調査にいろいろ手こずっていた。

直ったけど原因不明

最悪ネットワークモジュールをまた弄ろうかなー、なんて思っていた今日この頃。

いじくり倒す前に、「どうせ毎回認証情報の入力を求められるなら、設定情報消すか」と思い立ち、認証情報の設定を削除。

PowerShell
choco config unset proxyUser
choco config unset proxyPassword

この状態でアップデート実行。

PowerShell
choco upgrade all -y

いつも通り認証情報を聞かれるので入力。

PowerShell
User name: hogehoge
Password: ********************

...

407 が返ってこなくなった、、、だと?

いつも 407 が返ってくる Chrome やら SourceTree やらが次々とアップデートに成功する・・・。

以下いつも 407 が返ってきてた子たち。なんかあっさり成功しちゃってる・・・。

PowerShell
Upgraded:
 - ccleaner v5.24.5841
 - googlechrome v55.0.2883.75
 - firefox v50.0.2
 - thunderbird v45.5.1
 - teraterm v4.93
 - sourcetree v1.9.6.2

もしや、、、と思い、認証情報を再度設定し、アップデート実行。

PowerShell
choco config set proxyUser <ProxyUser>
choco config set proxyPassword <ProxyPassword>

choco upgrade all -y

認証情報が聞かれない・・・。マジ?

認証情報を手動入力したときに全部アプデされちゃったため、407 が返ってくるか否かはわからないけれども、直った気がする。

ちゃんとした原因は不明なんだけれども、設定が悪かったのは確実か。

まとめ

なんだかよくわらかないまま直ってしまったので腑に落ちない。
というか気持ち悪い。

個人的な見解だけども、古い版からずっと使ってきたからゴミが残っていたのではないかと。

choco をインストールしていないマシンで試してみるか・・・。