Your SlideShare is downloading. ×
One Getとchocolateyのパッケージを作ってみよう
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

One Getとchocolateyのパッケージを作ってみよう

1,363

Published on

One Getとchocolateyのパッケージを作ってみようの発表資料です

One Getとchocolateyのパッケージを作ってみようの発表資料です

Published in: Engineering
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,363
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. OneGetとChocolateyのパッケージを作ってみよう めとべや東京 #4 2014/05/31 @oota_ken
  • 2. こんなパッケージを作りました
  • 3. 背景 会社内でテスト自動化スキルの育成計画が立てられた 候補者が一式を簡単にインストールできる環境が要請された SeleniumCAMPという週1-2 各2時間実施するハンズオン勉強会と自習で学んでもらう ->様々な理由によりSelneiumIDE, Java + Selenium WebDriver, Groovy + Gebを選択 →一式にインストールにchocolateyを採用 →cinst Firefox GoogleChrome java.jdk git groovy gradle intellijidea-community →OracleのWebサイトの仕様変更によりjava.jdkが正常動作しない期間が10日程度発生 →java.jdkはJava 7ベースだし、人の対応を待っていたら困ると言うことで、Java 8ベースの chocolateyパッケージをjava.jdkをパクってもといリスペクトして作成することを決意
  • 4. Chocolateyパッケージの作り方 Quick start guide https://github.com/chocolatey/chocolatey/wiki/CreatePackagesQuickStart を読めばほぼできる http://terurou.hateblo.jp/entry/2013/09/08/171151 の解説も詳しいです というのだと身もふたもないのでステップを追って気を付ける点を 前提条件 Chocolateyが入っていること 管理者として実行する Set-ExecutionPolicy Unrestricted iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
  • 5. ステップ 通常手順:ひな形をコピーして作ります 管理者として実行する cinst warmup git nuget.commandline cd %ChocolateyInstall% git clone [[https://github.com/chocolatey/chocolateytemplates.git]] cd chocolateytemplates_templates warmup addTemplateFolder chocolatey "%CD%chocolatey" warmup chocolatey jdk8
  • 6. ステップ パッケージ定義ファイルの*.nuspecを自分のパッケージ用に修正します cd jdk8 gvim jdk8.nuspec が、テンプレートを修正するより、既に動作実績があるものを自分用に直してします方が早 いです テンプレートからだと嵌まりました 日本人の方が作られているHaskell Platformパッケージがお勧めです https://github.com/f440/chocolatey-HaskellPlatform/blob/master/HaskellPlatform.nuspec 注意点としてメモ帳など無条件でUTF-8をBOM付きにするエディタを使うと動かないので、 BOMはつけないUTF-8で保存できるエディタを使いましょう ちなみに私はVimを推奨します
  • 7. ステップ 依存関係の定義 *.nuspecに下記のように依存関係を定義すると、aptやbrewのように最初のパッ ケージを指定してあげるだけで、芋づる式にパッケージがインストールされます 但し、バージョン番号とか細かい制御はできないようです <dependencies> <dependency id='groovy' /> <dependency id='gradle' /> <dependency id='maven' /> <dependency id='ant' /> </dependencies>
  • 8. ステップ インストールスクリプトを修正します ise ./tools/chocolateyInstall.ps1 これまた、テンプレートではなく、既存の簡単なののカスタマイズから始めると早いです サイレントインストール対応のアプリケーションだと実質1行で済みます 例えば、JetBrains IntelliJ IDEA - Community Edition $name = "intellijidea-community" $url = "http://download.jetbrains.com/idea/ideaIC-13.1.2.exe" $kind = "EXE" $silent = "/S" Install-ChocolateyPackage $name $kind $silent $url ちなみにIntelliJ IDEAのChocolateyは開発元のJetBrainsがメンテナンスしており、最新化して欲しいとリクエストしたら、1日後に対応 されていました。素晴らしいです chocolateyInstall.ps1はPowerShellの仕様により「BOM付き」でないといけませんので注意してください。ISEを推奨します
  • 9. chocolateyInstall.ps1注意点 その1 64ビットと32ビットの両方が存在するアプリケーションのパッケージを作る場合 64ビットOSと32ビットOSの環境判断のコードは自分で書く必要があります パスの設定等を自分でする場合 C:Program Files 64ビットOSだと64ビットアプリが入る場所 32ビットだと32ビットアプリが入る場所 C:Program Files (x86) 64ビットOSだと32ビットアプリが入る場所 この判断ロジックを自分で書く必要があります リスペクト元のjava.jdkではこの条件判断が適切に実装されていなかったので、32 ビットOSでインストールがこけるという報告を受けてjdk8では調査し修正しました 正しくは、パッケージ作成の32ビットの環境も用意して検証する必要があります
  • 10. chocolateyInstall.ps1注意点 その1 OneGetでのデバッグ OneGetではChocolatey Pluginが存在するので、OneGetではChocolateyのパッ ケージを修正することなくインストールできます ただし、Write-Hostなどのコンソール出力がされないため、デバッグが非常に困 難です 例によってリスペクトしたjava.jdkはChocolatey自体のバグにより隠蔽されていた バグコード(関数内で暗黙的に戻り値を複数回戻していた。[void]により対処)が OneGetの正しい実装により露見したのですが、デバッグが本当に大変でした 現状、(64 or 32) x (Chocolatey or OneGet)の4つの組合せでパッケージのインストー ル/(あれば)アンイストール検証が必要です
  • 11. ステップ パッケージ化 cpack ローカルインストールで検証 cinst jdk8 -source '%cd%' Chocolateyアカウントを作成し、APIキーをコピーしておく APIキーを設定する nuget SetApiKey 取得したAPIキー -sourcehttp://chocolatey.org/ パッケージを発行する cpush jdk8.1.8.0.05.nupkg
  • 12. まとめ Chocolatey最初は取っつきにくいけど1つ作ってしまえば、後はそれをひな形にして 作れます Windowsで何らかのソフトウェアのインストールに苦労したなら、インストールの Blog記事を書くよりもChocolateyとOneGetのパッケージを作ってあげる方が多くの 人の時間を節約できると思います 今後のバージョンのWindowsに標準搭載されるであろうOneGetのリポジトリは現状 Chocolateyしかないので、ないと思ったらChocolateyのパッケージを作ってみれば、 後で何か嬉しいことがあるかもしれません 今後、WindowsがDev&Opsの方々に使って頂けるOSになるにはLinuxやMacのよう なパッケージシステムの整備が不可欠だと思いますので、興味ある方は是非!

×