Homebrew

Homebrew Casksの1Passwordが改名していた件

Homebrew Casksの1Passwordが改名していた

ある日、ふとbrew cask listした際に、不穏な結果が出ました。

1
2
$ brew cask list
onepassword(!)

こんなんが含まれていたのです。

で、brew cask info onepasswordしてみると、全ての情報が空になっています。

さらに、brew cask search passwordとかしてみると…

1
2
3
4
5
6
==> Partial matches
1password
1password-beta
1password3
password-gorilla
password-practice

名前変わっとるやん! つーか最初から1passwordにしとけや!

「onepassword」がアンインストールできない

まあ、それなら削除すればいいやと思って、brew cask uninstall
したのですが、これが一晩ほっといてもサッパリ終わりません。かといって、別にエラーが出るでもない。

もうめんどくさくなったので、brew cask info onepasswordでディレクトリ確認して、普通に削除しました。あと/Applicationsディレクトリのシンボリックリンクも。

それからbrew cask install 1passwordしたら普通に使えているので、たぶん大丈夫だと思います。

Yosemiteクリーンインストールした(実行編2:パッケージ管理システム)

前置き

からの続き。今回はHomebrew等のパッケージ管理システムによる環境構築です。

Homebrew+homebrew-file

まずは、Homebrew環境の構築です。

この時点ではiTerm2のインストールや.bashrcの復旧などが済んでいないので、素のターミナル.appで作業しています。

最初に、sudo必要な時に毎回やるのが面倒なので、sudo -sをしました。巨大な間違いでした。これについては後ほど。

本来は、何はともあれXcode commandline toolのインストールをすべきなのですが、すっかり忘れていました。あとでGit使うときにインストールしていい?と訊かれたのでインストールしてもらいましたが。

1
$ xcode-select --install

以下コマンドでHomebrewをインストールし、正常に機能することを確認します。

1
2
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew doctor

次に、homebrew-fileパッケージをインストールします。

1
$ brew install rcmdnk/file/brew-file

どうやらGitは最初から入っているので、そのままBrewfileをcloneします。SSH環境を作り直すので面倒だったので、httpsでcloneしました。

1
2
$ brew file set_repo catfist/brewfile
$ brew file update

これで全てのHomebrewおよびHomebrew Casksパッケージがインストールされるので、ボーッと待ちます。

……が、思いの他エラーで停止するので、途中から以下のようなコマンドを繰り返していました。

1
$ brew file update && say ok || say ng

これで、終わったとき/止まったときは声で教えてくれます。止まったら、brew file edit(Vimで開く)でBrewfileを修正します。

これで、私の場合、以下のパッケージ管理システム(みたいなもの)がインストールされます。あと、Dropboxですね。

  • rbenv
  • python(pip)
  • node(npm)
  • ghq

Dropboxから各種設定ファイルをコピー

まあこれは普通に。ただし、後で以外と厄介な問題が待ちかまえているのですが……。

この際、SSH関係のファイルもコピーしたのですが、これは別の理由があって、結局作り直しました。Dropboxに置いておくのは別に問題ないと思います。

Homebrew以外のパッケージ管理システムでインストール

まずは、シェル環境を復旧します。iTerm2のインストール&設定復旧は済んでいるので、次はdotfilesの復旧です。

私はDropboxからコピーしてしまいましたが、git cloneを強く推奨します。

1
2
$ git clone <dotfileリポジトリ> ~/dotfiles
$ ln ~/dotfiles/.bashrc ~/.bashrc

こんな感じですね。他にも.vimrcとか色々です。

ともあれシェル環境が整ったので、他のパッケージ管理システムを動かしていきます。

これはシェルスクリプトを作ってありました。こんな感じです。

RubyGemのインストールにsudoが必要なので、前述の通りsudo -sしたセッションで実行しましたが大間違いです。gem installコマンドにのみsudoを付けることを強く推奨します。

その他補足。

  • シバンに-vxオプションが付いているのは、進行状況をターミナルに表示させるためです。
  • Homebrew CasksでインストールしたアプリをAlfredで検索するには、brew cask alfred linkが必要です。
  • ghqのルートディレクトリを.gitconfigに追記していますが、.gitconfigが復旧済みなら要らないです。
  • Gitパッケージでインストールが必要なものは、サブプロセスでインストールしています。
  • Geeknoteで手入力によるログインが必要なので、通知を出して入力要求しています。sayもさせたほうがよかったですね。
  • RubyGemはHomebrewにもあるので、そっちの方が楽かも。

これで、大方の環境構築は完了したのですが……余計なことをしたツケを払うのにもう少し手間をとられることになります。

続く

次回は、2大やらかしの解決編です。

  • Dropboxからコピーしたディレクトリ・ファイルををls -lした時に、謎の@が!
  • なんかあちこちroot権限でしかアクセスできなくなってる!

Yosemiteクリーンインストールした(準備編1:パッケージ管理システム)

前置き

スーパー今更ネタですが。

Yosemiteじゃないと使えないアプリがちょこちょこ出てきたので、とうとうMavericksからアップデートすることにしたのですが、せっかくなのでクリーンインストールして環境の再構築をしようとしたらえらい時間かかりました。

やりたいこととしては、

  • 使ってないアプリをまるっと削除
  • MacPortが入ってるので全面的にHomebrewに移行
  • ついでに可能な限りHomebrew Caskに移行
  • ついでに入れたいパッケージをまとめてインストール

homebrew-fileでパッケージのリストアップ

上記のパッケージを利用します。

1
$ brew install rcmdnk/file/brew-file

まずはインストール。

BrewfileをGithubで管理するので、Githubにリポジトリを作っておきます。

Brewfileを新規作成します。

1
$ brew file init

リポジトリ名を聞かれるので、この場合はcatfist/brewfileと言っておきます。

すると、/usr/local/Library/catfist_brewfileにBrewfileができています。一部省略。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# tap repositories and their packages
## caskroom/cask
tap caskroom/cask
install brew-cask
## rcmdnk/file
tap rcmdnk/file
install brew-file
...
# Other Homebrew packages
install autoconf
install automake
install cmake
install cscope
install fontconfig
install freetype
install gettext
install git
...
# Below applications were installed by Cask,
but not corresponding casks were found.
#cask install Warning: nothing to list

この時点で、Brewfileにはインストール済みのHomebrewパッケージがインストールされています。

Homebrew Caskでインストールできるアプリのリストアップ

1
$ brew file casklist

このコマンドを実行すると、インストール済みのアプリの中から、Homebrew Caskでインストール可能なものをリストアップしてくれます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Cask applications
# Please copy these lines to your Brewfile and use with `brew file install`.
# Main tap repository for brew-cask
tap caskroom/cask
install brew-cask
# Apps installed by Cask in brew-cask
# Apps installed directly instead of by Cask in brew-cask
#cask install onepassword #/Applications/1Password 4.app
#cask install accessmenubarapps #/Applications/AccessMenuBarApps.app
#cask install alfred #/Applications/Alfred 2.app
#cask install #/Applications/Bitcasa.app
...

すると、こんな感じのファイルCaskfileが生成されます。たしかBrewfileと同じディレクトリだったと思う。

これらを、コメントの#を外してBrewfileの最下部に追加します。いらないのは省きます。

一部、なぜかCask名抜きで検出されるアプリがあるので、以下のようにして調べます。

1
$ brew cask search bitcasa

Brewfileの編集

ついでに、未導入のパッケージも追加することにします。

Brewfileは、以下のコマンドで編集できます。

1
$ brew file edit

以下のようにすると、導入可能なHomebrewパッケージ、およびCaskパッケージの一覧を得ることができます。

1
2
$ brew search
$ brew cask search

これをgrepなりpecoなりファイルに書き込みなりして、気になるパッケージを調べて追記していきます。

最後にBrewfileをGithubにプッシュしますが、brew file updateとすると追記したパッケージがOS X アップデート前にインストールされてしまうので、普通にgitコマンドでやります。

1
2
$ git commit -m "Add package"
$ git push

その他のパッケージ管理システム

その他のパッケージ管理システムのリストも取っておきます。

1
2
3
4
$ gem list
$ pip list
$ npm list
$ ghq list

私の場合、これらは大した数ではないので、普通にテキストファイルとして保存しておきました。

また、ghqで管理下リポジトリにはドットファイルを管理するdotfilesリポジトリが含まれています。この中にはさらに.vimrcが含まれており、そこにはNeoBundleのリストも含まれています。

管理を簡単にするために、まず、以下の記事を参考に、.vimrcを分割しました。

そして、bundle-init.vimにも、ついでに導入したいパッケージを追加しておきます。

これらのリストは、それ自体dotfilesリポジトリに突っ込んでおきました。念のため、インストールしないものも含めたCaskfileも。

当然、その他のGitリポジトリも最新の状態をプッシュしておきます。AppleScriptや、Sublime Textの設定ファイルなどは、この方法で保存しました。

(関連:分散したローカルリポジトリをhln+ghq+pecoで管理する | 豆腐メンタルは崩れない

続く

これでパッケージ管理システムの準備は完了ですが、まだ各種アプリケーションの設定が残っています。これらはDropboxで同期しておきましたが、それは次の記事で書きます。