読者です 読者をやめる 読者になる 読者になる

ぱちコマな日々

ざれごと、たわごと、うわごと、しごと。

ChocolateyというWindows10パッケージマネージャを使ってみる

確認環境

Spec / Version
PC mouse LB-J770X-SH2
OS Windows10 Home (ver 1607 build 14393.693)
Chocorately v0.10.3

ChocolateyというWindows向けパッケージマネージャ

ChocolateyWindows向けのパッケージマネージャだそうです。
コマンド一つで用意されているパッケージのソフトがインストール出来ちゃいます。
もう数年前からあるそうですが、存在すら知りませんでした。
 
今回、GoやPythonをChocolateyで入れなおしたので簡単にご紹介します。
もう少し詳しく知りたい方は、下記のサイトなどを参考にされてはいかがでしょうか。

参考

chocolatey 基本情報まとめ
Chocolateyで楽々Windows開発環境構築

 
因みに私が実際に使ってみて感じたこと。

  • 職場とかで使えたら便利だろうなぁ
  • Go Ver1.8が既に登録されているとは対応速いなぁ
  • システム全体で使うプログラムとしてインストールかぁ
  • インストール先フォルダに統一感ないなぁ
  • カスタムインストールできるオプション欲しわぁ

ひとまず、開発者さん謝謝です。

今回やること

  1. Chocolateyのインストール
  2. Chocolateyによるパッケージインストール
  3. バッチファイル化してみる
  4. Neovimを使う人はついでにPython系の設定も…

Chocolateyのインストール

管理者権限でコマンドプロンプトを起動(Win+x,aキー入力とか)して、下記コマンドを貼り付けて実行して下さい。

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

インストール後、chocoコマンドを実行してバージョンが表示さればOKです。
そんなコマンド無いよって怒られた場合、パスが反映されてないかもです。
一度コマンドプロンプトを再起動して下さい。

Chocolateyによるパッケージインストール

どんなパッケージが用意されているかは公式サイトから検索できます。
下記コマンドでテキストファイルにしてしまえばエディタで楽々検索編集できていいかもです。
コマンド実行完了まで若干時間がかかります。。。

clist -a > choco_list.txt

残念ながらNeovimはまだパッケージとして登録されていませんでした。

パッケージリストの作成

まず以下のようなXMLファイルをpackage.configという名前で用意しましょう。
エンコーディングUTF-8で保存して下さい。
versionオプションを指定すれば、バージョンを指定してインストール出来るようです。
「ようです」というのは、私自身全てバージョン指定なしで最新版をインストールしたので試せていません。

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="git" />
    <package id="hg" />
    <package id="python2" />
    <package id="python3" version="3.5.2" />
    <package id="golang" />
    <package id="7zip.portable" />
    <package id="ctags" />
    <package id="global" />
    <package id="curl" />
    <package id="SourceTree" />
    <package id="winmerge-jp" />
</packages>

以下は上記パッケージの簡単な説明です。

パッケージ名 説明
git バージョン管理システム(Linux開発用に作成された)
hg バージョン管理システム(Python製)
python2 Python2の開発実行環境
python3 Python3の開発実行環境
golang Go言語開発環境
7zip ファイル圧縮解凍ツール
ctags ソースを読むのに便利なタグファイル作成コマンド
global ctagsより高機能なタグファイル作成&解析コマンド
curl httpコンテンツ取得(要はダウンローダ的な)コマンド
SourceTree バージョン管理システム(git/hg)のGUIフロントエンド
winmerge-jp Windowsではお馴染みのdiffツール

上から5つgit~golangまではNeovim + Go開発にはきっとあった方が良い気がします。
後はお好みでどうぞ。
 
もちろん、GoとかNeovimとかどうでもいいよって方はお好きなパッケージを入れて下さいな。

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

次に用意したファイルと同じフォルダで下記コマンドを実行して下さい。
-yは「ホントにインストールしていいの?」という確認をスキップするオプションです。

cinst -y package.config

後はインストール完了まで待つだけです。

因みにpackage.configをパッケージ名にすればコマンドプロンプトから追加でパッケージをインストール出来ます。
cup allコマンドで全パッケージ更新できます。

cinst -y FoxitReader
cup all

バッチファイル化してみる

ついでなのでバッチファイルを作ってみました。
バッチファイルなんて生きている間に真面目に作ることなんてないな、なんて今まで接触避けてきました。
実際触ってみると、なんて摩訶不思議な世界でしょ。。。
 
なんて言い訳もこの辺にしておき、課題が残っています。
Chocolatey本体のインストール後は環境変数などが反映されて無さげで、パッケージのインストールまで続けて実行するとエラーを吐きました。
PATHやChocorateyInstallなどを一時的な環境変数へ設定して続けて実行してみてもダメでした。
仕方がないので本体インストール後は一度バッチ処理終了するという手抜き具合。。。
もう一度バッチファイルを実行するとパッケージのインストールを開始します。
なんてこった。なんてかっこ悪いことでしょ。

そんなのでも良い方は下記を適当な名前(*.bat)で保存して、ダブルクリックしてみて下さいまし。

Chocolatey本体のインストールとパッケージリストからのインストール実行

@echo off

:CHECK_ADMIN
rem ==================================================
rem 管理者権限の実行判定
rem ==================================================
rem 管理者権限で起動されたかチェックする
whoami /PRIV | find "SeLoadDriverPrivilege" > NUL

rem 管理者権限があれば、メイン処理へ
if not errorlevel 1 goto MAIN_JOB

rem 管理者権限が無ければ、管理者権限でbatファイルを起動し直す
@powershell -NoProfile -ExecutionPolicy Unrestricted -Command "Start-Process %~f0 -Verb Runas"
exit


:MAIN_JOB
rem ==================================================
rem chocolatey本体のインストール
rem ==================================================
set | findstr ^ChocolateyInstall= >nul 2>nul
if not {%ERRORLEVEL%} == {0} (
    echo #--------------------------------------------------
    echo # install chocolatey ...
    echo #--------------------------------------------------
    @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

    rem システム環境変数などが反映されない為、一旦抜ける
    echo please exec this batch script again ...
    pause
    exit
)

rem ==================================================
rem パッケージリストからインストール
rem ==================================================
set PACKAGE_LIST="%HOME%\package.config"
echo #--------------------------------------------------
echo # start install packages from %PACKAGE_LIST%
echo #--------------------------------------------------
cinst -y "%PACKAGE_LIST%"

pause
@echo on

全パッケージのアップデート実行

ついでのついでに全パッケージアップデートも作ってみました。
こっちの方が使用頻度は高いですかね。

@echo off

:CHECK_ADMIN
rem ==================================================
rem 管理者権限の実行判定
rem ==================================================
rem 管理者権限で起動されたかチェックする
whoami /PRIV | find "SeLoadDriverPrivilege" > NUL

rem 管理者権限があれば、メイン処理へ
if not errorlevel 1 goto MAIN_JOB

rem 管理者権限が無ければ、管理者権限でbatファイルを起動し直す
@powershell -NoProfile -ExecutionPolicy Unrestricted -Command "Start-Process %~f0 -Verb Runas"
exit


:MAIN_JOB
rem ==================================================
rem Chocolatey管理の全パッケージアップデート
rem ==================================================
cup all

pause
@echo on

次のPC買い替え時には構文含めて全部忘れてる予定なのでコメント多めです。

参考

バッチファイルを管理者権限で動かしたい
コマンドプロンプトからプログラムを管理者として実行する方法です。

Neovimを使う人はついでにPython系の設定も…

Neovimを使う人は前回の記事で対応した以下の作業もしちゃいましょう。

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

コマンドプロンプトから下記コマンドを打ち込んで実行!

pip3 install neovim 

デコードエラーが出る場合は、前回の記事など参考にしてみて下さい。

init.vimPythonのパスを指定する

Neovimの設定ファイルinit.vimに下記を追加して下さい。

let g:python3_host_prog = fnameescape(expand('C:\Python36\python.exe'))

Neovimを再起動するか設定ファイルを読み直した後、Neovimで下記コマンドを実行して下さい。

:echo system([g:python3_host_prog, '--version'])

 
ひとまずこれでPythonやGoを気軽にアップデート出来るようになりましたとさ。
何かと問題は色々出そうな気がしますが、まぁそれはまたそのときで。
 
おしまい。