2014年6月11日水曜日

windows版パッケージ管理ソフトChocolateyについて

久しぶりにpowershellについて書きたい。
今回書くのはWindowsでもLinuxのYumやAptみたいにパッケージ管理できるという話
名前はChocolateyといいます。https://chocolatey.org/
この手のソフトをうまく使えばバージョンアップのウザさから開放されます。
バージョンアップのウザさとは
①アプリを立ち上げて更新チェックするメニュー、ボタンを押すと、しばらく何もできなくなるとか
②古いので作者のサイトに行って新しいバージョンをチェックするべき?とか考えて見に行くとか
  作者のWEBを開くとどこに新しいのがあるのかさっぱりわからないとか
③アプリを立ち上げた時 新しいバージョンが有ります更新しますか?とかポップアップが出たりするとか
④OSを立ち上げた時同じように 新しいバージョンが有ります更新しますか?とか聞かれたりするとか
⑤作業中にポップアップとかバルーンが出てきて  新しいバージョンが有ります更新しますか?とか聞かれたりするとか
⑥インストールするといらないものまでおまけに入ってしまってそれの修復ができないのでWEBで調べるとか
⑦突然えらく重くなったと思ったら勝手にアップデートされてたとか
の一連の思考を中断する動きだ。

そもそもやりたいことがあるからOS,アプリを起動しているのに、
 こんなことをしているうちにやりたかったことを忘れることもありがち(それは別の問題か)
それを防ぐために付箋アプリを起動するとそこで更新しますか?とか聞かれたりする。
そういう一連のウザイダメな流れから永久に開放されたい。

要するに自分が許した時間以外は全く変わってほしくないわけだ。そして変わるときはOS、アプリ全部一斉に更新したい。

現在実際に使われるLinux,iPhone,iPad,Android
にはもれなくパッケージ管理ソフト(アプリの更新を管理し一括で更新する方法)が付いている
iOSならApple Store や
AndroidならGoogle Play
Linuxならyumやapt
などがそれ。

この流れに乗らないものとしてMac,Windowsがあるが
MACの場合MacPort,Apple Storeなどでこの流れに乗りつつあるし、
Windowsの場合もMicrosoft Storeとかでこの方向で行くらしい。
がどっちにせよすべてのアプリの網羅はできないだろう。

これに対してパッケージ管理が完全なのがlinuxの yumやapt。
このコマンドを使えばOSとアプリが一気に更新される。ソースビルドをやめてこれ一本でも充分やっていける。
それに比べるとMac,Android,iOSの場合はOS、アプリの更新はそれぞれ別機能だったりするので
ちょっとややこしい
Windowsにおいてこれにあたる機能はWindows Update(Microsoft update)だと思うが、
この機能ではOS、Microsoft関連ソフト、一部ドライバしか更新されない
例えばOfficeとかvisual studioとかだ。
インストールされたアプリの一覧はコントロールパネルの"アプリケーションの追加と削除"で見れるから、本当はここでWindows Updateとアプリの更新が一括でできればよい。
しかし今のところそんな機能はない。つける予定があるのかも不明

そこでChocolateyの出番となる。これを使うとPowerShellからアプリ更新チェックがコマンド一発でできるようになる。
PowershellからOSの更新を行う方法はもう説明したから、
http://kokawa2003.blogspot.jp/2014/03/powershellmicrosoft-updatehistory.html
更新チェックそのものが一応powershellですべてできるってことになる。

Chocolateyのサイトはこれ
https://chocolatey.org/
まずインストールはこれをコマンドプロンプトから実行。
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
インストールするとPowershell やコマンドプロンプトからつかえるようになる。

使い方は
①アプリのインストール
例:notepad++のインストール
cinst notepadplusplus
 のようにタイプするとインストールされる。ここでcinst の後ろの文字列をパッケージ名という。
cinst [パッケージ名]
ということ。複数のときはそのまま並べて書く
だからこのパッケージ名を見つければ何でもコマンド一発でインストールできる
とりあえず最初に入れるアプリとしては
cinst ChocolateyGUI
がいいと思う。
ChocolateyのGUIだ
なおパッケージ名一覧は
https://chocolatey.org/packages
にすべてある。
※管理者権限で実行しないとき管理者権限を取りに行くがOKとしても なぜかうまくインストール出来ないことがある

②パッケージ名検索
choco search ???
choco list ???
で部分一致する
パッケージ名を返す。なお
choco list
で現在のChocolateyの管理する全パッケージを返す
。現在1899個らしい。
PCにインストールされたアプリ一覧は
choco list -lo
でOK

③アンインストール
cuninst [パッケージ名]

④更新
cup all
   で全インストール済みパッケージ更新
cup
    でChocolatey自身を更新 
cup [パッケージ名]
   でそのパッケージ更新

ていう感じ。

⑤HELP
choco help

なおインインストールのとき
すでにOSにChocolateyを使わずインストールされてたらどうなる?
ってことが気になると思う
この答えはインストールされてるのが最新でないときはそれが上書きインストール
最新の時はChocolatey管理ファイルのみインストールされる。というもの

結局コントロールパネルの
アプリケーションの追加と削除を見て全部Chocolateyに切り替えた。
なかなかいい感じで満足。
これでOSとアプリともにPowerShellから一括で更新できるので便利。

今考えているのはWindows updateとChocolateyの更新がMS系のアプリで重なっても
矛盾しないか?ということ

あと全く別件だがこれで何故かwindows live mail が英語版になった。
これは入れたあとでLangSelectorを実行して言語を設定しないとおかしくなることがある
というMSらしい行き当たりばったりな仕様のせいだった。 
これが私がMSが嫌いな理由の一つ。 

最後にリストしておく
>choco list -lo
7zip 9.22.01.20130618
7zip.commandline 9.20.0.20130618
7zip.install 9.22.01.20130618
adobereader-jp 11.0.07
audacity 2.0.5
autohotkey.portable 1.1.15.00
BetterCredentials 2.0.0.1
Bing 5.0
ccleaner 4.14.4707
ChocolateyGUI 0.11.1
directx 9.0.0.0
ditto 3.18.46
DotNet4.5 4.5.20120822
DotNet4.5.1 4.5.1.20140606
dropbox 2.8.3
Evernote5 5.0.1.1188
ext2fsd 0.52.0.20140511
filezilla 3.8.1
Firefox 29.0.1
flashplayeractivex 13.0.0.214
flashplayerplugin 13.0.0.214
gimp 2.8.10.20140514
git 1.9.2
git.install 1.9.2
GoogleChrome 35.0.1916.114
imgburn 2.5.8.0
javaruntime 7.0.60
lhaplus 1.59.3
line 3.6.0.32
MicrosoftSecurityEssentials 2.0.657.1
mingw 4.8.1.20140107
msysgit 1.7.10.20120526
NugetPackageManager 2.7.41101
nunit 2.6.3
peazip 5.3.1
PowerGUI 3.8.0.129
PowerShell 3.0.20121027
powershell4 4.0.0.20131204
PSWindowsUpdate 1.5.1
python 3.4.1
ruby 2.0.0.48100
SakuraEditor 2.1.1.3
Silverlight 5.0
spybot 2.3.39
sysinternals 2014.05.13
teamviewer 9.0.28223
thunderbird 24.5.0
vlc 2.1.3
windowsessentials 16.4.3508.0209
WindowsLiveInstaller 2012.0.0
WindowsLiveMail 2011.0.0
WindowsLiveWriter 2012.0.0
winmerge 2.14.0
winmerge-jp 2.14.0.43
x2go 4.0.2.0