FROM THE OLD SITE

旧WordPressで公開していた記事を、当時の内容を尊重して再掲載しています。

PAST ARTICLE · Apple

OS X Mavericks の初期設定

MacBook Pro Retina 13 インチが届いたので早速、初期設定することにしました。今回は、以前使用していた MacBook Air 13 インチからデータを移せずに新たにインストールすることにしました。

今回は、GitHub から提供されている BOXEN で初期設定することにしました。BOXEN は、構成管理ツールで Puppet をベースに作られています。

  • GitHub でアカウントを作成 FileVault の有効化
  • Xcode のインストール
  • BOXEN 用リポジトリの作成
  • 初期設定の作成
  • BOXEN の実行
GitHub でアカウント作成

GitHub のアカウントが必要となるので、作成します。SSH の設定など初期設定は完了しておいてください。

FileVault の有効化

FileVault は、使用しなくてもいいです。ただし、ノートブックなので、盗難などのセキュリティインシデントになる可能性もあるので、有効にしています。

Xcode のインストール

App Store から Xcode をインストールし、一度起動しておきます。また、Command Line Tools のみでも BOXEN の実行は可能です。

BOXEN 用リポジトリの作成

GitHub で my-boxen レポジトリを事前に作成しておきます。そして、ターミナルを起動して、BOXEN のソースをコピーして、先ほど作ったリポジトリに追加します。

sudo mkdir -p /opt/boxen
sudo chown sugitaku:staff /opt/boxen
git clone https://github.com/boxen/our-boxen /opt/boxen/repo
cd /opt/boxen/repo
git remote rm origin
git remote add origin git@github.com:Sugitaku/my-boxen.git
git push -u origin master

コミット時のアカウントを変えるときは、git config user.name、git config user.email で設定します。

初期設定の作成

インストールするものは、アプリケーション、Homebrew、フォントで下記のものとなります。

アプリケーション
  • Chrome
  • Dropbox
  • Google 日本語入力
  • iTerm2
  • LimeChat
  • Java
  • Skype
  • Sophos Antivirus
  • Sublime Text 2
  • Transmit
  • Tunnelblick
  • Vagrant
  • VirtualBox
Homebrew
  • emacs
  • tmux
  • tig
  • zsh
フォント
  • Ricty

では、実際に初期設定を作成していきます。外部リソースを使用するときは、Puppetfile に追記します。(https://github.com/boxen)にリソースが公開されているので、利用することができます。

% vi /opt/boxen/repo/Puppetfile
# This file manages Puppet module dependencies.
#
# It works a lot like Bundler. We provide some core modules by
# default. This ensures at least the ability to construct a basic
# environment.

...

github "boxen", "3.3.4"

# Core modules for a basic development environment. You can replace
# some/most of these if you want, but it's not recommended.

github "dnsmasq",    "1.0.0"
github "foreman",    "1.0.0"
github "gcc",        "2.0.1"
github "git",        "1.2.5"
github "go",         "1.0.0"
github "homebrew",   "1.5.1"
github "hub",        "1.0.3"
github "inifile",    "1.0.0", :repo => "puppetlabs/puppetlabs-inifile"
github "nginx",      "1.4.2"
github "nodejs",     "3.3.0"
github "openssl",    "1.0.0"
github "phantomjs",  "2.0.2"
github "pkgconfig",  "1.0.0"
github "repository", "2.2.0"
github "ruby",       "6.7.2"
github "stdlib",     "4.1.0", :repo => "puppetlabs/puppetlabs-stdlib"
github "sudo",       "1.0.0"
github "xquartz",    "1.1.0"

# Optional/custom modules. There are tons available at
# https://github.com/boxen.

github "chrome",     "1.1.2"
github "dropbox",    "1.2.0"
github "iterm2",     "1.0.6"
github "java",       "1.2.0"
github "osx",        "2.2.0"
github "skype",      "1.0.7"
github "sublime_text_2", "1.1.2"
github "transmit",   "1.0.1"
github "tunnelblick", "1.0.4"
github "vagrant",     "3.0.2"
github "virtualbox", "1.0.9"

続いて、インストールの設定を書いていきます。modules/people/manifests/sugitaku.pp を作成します。作成するファイル名のルールは、.pp となっています。また、クラス名も class people:: となっています。

% vi /opt/boxen/repo/modules/people/manifests/sugitaku.pp
class people::sugitaku {

  # os x
  include osx::finder::show_all_on_desktop

  include osx::dock::autohide
  class { 'osx::dock::icon_size':
    size => 18
  }

  include osx::no_network_dsstores
  include osx::software_update

  # local application
  include chrome
  include dropbox
  include iterm2::stable
  include java
  include skype
  include sublime_text_2
  sublime_text_2::package { 'Emmet':
    source => 'sergeche/emmet-sublime'
  }
  include transmit
  include tunnelblick::beta
  include vagrant
  include virtualbox

  package {
    'GoogleJapaneseInput':
      source => "http://dl.google.com/japanese-ime/latest/GoogleJapaneseInput.dmg",
      provider => pkgdmg;
    'LimeChatForMac':
      source => "https://downloads.sourceforge.net/project/limechat/limechat/LimeChat_2.39.tbz",
      provider => compressed_app;
    'SophosAntivirusForMac':
      source => "http://downloads.sophos.com/home-edition/savosx_90_he.zip",
      provider => compressed_app;
  }

  # homebrew
  package {
    [
      'emacs',
      'tmux',
      'tig',
      'zsh',
    ]:
  }

  # ricty font
  homebrew::tap { 'sanemat/font': }
  package { 'sanemat/font/ricty':
    require => Homebrew::Tap["sanemat/font"]
  }
  exec { 'set ricty':
    command => "cp -f ${homebrew::config::installdir}/share/fonts/Ricty*.ttf ~/Library/Fonts/ && fc-cache -vf",
    require => Package["sanemat/font/ricty"]
  }

  $home = "/Users/${::boxen_user}"

  # dotfile
  $dotfiles = "${home}/dotfiles"
  repository { $dotfiles:
    source => 'Sugitaku/dotfiles',
  } 
  file { "${home}/.zshrc":
    ensure => link,
    target => "${dotfiles}/.zshrc"
  }
  file { "${home}/.tmux.conf":
    ensure => link,
    target => "${dotfiles}/.tmux.conf"
  }
  file { "${dotfiles}/.emacs.d/conf":
    ensure => directory
  }
  file { "${home}/.emacs.d":
    ensure => link,
    target => "${dotfiles}/.emacs.d/"
  }
  osx_chsh { $::luser:
    shell => "${boxen::config::homebrewdir}/bin/zsh";
  }
}

最後に、Node.js と Ruby は古いバージョンがインストールされるので、不要なときはコメントアウトしておきます。

% vi /opt/boxen/repo/manifests/site.pp
require boxen::environment
require homebrew
require gcc

Exec {
...
}

File {
...
}

Package {
...
}

Repository {
...
}

Service {
...
}

...

node default {
...

  # node versions
  #include nodejs::v0_6
  #include nodejs::v0_8
  include nodejs::v0_10

  # default ruby versions
  #include ruby::1_8_7
  #include ruby::1_9_2
  #include ruby::1_9_3
  include ruby::2_0_0

...
}
BOXEN の実行

BOXEN を実行して、初期設定を行います。また、FileVault が無効なときは、script/boxen --no-fde とします。

% cd /opt/boxen/repo/ 
% script/boxen

あとは、シェルに下記を追加します。

[ -f /opt/boxen/env.sh ] && source /opt/boxen/env.sh

最後に、変更分をコミットしておけば完了となります。新しくアプリケーションを追加するときは、設定ファイルに追記して、BOXEN を実行すればインストールできます。ただし、App Store でのみ公開されているアプリケーションは、BOXEN では管理できないので、別途 App Store からインストール必要があります。

dotfiles のように、my-boxen もいろいろな方が共有されちるので、どういうアプリケーションを使っているのかな?、どういう設定にされているのかな?ということが、テキストでわかるのが非常にいい感じです。また今回、初期設定を久し振りにしたので、どのように設定したのか忘れているところがあったので、やっぱりテキストで管理されていることは、とても便利でした。

my-boxen (https://github.com/Sugitaku/my-boxen)

dotfiles (https://github.com/Sugitaku/dotfiles)