
それゆけ!ターミナル部 第1回 ゼロから始めるターミナル生活 〜開発環境の構築〜
みなさんこんにちは。ターミナル部 部長のタナカトモフミです。
突然ですがソフトウェアエンジニアのみなさんであれば日頃ターミナルを使う機会が必ずあるのではないかと思います。しかしターミナルをきちんと使いこなせているでしょうか?無駄なコマンドを入力していたりしないでしょうか?ターミナルを使用する場面が多ければ多いほど、きちんと使いこなせば作業効率は何倍にも向上するはずです。
本連載では意外と見落としがちな基本的な事柄からちょっとマニアックなテクニックまで、ターミナルを使いこなすための方法を若手エンジニアのタミ夫くんとシェルスキー先生と一緒に学んでいきたいと思います。作業環境としてはmac os xを想定していますが、環境構築やコマンドのインストールなど一部を除けばlinux上でもそのまま適用することができます。
それではターミナル部へようこそ!
タミ夫くんがターミナルで作業をしているのですが、
なにやら困っているようです。
-
あれ?おかしいな…コマンドがないなー。
-
どうしたんじゃ?
-
このWeb記事の通り、コマンドを打ってるんですけど、なんか動かないんスよー。。。
-
そのコマンド、インストールされてないんじゃないかのう?
-
え、自分で入れないと使えないんスか?インストーラどこスかー?
-
インストーラて。開発向けのツールは、Macなら最近は Homebrewを使ってインストール・管理するのが一般的じゃよ。
-
えー!?そうなんスかぁー?やばいっスねー。早く言ってくださいよー。すぐもったいぶっちゃってー。
-
お、おう…。(なんかこの子ちょっと怖いのぅ)
Homebrewとは?
Homebrewは Mac OS X用のパッケージマネージャーです。UNIX環境でよく使われる開発ツールやライブラリといったパッケージを簡単にインストール・アップデートができるようになります。オープンソースで開発されており、有志によって大量のパッケージが準備されているため、ほとんど主要な開発ツールを揃えることができます。
Homebrewをインストールしよう!
Homebrewのインストールは非常に簡単です。ターミナルを起動して以下のコマンドを実行しましょう。
$ /usr/bin/ruby -e "$(curl -fssl
https://raw.githubusercontent.com/homebrew/install/master/install)"
基本的に自動でインストールされますが、途中でいつくかの操作が必要になるので注意してください。以下のメッセージが表示されたら、エンターキーを押下して先に進みます。
press return to continue or any other key to abort
以下のメッセージが表示されたら、macにログインする際のパスワードを入力します。
to proceed, enter your password, or type ctrl-c to abort.
password:
途中でHomebrewの動作に必要な Xcodeも自動的にインストールされます。楽チンですね。
downloaded command line tools (os x 10.11) for xcode
installing command line tools (os x 10.11) for xcode
done with command line tools (os x 10.11) for xcode
done.
これで準備完了です。インストール方法や途中の操作は変更になる可能性があります。うまくいかないなと思ったら、本家のサイトに従ってインストールしましょう。
[Homebrew 公式HP http://brew.sh/]
Homebrewの使い方
■パッケージのインストール
早速、Homebrewを使用してパッケージのインストールや検索の方法を覚えましょう。
インストールのコマンドは以下の通りです。
$ brew install package_name
wgetをインストールしたい場合は、以下のようになります。
$ brew install wget
複数のパッケージをまとめてインストールしたい場合はパッケージをスペース区切りで複数指定することもできます。
$ brew install wget vim
Homebrewでインストールしたパッケージがどこにインストールされるか、確認しておきましょう。
$ which wget
/usr/local/bin/wget
$ ls -l bin/wget
lrwxr-xr-x 1 tanacasino admin 28 8 14 00:52 bin/wget -> ../cellar/wget/1.18/bin/wget
$ find cellar -type d -depth 3
cellar/openssl/1.0.2h_1/bin
cellar/openssl/1.0.2h_1/include
cellar/openssl/1.0.2h_1/lib
cellar/openssl/1.0.2h_1/share
cellar/wget/1.18/bin
cellar/wget/1.18/share
Homebrewでは/usr/local/Cellarにパッケージがインストールされるようになっています。さらにパッケージ名のディレクトリ配下は、バージョン番号で区切られており、複数のバージョンが保持できるようになっています。最新のパッケージにアップグレードして調子が悪いなんて時にも、すぐに切り戻すことができるため安心して使用できます。
■パッケージの検索と詳細情報の閲覧
パッケージの検索にはbrew search PACKAGE_NAMEを使用します。
$ brew search mysql
automysqlbackup mysql++ mysql-connector-c mysql-sandbox mysqltuner
mysql mysql-cluster mysql-connector-c++ mysql-search-replace
homebrew/php/php53-mysqlnd_ms homebrew/versions/mysql55
caskroom/cask/mysqlworkbench
homebrew/php/php54-mysqlnd_ms homebrew/versions/mysql56
caskroom/cask/navicat-for-mysql
homebrew/php/php55-mysqlnd_ms caskroom/cask/mysql-connector-python
caskroom/cask/sqlpro-for-mysql
homebrew/php/php56-mysqlnd_ms caskroom/cask/mysql-utilities
さらにパッケージの詳細情報を閲覧するにはbrew info PACKAGE_NAMEを使用します。
$ brew info mysql
mysql: stable 5.7.14 (bottled)
open source relational database management system
https://dev.mysql.com/doc/refman/5.7/en/
conflicts with: mariadb, mariadb-connector-c, mysql-cluster, mysql-connector-c, percona-server
not installed
from: https://github.com/homebrew/homebrew-core/blob/master/formula/mysql.rb
==> dependencies
build: cmake ✘
required: openssl ✔
==> options
--with-archive-storage-engine
compile with the archive storage engine enabled
--with-blackhole-storage-engine
compile with the blackhole storage engine enabled
--with-debug
build with debug support
--with-embedded
build the embedded server
--with-local-infile
build with local infile loading support
--with-test
build with unit tests
==> caveats
we've installed your mysql database without a root password. to secure it run:
mysql_secure_installation
to connect run:
mysql -uroot
to have launchd start mysql now and restart at login:
brew services start mysql
or, if you don't want/need a background service you can just run:
mysql.server start
どのバージョンがインストールされるのか?依存するパッケージ、コンパイル時のオプションが表示されます。
■パッケージのアップグレード
パッケージを最新版にアップグレードする手順は2段階あります。1つ目はパッケージの一覧情報を最新のものにするbrew updateコマンド、2つ目は実際にパッケージを最新版にするbrew upgrade PACKAGE_NAMEコマンドです。パッケージを特に指定しない場合はインストール済みのすべてのパッケージがアップグレード対象となります。
$ brew update
# インストール済みのすべてのパッケージをアップグレードする
$ brew upgrade
■サービス系のパッケージの管理
brew servicesコマンドを使用すれば、mysqlやredis,memcachedといったデーモンサービスの起動・停止も管理できます。
# 起動
$ brew services start memcached
==> successfully started `memcached` (label: homebrew.mxcl.memcached)
# 停止
$ brew services stop memcached
stopping `memcached`... (might take a while)
==> successfully stopped `memcached` (label: homebrew.mxcl.memcached)
# 再起動
$ brew services restart memcached
stopping `memcached`... (might take a while)
==> successfully stopped `memcached` (label: homebrew.mxcl.memcached)
==> successfully started `memcached` (label: homebrew.mxcl.memcached)
■パッケージのバージョン管理
パッケージのインストールで説明したように、Homebrewでは同じパッケージの複数のバージョンを保持することができます。これを切り替える際に使用するコマンドがbrew switch PACKAGE_NAME VERSIONです。パッケージのアップグレード等で調子が悪くなった、パッケージを簡単に元に戻すことができます。
# インストールされているバージョンの一覧を表示する
# 末尾に * の記号がついているバージョンが現在使用されているバージョン
$ brew info wget
wget: stable 1.18 (bottled), head
internet file retriever
https://www.gnu.org/software/wget/
/usr/local/cellar/wget/1.16.3 (9 files, 1.5m)
poured from bottle on 2015-03-10 at 05:22:44
/usr/local/cellar/wget/1.17 (9 files, 1.5m)
poured from bottle on 2015-11-17 at 03:24:04
/usr/local/cellar/wget/1.17.1 (9 files, 1.5m)
poured from bottle on 2016-01-08 at 11:13:06
/usr/local/cellar/wget/1.18 (9 files, 1.6m) *
poured from bottle on 2016-06-14 at 18:28:13
... 省略
# 切り替える
$ brew switch wget 1.17.1
# 切り替わったことを確認
$ wget --version
gnu wget 1.17.1 built on darwin15.2.0.
# 元に戻す
$ brew switch wget 1.18
# 元に戻ったことを確認
$ wget --version
gnu wget 1.18 built on darwin15.5.0.
また、brew upgradeにより、パッケージがアップグレードされないように、`brew pin PACKAGE_NAME`を使用してバージョンを固定することもできます。
# アップグレードされないように固定する
$ brew pin wget
# 固定されているパッケージのリストを出す
$ brew list --pinned --versions
wget 1.18
# 固定を外す
$ brew unpin wget
■使い方がわからない時のhelpを覚えておこう
installやservicesなど多様なコマンドがありますので、使い方をすべて覚えるのは難しいでしょう。思い出せなくて困った時は、ググるのも良いですが、以下のコマンドを覚えておけばグッとトラブルの解決が楽になります!
# 1. brew コマンドのサブコマンドすら思い出せなくなった時に使う
$ man brew
# 2. brew のサブコマンドの使い方を知りたい時に使う
$ brew help sub_command
$ brew help upgrade
brew upgrade [install-options] [--cleanup] [--fetch-head] [formulae]:
upgrade outdated, unpinned brews.
options for the install command are also valid here.
if --cleanup is specified then remove previously installed formula version(s).
if --fetch-head is passed, fetch the upstream repository to detect if
the head installation of the formula is outdated. otherwise, the
repository's head will be checked for updates when a new stable or devel
version has been released.
if formulae are given, upgrade only the specified brews (but do so even
if they are pinned; see pin, unpin).
Homebrew Caskを使ってアプリを
インストールしよう
Homebrew Caskを使用すれば、Mac向けのアプリもインストールできるようになります。
WebブラウザやIDEなどのアプリがインストールできますので、新しいMacのセットアップなどで大変便利です。以下のコマンドで使用できるようになります。
$ brew tap caskroom/cask
==> tapping caskroom/cask
cloning into '/usr/local/library/taps/caskroom/homebrew-cask'...
remote: counting objects: 3798, done.
remote: compressing objects: 100% (3747/3747), done.
remote: total 3798 (delta 90), reused 493 (delta 33), pack-reused 0
receiving objects: 100% (3798/3798), 6.52 mib | 544.00 kib/s, done.
resolving deltas: 100% (90/90), done.
checking connectivity... done.
tapped 1 formula (3,767 files, 15.4m)
たとえばWebブラウザのGoogle Chromeをインストールすることができます。
$ brew cask install google-chrome
==> creating caskroom at /usr/local/caskroom
==> satisfying dependencies
complete
==> downloading https://dl.google.com/chrome/mac/stable/ggro/googlechrome.dmg
######################################################################## 100.0%
==> no checksum defined for cask google-chrome, skipping verification
==> moving app 'google chrome.app' to '/applications/google chrome.app'
google-chrome was successfully installed!
注意点
よくあるハマりポイントを2点紹介しますので、遭遇したら参考にしてください。
- 1. brew searchできなくなる
- 検索をやりすぎた場合など、GitHubのAPIの制限にかかりエラーとなる場合があります。(Homebrewはsearchの仕組み上GitHubのAPIを呼んでいます)GitHubにログインして、Access Tokenを生成し、HOMEBREW_GITHUB_API_TOKENという環境変数に値を設定すれば使えるようになります。
- 2. xcodeが必要と言われる
- Homebrewインストール時に、最低限必要なXcode Command Line Toolsはインストールされますが、それだけではインストールができないパッケージが存在します。以下のようなメッセージがでた場合は、App StoreのアプリからXCodeをインストールしてから、再度インストールしましょう。
$ brew install macvim --with-override-system-vim
macvim: a full installation of xcode.app is required to compile this software.
installing just the command line tools is not sufficient.
xcode can be installed from the app store.
error: an unsatisfied requirement failed this build.
ちなみにHomebrewからXCodeをインストールしようとすると以下のようになります。おとなしくApp Storeからインストールしましょう。
$ brew install xcode
error: no available formula with the name "xcode"
xcode can be installed from the app store.
またインストール後もXCodeを起動してライセンスに同意していない場合は以下のようなエラーがでる場合があります。
$ brew install macvim --with-override-system-vim --with-lua
error: you have not agreed to the xcode license. please resolve this by running:
sudo xcodebuild -license
XCodeを起動してライセンスに同意するか、上のエラーで推奨されているコマンドを使って同意しましょう。
まとめ
-
どうじゃ、わかったかの?
-
やばいッス。めっちゃ動いたッス。
-
ちなみに何をインストールしようとしてたんじゃ?
-
wgetッスね!ないとこのサンプルが動かなくて。
-
ふ、ふーん。(あ、それcurlで代用できそうじゃからHomebrewいらなかったんでは・・・)
-
あとgitのサブコマンドのworktreeって奴が使えなくて困ってたんスけど、Homebrewで最新版入れたら使えるようになったッス!やばいッス!
-
おーそうかそうかよかったのう!コマンドがないパターン以外にも、古いバージョンが入ってるから新しいの使いたいって場合にも使えて便利じゃな!
(フゥ〜、危うく間違った方向に導くところじゃったわ。)
Homebrewを導入することでMac上にUNIX系のツールをインストールできるようになり、タミ夫くんも快適なターミナル生活の第一歩を踏み出す準備ができました。次回はターミナル上で利用できる便利なショートカットを紹介したいと思います。お楽しみに!