先日、職場で使用しているPCでChocolateyをChocoleteyでUpgradeしたら突然パッケージが更新できなくなった。
もちろん、新規インストールもできない
かと思えばアップデートやインストールできるパッケージもある
という状態になったけど原因がわかったのでメモがてら書いておこうかなと思います。
もしかしたら環境依存かもしれないのと正確にいつのバージョンから発生するようになったのかは不明です
- 環境
Windows7 32-bit
Chocolatey v0.9.10.3
原因を探すにあたってデバッグモードと詳細メッセージを出力して確認しました。
実際に原因が特定できるまで自宅の64-bit PCでやってみたりパス名が長すぎるんじゃないかと環境変数いじったりとしてみたものの全然関係ありませんでした。
> cint -yvd autohotkey.portable
(省略)
Extracting C:\Users\(username)\AppData\Local\Temp\chocolatey\autohotkey.portable\1.1.24.00\AutoHotkey112400.zip to C:\ProgramData\chocolatey\lib\autohotkey.portable\tools...
7zip found at 'C:\ProgramData\chocolatey\tools\7z.exe'
Executing command ['C:\ProgramData\chocolatey\tools\7z.exe' x -aoa -bd -bb1 -o"C:\ProgramData\chocolatey\lib\autohotkey.portable\tools" -y "C:\Users\(username)\AppData\Local\Temp\chocolatey\autohotkey.portable\1.1.24.00\AutoHotkey112400.zip"]
ERROR: Exception calling "Start" with "0" argument(s): "The specified executable is not a valid application for this OS platform."
at Get-ChocolateyUnzip, C:\ProgramData\chocolatey\helpers\functions\Get-ChocolateyUnzip.ps1: line 159
at Install-ChocolateyZipPackage, C:\ProgramData\chocolatey\helpers\functions\Install-ChocolateyZipPackage.ps1: line 154
at <ScriptBlock>, C:\ProgramData\chocolatey\lib\autohotkey.portable\tools\chocolateyInstall.ps1: line 6
at <ScriptBlock>, C:\ProgramData\chocolatey\helpers\chocolateyScriptRunner.ps1: line 48
at <ScriptBlock>, <No file>: line 1
(省略)
エラーメッセージを見てみると
ERROR: Exception calling "Start" with "0" argument(s): "The specified executable is not a valid application for this OS platform."
というようにPlatformがどうたらって出てるんですよね…英語は苦手なんでChocolateyで使用している7zipの実行ファイルを直接叩いてみた
> 7z.exe
このバージョンの C:\ProgramData\chocolatey\tools\7z.exe は、実行中の Windows のバージョンと互換性がありません。コンピ
ューターのシステム情報を確認して、プログラムの x86 (32 ビット) のバージョンと x64 (64 ビット) のバージョンのどちらが
必要か確認してから、ソフトウェアの発行元に問い合わせてください。
どうやら、x86用ではなくx64用に差し替わっているっぽい?
ここからは自分がやった方法であって今後のアップデートで再びx64用に差し替わってしまったりする可能性があるので参考程度で
まず、7-Zipのサイトから32-bit版の最新をローカルにダウンロードしてきて適当な場所に解凍する
そして、Chocolateyをインストールしているディレクトリのtools
フォルダ内の7z.exe
と7z.dll
をローカルに解凍したファイルと差し替える
差し替える前に念のため名前を変えて元のファイルは残しておいた方が良いかも(私は検証用に残した)
これで、問題なくZip圧縮系のパッケージがインストールできるようになった。
これChocolatey側の設定なのか本家のほうの問題なのかどこかで報告すれば良いのかもしれないけども、報告場所がわからないので何かご存知の方がいれば教えていただきたいです。
- 追記
既にIssuesに上がっていました。
https://github.com/chocolatey/choco/issues/836
次のバージョンで修正予定のようです。
現状、v0.9.10.3以前を使用しているならアップデートせずに、v0.9.10.4が出るのを待ったほうが良さそうです。
もし既にv0.9.10.3にアップデートしてしまった場合はバージョンを戻すか、一時的な対応として上記の対処をするかで良いかと思います。
確認が遅くなりましたが8月15日にv0.10.0で修正されたようです。
https://github.com/chocolatey/choco/milestone/25?closed=1
動作確認しましたが7-zipに関しては問題なく使えています。