Homebrew Cask で古いバージョンのパッケージを作成、インストールする
MySQL Workbench 6.3.4 をHomebrew でインストールしたかったのですが、
caskroom/versionsにもパッケージが存在していないかったため、自分で作ることにしました。 *1
Githubに/homebrew-versionsリポジトリ作成
cd $(brew --prefix)/Library/Taps/caskroom/homebrew-versions git remote add <GitHubのユーザ名> https://github.com/<GitHubのユーザ名>/homebrew-versions
Cask のためのトークン(Caskファイルの名称など)を生成
下記のサイトから、6.3.4 のdmgをダウンロードします。
MySQL :: Download MySQL Workbench (Archived Versions)
展開するとMySQLWorkbench.app
というファイル(厳密にはディレクトリ)があります。
Caskファイル名を提案してくれるツールがあるので、
展開したappを引数にして実行します。
$ "$(brew --repository)/Library/Taps/caskroom/homebrew-cask/developer/bin/generate_cask_token" \ '/Applications/MySQLWorkbench.app'
Proposed token: mysqlworkbench Proposed file name: mysqlworkbench.rb Cask Header Line: cask 'mysqlworkbench' do WARNING: the file '/usr/local/Library/Taps/caskroom/homebrew-cask/Casks/mysqlworkbench.rb' already exists. Prepend the vendor name if this is not a duplicate.
すでに名前が重複しているという警告がでます。
そこで、末尾に"-634"をつけてmysqlworkbench-634.rb
というファイル名でCaskファイルを作成します。
既存のCask ファイルをコピー
新規作成の場合は、
$ brew cask create アプリ名
で、$(brew --repository)/Library/Taps/caskroom/homebrew-cask/Casks/
配下にファイルが作られますが、
今回は、過去バージョンのパッケージを作るため、
$(brew --repository)/Library/Taps/caskroom/homebrew-versions/Casks/
配下にファイルを作成します。
下記の通り、既存ファイル$(brew --repository)/Library/Taps/caskroom/homebrew-cask/Casks/mysqlworkbench.rb
を
別名のmysqlworkbench-634.rb
で、$(brew --repository)/Library/Taps/caskroom/homebrew-versions/Casks/
配下にコピーします。
$ cd $(brew --repository)/Library/Taps/caskroom/homebrew-versions $ cp ../homebrew-cask/Casks/mysqlworkbench.rb ./Casks/mysqlworkbench-634.rb
新規Caskファイルmysqlworkbench-634.rb
を編集
元ファイルmysqlworkbench.rb
を変更して、mysqlworkbench-634.rb
を作成します。
変更点は以下の3つです。
- 最初の cask の行 -> mysqlworkbench-634
- version の行 -> 6.3.4
- sha256 の行 -> チェックサムの再計算値
チェックサムは以下のように再計算します。
$ shasum -a 256 ~/Downloads/mysql-workbench-community-6.3.4-osx-x86_64.dmg af214391dfc9c6bdb7640bf286732ce7d4500721906d9a0ad3b107db8f15e57a /Users/username/Downloads/mysql-workbench-community-6.3.4-osx-x86_64.dmg
コピー元ファイルmysqlworkbench.rb
の内容
cask 'mysqlworkbench' do version '6.3.6' sha256 '81732bddff9e9d6b71cc565e4d3b4636e0e47db5b344aaef4b7e20c83177d94a' url "https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-#{version}-osx-x86_64.dmg" name 'MySQL Workbench' homepage 'https://www.mysql.com/products/workbench' license :gpl gpg "#{url}.asc", key_id: '8c718d3b5072e1f5' app 'MySQLWorkbench.app' zap delete: [ '~/Library/Application Support/MySQL/Workbench', '~/Library/Preferences/com.oracle.mysql.workbench.plist', '~/Library/Preferences/com.oracle.MySQLWorkbench.plist', '~/Library/Saved Application State/com.oracle.mysql.workbench.savedState', '~/Library/Saved Application State/com.oracle.MySQLWorkbench.savedState', '~/Library/Caches/com.oracle.mysql.workbench', ] end
新規作成したmysqlworkbench-634.rb
の内容
cask 'mysqlworkbench-634' do version '634' sha256 'af214391dfc9c6bdb7640bf286732ce7d4500721906d9a0ad3b107db8f15e57a' url "https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-#{version}-osx-x86_64.dmg" name 'MySQL Workbench' homepage 'https://www.mysql.com/products/workbench' license :gpl gpg "#{url}.asc", key_id: '8c718d3b5072e1f5' app 'MySQLWorkbench.app' zap delete: [ '~/Library/Application Support/MySQL/Workbench', '~/Library/Preferences/com.oracle.mysql.workbench.plist', '~/Library/Preferences/com.oracle.MySQLWorkbench.plist', '~/Library/Saved Application State/com.oracle.mysql.workbench.savedState', '~/Library/Saved Application State/com.oracle.MySQLWorkbench.savedState', '~/Library/Caches/com.oracle.mysql.workbench', ] end
インストールできるか確認
$ brew cask install mysqlworkbench-634.rb ==> Downloading https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-6.3.4-osx-x86_64.dmg ######################################################################## 100.0% ==> Verifying checksum for Cask mysqlworkbench-634 ==> Moving App 'MySQLWorkbench.app' to '/Applications/MySQLWorkbench.app' 🍺 mysqlworkbench-634 staged at '/opt/homebrew-cask/Caskroom/mysqlworkbench-634/6.3.4' (1347 files, 29M)
成功したら、以下の通りチェックして、passed となればOKです。
$ brew cask audit mysqlworkbench-634 --download ==> Downloading https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-6.3.4-osx-x86_64.dmg Already downloaded: /Users/onoeiko/Library/Caches/Homebrew/mysqlworkbench-634-6.3.4.dmg ==> Verifying checksum for Cask mysqlworkbench-634 audit for mysqlworkbench-634: passed
Caskファイルの変更をプルリクエストする
せっかく作成したので、他の人にも使ってもらえるよう、
Githubでプルリクエストをします。
# Gitリポジトリ $ cd $(brew --repository)/Library/Taps/caskroom/homebrew-versions # 新規ブランチ作成 $ git checkout -b 'mysqlworkbench-634' # コミット $ git add Casks/mysqlworkbench-634.rb $ git commit -v
コミットメッセージを入力します。
(過去のプルリクエスト*4などを参考に、適当なメッセージを入力してください。)
Add MySQL Workbench 6.3.4 # Please enter the commit message for your changes. Lines starting (以下略)
コミットしたら、
GitHub にログインして,caskroom/homebrew-versionsをフォークし、
作成したブランチをプッシュします。
$ git push <ユーザ名> mysqlworkbench-634
※ パスワードはGithubの設定ページ*5から発行したトークンを使用します。(トークン作成にあたって、チェック項目がありますが、とりあえず全部チェックしときました。。)
※ pushでfatal: repository 'https://github.com/<ユーザ名>/homebrew-versions/' not found
と出る場合、参考記事*6の記載の通り、remoteをリセットすると解決するかもです。
プッシュが完了したら、
caskroom/homebrew-versionsからプルリクエストを送信します。
確認、Mergeしてもらうまで待ちましょう。
以上です。
追記
古いバージョンは明示的な理由がないと追加しないということで、Mergeしてもらえませんでした。。
古いバージョンを追加する場合は、追加理由をコミットメッセージか、プルリクエストのコメントに記載したほうが良さそうです。