Edited at

「新しいLinuxの教科書」をMacで実践する

More than 1 year has passed since last update.

「新しいLinuxの教科書」はLinuxシステムでよく用いられる キャラクタユーザインタフェース(CUI) のお作法をわかりやすく解説した本だ.CUIとは1980年代末まで一般に用いられていたヒューマンインタフェースで,平たく言うとキーボードとスクリーンだけのインタフェースである.よく言う「コマンドライン」とはCUIのことを指す.一方,現在主流のマウスやタッチを使ったインタフェースは グラフィカルユーザインタフェース(GUI) と言う.

LinuxシステムはもともとUnixというOSを参考に作られていて,CUIの大部分がかなり忠実なUnixのコピーである.そして,みなさんが使っている macOS (旧名 OS X) もまたUnixだ.こちらはBSDというもともとUnixに似せて作られたUnixではない何かが最終的にUnixのひとつになったOSだ.一言で言うと,Linuxシステムと macOS (OS X) は非常に近しい関係にある.少なくともCUIに関しては だいたい同じ だ.

「新しいLinuxの教科書」はすっぴんのLinuxシステムか,あるいは仮想環境にLinuxシステムを入れて学習することを推奨している.macOS (OS X) に最近Linuxシステムに限っては無償で仮想環境を導入できるアプリVeertuが登場したので,これを使って OS X の上にLinuxシステムを構築してしまうのもひとつの方法だ.この方法なら「新しいLinuxの教科書」にあわせて CentOS というLinuxシステムのひとつを入れることもできる.一方で macOS (OS X) はせっかくUnixなのだから,Linuxシステムとだいたい同じ部分に注目して「新しいLinuxの教科書」をいわば 「新しいMacの教科書」として読み替えていく ことも可能だ.このページではその方法を書いてみようと思う.


Macの準備

まずはお使いの macOS (OS X) のバージョンを見てもらいたい.バージョン 10.12 (Sierra), 10.11 (El Capitan) またはバージョン 10.10 (Yosemite) ならば,そのままでいい.ただし,出来ればマイクロバージョンは最新版まで上げておいて欲しい.もし macOS (OS X) のバージョンが 10.9 (Merverics) 以前であればSierraへアップグレードしてもらいたい.

さて,Linuxシステムには必要なソフトウェアをネットからダウンロードして自動的にインストールする仕組みが何種類かある.簡単に言うと Mac App Store みたいなものだ.有名なものはRedhat系と呼ばれるものとDebian系と呼ばれるものだが,どちらも元々はBSDのPortsシステムというパッケージインストールシステムを参考に作られている.そしてBSDが元になっている macOS (OS X) にも当然似た仕組みがある.

では早速それを使おう,と言う前に,最初の準備は Mac App Store から行う.まずは Mac App Store を開いてXcodeをインストールしてくれ.本校執筆時点ではバージョン8.2.1が最新版だ.(Yosemiteの人は7.2が最終版のようなので7.2を手に入れよう.)

XcodeはApple製の開発環境で,macOS (OS X), iOS, tvOS, watchOS 向けのアプリ開発のためのツールだ.アプリ開発なんてしないよという人も,これから使うコマンドラインツールが一緒に落ちてくるので,ディスクを食うが是非入れておこう.特に Sierra, El Capitan の人はXcodeのインストール無しだと先へ進むのが若干面倒くさくなるので,是非入れておきたい.

次に Apple Developer Connection (ADC) で無料のアカウントを作ってくれ.そしてこのダウンロードサイトから Command Line Tools (macOS 10.12) for Xcode 8.2 というのを見つけてくれ.これは Sierra の場合で El Capitan の人は Command Line Tools (macOS 10.11) for Xcode 8.2 のほうだ.Yosemiteの人は Command Line Tools OS X 10.10 for Xcode 7.2 だ.ダウンロードしたら,インストールしよう.

最後にBSDのPortsから派生したソフトウェアインストールシステムを導入しよう.Macにはその名も MacPorts というシステムが古くからあるのだが,最近よく使われるのがHomebrewというシステムだ.特別な事情がない限りHomebrewでうまくいくので,ここはHomebrewをインストールしてみよう.

まずMacでターミナルを起動する.こんなアイコンだ.

アイコンが黒背景に白文字なのに,起動したら白背景に黒文字のウィンドウが出てきてちょっとチグハグな印象をうける.そこで設定画面からHomebrewテーマを選んでおこう.次のスクリーンショットはYosemiteの英語モードでのものだが,どこをいじればいいかはだいたいお分かりいただけるだろう.テーマ一覧の一番下のDefaultボタンを押すとそのテーマがデフォルトになる.

僕は個人的にはHackというフォントを使っているが,ここはオリジナルのままでいい.

さて,ターミナル画面で次の文字列をコピーして打ち込もう.

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

打ち込んだらリターンキーを押す.そうすると勝手にHomebrewがインストールされる.

これで準備はおしまいだ.ターミナルをフルスクリーンにすると1980年代ぽくて大変よろしい.


macOS (OS X) とLinuxシステムの違い

準備ができたら「新しいLinuxの教科書」をそのまま読み進めていくといい.第1章「Linuxを使ってみよう」は飛ばして,第2章「シェルって何だろう?」と第3章「シェルの便利な機能」から読んでいくと良い.

第4章「ファイルとディレクトリ」は若干気をつける必要がある.ほとんどのLinuxシステムは自分のファイルを /home/{ユーザ名} ディレクトリに置くが macOS (OS X) では /Users/{ユーザ名} に置く.

もうひとつ,今のうちに知っておくと良いことがある.第4章ではlsコマンドのオプションについて解説があり,これはそのままLinuxシステムでも macOS (OS X) でも共通なのだが,細かい挙動が異なることがある.また他のオプションに関しては互換性がない場合もある.

Linuxシステムというのは,LinuxというカーネルすなわちOSのコアに,シェルとかlsコマンドとか,Unixを構成する様々なツールを抱き合わせたものだ.だいたいどんなLinuxシステムも基本的なツールはGNUというプロジェクトのものを使っている.一方で macOS (OS X) がベースにしたBSDのほうはカーネルに加えて一通りのツールも一緒に開発されていたので,BSD由来のツールが付いてくることになる.同じlsでも GNU ls と BSD ls があるわけだ.

GNUはBSDをお手本に基本的なツールを作っているので,違いは少ないが,やはり後発だけあってオプションも多いし,高機能であることも多い.PCで動くBSDであるFreeBSDには gls (GNU ls) というパッケージがあり,僕もお世話になっていた.macOS (OS X) でGNUのツールを使うようにすることはHomebrewを使えば簡単で,ターミナルから

brew install coreutils

とすればいい.元々のツール類と混同しないようにHomebrewはGNU版のほうにgという文字を付け加える.lsと打てば BSD ls が,gls と打てば GNU ls が起動する.

これだけ準備しておけば,第5章「ファイル操作の基本」第6章「探す,調べる」も特に問題はないだろう.


テキストエディタについて

第7章「テキストエディタ」ではVimというエディタの使い方が解説される.Vimを使えるに越したことはないが,僕は無理に使うことはないんじゃないかなと思う.せっかく macOS (OS X) なのだからちょっとしたテキスト編集は TextWrangler を使えばいいし,本格的なエディタが必要になればAtomを使うといい.他に CotEditorSublimeText も人気のエディタだ.


シェル

第8章「bashの設定」はそのまま読み進もう.


スーパーユーザ

第9章「ファイルパーミッション,スーパーユーザ」の第3節「スーパーユーザ」でsuおよびsudoコマンドが紹介されている.macOS (OS X) ではsuは使えずsudoだけが使えるが, sudoの使用も推奨されない. ここは読み飛ばしてしまおう.


プロセスとジョブ

第10章「プロセスとジョブ」に出てくるpsコマンドは一種の地雷である.元々本家Unixを名乗っていた System V という系列とBSD系列とで別々に進化していたところ,Linuxシステムはその両者を取り込んだためだ.Linuxシステムは従ってどちらのスタイルでも使えるのだが,そのためベテランユーザほど,どちらかのスタイルに思い入れがあったりする.本書はたまたまBSDスタイルを採用しているので,そのまま macOS (OS X) でも使えるが,古参Linuxユーザの中には「そんな使い方認めん」という人もいる.そんな人に出会ったら「BSD原理主義者なので」とつぶやいておこう.


テキスト処理

第11章「標準出力とパイプライン」第12章「テキスト処理」第13章「正規表現」第14章「高度なテキスト処理」は全てテキスト処理にまつわるものだ.これはそのまま読み進めてもらえればよかろう.

第14章第2節「awkコマンド」に関しては Xcode に付属の awk でも動作するが,今後本格的にawkを使うのであれば GNU awk (gawk) を使ったほうがいい.高性能だし,機能も多い.Homebrewにgawkというパッケージがあるので,それを使おう.


シェルスクリプト

第15章「シェルスクリプトを書こう」の冒頭でshとbashが異なるシステムに関する注意が書かれている.macOS (OS X) はshとbashが同じものなので,この注意は無視して構わない.第16章「シェルスクリプトの基礎知識」第17章「シェルスクリプトを活用しよう」もそのまま読み進めてもらいたい.


アーカイブと圧縮

第18章「アーカイブと圧縮」の第3節「gzipコマンド」の後半でtarコマンドだけで tar+gz ファイルを作る方法が書かれている.mac OS (OS X) のtarは BSD tar だが問題なく同じ方法が使える.ただし内部で使う gzip (zlib) バージョンが若干違うのか,出来上がったtgzファイルがLinuxシステムの tar (GNU tar) と BSD tar で異なることはある.両者に互換性はあるので気にすることはない.


Git

第19章「バージョン管理システム」はGitについて書かれている.冒頭でGitがインストールされていないシステムではインストールしましょうとあるが,macOS (OS X) ではXcodeをインストールするとGitも一緒にインストールされるので気にする必要はない.

Gitではなく Mercurial (Hg) を使ってみたいという方はこちらの記事を参考にしてもらいたい.


パッケージについて

第20章「ソフトウェアパッケージ」に関しては,残念ながら macOS (OS X) にはそのまま当てはまらない.ただしここで紹介されているyumとHomebrewのコマンドbrewは似ているので,流し読みしておくと良いだろう.


元記事はこちら.