Chocolateyを使ってWindowsでもコマンドラインでソフトウェア管理
随分間隔が空いてしまいましたが、今回はソフトウェアの紹介です。
Windowsでソフトウェアをインストールするとき、大抵は
という手順を取る方が多いと思います。
この手順、正直面倒に感じていました。
コマンド一発でソフトをインストールできる Mac・Linuxユーザーには、このストレスがより伝わるのではと思います。
さらにソフトの更新に至っては定期的に一つずつ確認して行わなければならず、
インストールよりもつらいものがあります。
そこで、Windowsでも Macや Linuxのように、コマンドでソフトウェアを管理できるツール、
Chocolateyを使ってみました*2。
Chocolateyを導入すれば、こんなことができます。
- コマンドでソフトウェアインストール・アンインストール・更新
- ソフトウェアインストール時に依存解決
- 複数のソフトウェアをまとめて更新
- インストール済みソフトウェアのリストをエクスポートして別マシンにソフトウェア環境を引っ越し
この記事では、Chocolateyのインストールから簡単な使い方までを紹介します。
特にプログラミングをやっている方・興味のある方は、
コマンドライン操作でのソフトウェア管理をぜひ一度体験してみてください。
- Chocolateyのインストール
- Chocolateyの使い方
- Chocolateyでインストール・実践例
- ChocolateyGUIを使ったソフトウェア環境引っ越し
- 補足:Chocolateyの注意点と可能性
- まとめ
Chocolateyのインストール
まずは、Chocolatey自身をインストールする必要があります。
手順はごく簡単で、公式ページの Install にある 5ステップ (実質 4ステップ) に従うだけです。
公式が英語なので、ここでも簡単に解説します。
1. コマンドプロンプトを [管理者として実行]
公式には PowerShellを使う方法も併記されていますが、
ここではコマンドプロンプト利用の場合を記載します。
ソフトウェアのインストールになるので、
コマンドプロンプトを管理者権限で実行します。
2. コマンドプロンプトで Chocolateyインストールコマンドを実行
公式サイトの Install with cmd.exe にあるコマンドをコピーします。
下図の囲み枠内のアイコンをクリックするとコマンドがクリップボードにコピーされます。
3. Chocolateyインストールコマンドの実行
1で起ち上げたコマンドプロンプトに、2でコピーしたコマンドをペーストして実行します。
警告が 3つ出ますが気にしなくて大丈夫です。簡単に説明すると、
「インストール後にコマンドプロンプト再起動必要かも」
「Chocolateyを過去バージョンからアップグレードするときに出るエラーは無視していい」
「タブ補完機能設定されてないよ」
程度です。
4. 完了まで待つ
待ちます (公式サイトに書いてあるので......)。
5. インストールの確認
無事インストールが完了したら、コマンドプロンプトで choco
と打ってみます。
Chocolateyのバージョン情報が表示されたら成功です。
(2018/9/2現在 v0.10.11)
Chocolateyの使い方
まず覚えるべきコマンドは以下の 7つ。
パッケージの一覧
choco list -l
インストール済みパッケージの一覧。-l
は--localonly
のエイリアスchoco list ${packageName}
Chocolateyリポジトリ (ソフトウェアの倉庫) から、${packageName} にマッチするものを検索
※Chocolateyリポジトリにないものもあるので、
その場合は残念ながら今まで通りインストーラーを落として GUIでインストールしましょう。
パッケージのインストール
choco install ${packageName}
${packageName} で指定したパッケージをインストール。
半角スペースで複数パッケージ名を並べて、一括インストールも可能
パッケージのアップグレード
choco outdated
最新版でないインストール済みのパッケージを一覧choco upgrade ${packageName}
${packageName} に完全一致するパッケージを更新。
半角スペースで複数パッケージ名を並べて、一括更新も可能choco upgrade all
最新版でないインストール済みパッケージをすべて更新。
GUIポチポチ更新と比べると圧倒的に便利
パッケージのアンインストール
choco uninstall ${packageName}
インストール済みパッケージのアンインストール
※Chocolateyの弱いところとして、アンインストール機能が発展途上という点があります。
中にはうまくアンインストールできないものもあるので、その場合は観念して GUIから消しましょう。
気になる人はPATH
の管理も忘れずに。
Chocolateyでインストール・実践例
chocolateyguiのインストール
では、実際に Chocolateyでソフトウェアをインストールしてみます。
まずは、Chocolateyを GUIで管理できる chocolateygui を入れてみましょう。
「CLI最高」みたいなことを冒頭で述べてますが矛盾しているわけではなく、
これがChocolateyを使った別マシンへのソフトウェア環境の引っ越しに必要なモジュールになっているためです。
では、まずは choco list chocolateygui
で、
リポジトリに登録されていることを確認してみましょう。
c:\workdir>choco list chocolateygui Chocolatey v0.10.11 ChocolateyGUI 0.16.0 [Approved] ChocoShortcuts 0.4.1 [Approved] 2 packages found.
探しているものは ChocolateyGUI
という名前で、バージョンは 0.16.0のようです。
名前が分かったので Ctrl + M
で選択モードにして名前をコピーし、
choco install ChocolateyGUI
でインストールします。
c:\workdir>choco install ChocolateyGUI Chocolatey v0.10.11 Installing the following packages: ChocolateyGUI By installing you accept licenses for the packages. Progress: Downloading ChocolateyGUI 0.16.0... 100% ChocolateyGUI v0.16.0 [Approved] chocolateygui package files install completed. Performing other installation steps. The package ChocolateyGUI wants to run 'chocolateyInstall.ps1'. Note: If you don't run this script, the installation will fail. Note: To confirm automatically next time, use '-y' or consider: choco feature enable -n allowGlobalConfirmation Do you want to run the script?([Y]es/[N]o/[P]rint): Y Installing ChocolateyGUI... ChocolateyGUI has been installed. chocolateygui may be able to be automatically uninstalled. Environment Vars (like PATH) have changed. Close/reopen your shell to see the changes (or in powershell/cmd.exe just type `refreshenv`). The install of chocolateygui was successful. Software installed as 'msi', install location is likely default. Chocolatey installed 1/1 packages. See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
途中、Do you want to run the script?([Y]es/[N]o/[P]rint):
とスクリプト実行の承認を求められますが、
面倒であればコマンド入力時に choco install ChocolateyGUI -y
とすれば、
自動で [Yes] を選択した結果と同じになります。
無事インストールが完了したら、choco list -l
でインストールされていることを確認してみましょう。
chocolateygui 0.16.0
が表示されていれば成功です (バージョンは 2018/9/2現在のもの)。
Pythonのインストール
同じく、Pythonでもインストールしてみましょう。
c:\workdir>choco install python Chocolatey v0.10.11 Installing the following packages: python By installing you accept licenses for the packages. Progress: Downloading python 3.7.0... 100% chocolatey-core.extension v1.3.3 [Approved] chocolatey-core.extension package files install completed. Performing other installation steps. Installed/updated chocolatey-core extensions. The install of chocolatey-core.extension was successful. Software installed to 'C:\ProgramData\chocolatey\extensions\chocolatey-core' python3 v3.7.0 [Approved] python3 package files install completed. Performing other installation steps. The package python3 wants to run 'chocolateyInstall.ps1'. Note: If you don't run this script, the installation will fail. Note: To confirm automatically next time, use '-y' or consider: choco feature enable -n allowGlobalConfirmation Do you want to run the script?([Y]es/[N]o/[P]rint): y Installing 64-bit python3... python3 has been installed. Installed to: 'C:\Python37' python3 can be automatically uninstalled. Environment Vars (like PATH) have changed. Close/reopen your shell to see the changes (or in powershell/cmd.exe just type `refreshenv`). The install of python3 was successful. Software installed as 'exe', install location is likely default. python v3.7.0 [Approved] python package files install completed. Performing other installation steps. The install of python was successful. Software install location not explicitly set, could be in package or default install location if installer. Chocolatey installed 3/3 packages. See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
chocolateyでは 2018/9/2現在、Pythonインストール時デフォルトで Python3が入ります。
指定したソフトウェ以外にも 2つインストールされていますが、
これは依存関係を解決してくれているためです。
つまり、Python3が満足に動作するために必要なソフトも一緒にインストールしてくれているということです。*3
インストール時に PATH
も通してくれますが、そのままでは未反映なので
refreshenv
コマンドで環境変数をリフレッシュするか、プロンプトを開き直してください。
すると python
コマンドで Python3を起動できます。
ChocolateyGUIを使ったソフトウェア環境引っ越し
最後のポイント、ソフトウェア環境の引っ越し (複製) 方法を説明します。
先ほどインストールした ChocolateyGUIを起動してみましょう。
Windowsキーを押して chocolatey
と打てば出てきます。
右上オレンジで囲ったアイコンをクリックすると、
インストール済みパッケージ名とバージョン情報を記録した xml形式の configファイルが出力されます。
Chocolateyインストール済みの環境で、
choco install ${configFIleName}
と実行することで、configファイルに出力したソフトウェアをインポートすることができます。
複数 Windowsマシンの環境を揃えるのに便利ですね。
インストーラを使って環境再現することを考えると、手間が恐ろしい……
補足:Chocolateyの注意点と可能性
以上、Chocolateyのメリットを中心に書いてきましたが、いくつか注意点があるので記載します。
Chocolateyの注意点
インストール済み同一パッケージとの競合に注意
レジストリや環境変数を編集する都合上、
インストール済みのソフトを Chocolateyでさらにインストールするのは避けた方が良いかもしれません。
先にインストール済みソフトをアンインストールをしてから
Chocolateyでインストールする場合はリスクが減るかもしれませんが、
リスクを避けるなら慎重にご判断ください (私はこの記事を書くために元々あった Pythonをアンインストールして Chocolateyで入れ直してます)。
アンインストールは発展途上
基本的に、アンインストールの箇所で触れたように、
アンインストール機能はまだ満足できるものではありません。
Chocolateyでのアンインストールは失敗することがあり、その場合はやはり GUIで消すしかありません。
また、これは Windowsアンインストーラーでも同じかと思いますが、
環境変数の削除や、依存関係にあったソフトウェアの一括アンインストールなどもできません (当然かもしれませんが)。
Chocolateyリポジトリにあるパッケージしかインストールできない
これも当然ですが、Chocolateyのリポジトリにあるものしかインストールできません。
choco list ${packageName}
で見つからなければ、従来通りインストーラーを落とす必要があります。
Chocolateyリポジトリにあるパッケージは必ずしも最新版ではない
個別のソフトウェア発行元が管理しているわけではないので、これもある種当然かもしれません。
例えば、2018/9/2現在で、postgresqlの最新バージョンは公式で 10.5, Chocolateyで 10.4.0.0でした。
同一パッケージの複数バージョンは同居できない?
開発者のみに関係する問題かと思いますが、同一パッケージの複数バージョンの同居はできなさそうです。
試しに apache-httpdのマイナーバージョンを指定して バージョン 2.4.32と バージョン 2.4.34をインストールしてみましたが、
後勝ちで上書きされました (そして httpdのデフォルトポートが 8080でした。Webサーバーのデフォルトポートは 80と思ってたので意外でした)。
なお、Pythonに関しては Python2, 3は別枠のようで、
別途 choco install python2
で同居させることができました (PATH
の優先順位も後勝ちなので、
デフォルト利用したいグローバル Pythonバージョンによって、PATH
の優先順位は変更する必要があります)。
このため、JDKや Apache, Tomcatなど、
開発のため複数バージョンが必要となりそうなものは Chocolateyで管理しない方がよさそうです。
Chocolateyの可能性
触っていて困ったことの一つが、依存が多いパッケージをアンインストールしたとき、
依存解決のために一緒にインストールされたけどもう使わないパッケージが残っていて面倒だな、
と思ったことです。
一つずつアンインストールしなければいけない、というのは従来の GUIでのアンインストールも同じなので、
プラマイゼロですが少し残念でした。
しかしふと、Chocolateyはコマンドラインツールなので、batを組んで自動化できるのではと思いました。
しっかり試してませんが、こんな感じでいい感じにできそうかも。
choco list -l
の結果を出力
cmd choco list -l > uninstallChocoPackage.bat
- エディタで uninstallChocoPackage.batを編集し、
choco uninstall ${packageName} -y
と記述 (矩形選択できるエディタを使う) - uninstallChocoPackage.batを管理者権限で実行
この他にも batを作ればあれこれできそうですね。
少しのアイディアがあればずいぶん楽になりそうです。
Chocolateyのアンインストール
Chocolatey自身をアンインストールしたい時は、フォルダ削除のみで大丈夫です。
詳しくは公式サイトの Uninstalling Chocolatey にありますが、
大体 C:\Program Data\chocolatey
にあるのでこのフォルダの削除で問題ありません。
まとめ
様々なメリットがあり、可能性も感じる Chocolateyですので、
開発者の方は一度触ってみると楽しいと思います。
ただし、まだまだ注意点や発展途上の部分もあるので、
従来通りのインストーラーと使い分けながら運用をする必要があります。
以下、よく使う Chocolateyコマンドを、最後にまとめておきます。
Chocolateyコマンドまとめ
機能 | コマンド |
---|---|
インストール済みパッケージの一覧 | choco list -l |
リポジトリ上のパッケージを検索 | choco list ${packageName} |
パッケージのインストール | choco install ${packageName} -y |
最新版でないインストール済みパッケージの一覧 | choco outdated |
パッケージの更新 | choco upgrade ${packageName} |
最新版でないインストール済みパッケージの一括更新 | choco upgrade all |
パッケージのアンインストール | choco uninstall ${packageName} |
参考
chocolatey.org ※本記事の画像出典もこちらから