anchor
WindowsからMacにスイッチ(乗り換え)する時の疑問10 〜OSXはUNIXの一種だというのは本当?
先日からこのコーナーはwebで見かけたMacへのスイッチャーへの疑問に勝手に答えるということで書いている。
質問者がこの記事を読んでいるかいないか、参考にしているかいないかに関係なく勝手に答えることにした。
皆さんも勝手に読んでほしい。
ところでよく読むと先日の質問者は、WindowsユーザというよりはLinuxからのスイッチャーらしい。
いうまでもなくこの疑問には
「MacOSXはUNIXの一種です」
と答えることになるが、そうであるならむしろUNIXユーザにとってこそMacOSXって異様なOSということになるかもしれない。
なんせ/usrなどの領域が不可視になって見えてないというところが
「ほんまかいな?」
という感じかもしれない。
そこでこの疑問を取り上げる。
WindowsからMacにスイッチ(乗り換え)する時の疑問10 〜OSXはUNIXの一種だというのは本当?
先日のスイッチャーさんはWindowsユーザというよりは、Linuxユーザらしい。
以下の質問からそれが伺える。
1. rootなどユーザ権限の設定はどうなっているのでしょうか。
sudoなどで一般ユーザがrootになることもできるのでしょうか。
2. Unixの種類は何だと思えばよいのでしょうか。Linux, BSD, など。 Linuxだったらdebian, redhatなどディストリビューションは?それともそのようなものと全く関係ないとか。
3. unix対応のソフト群が使えるかどうか?
それらをMac用にパッケージ化されたサイトがなどがあるようです。どのようにして利用するのでしょうか。パッケージ管理ソフトのインストールとかダウンロードだと思います。Linuxで言うところのyum, rpm, apt-getなどだろうと思います。Finkというところを見ているのですが、基本的な考え方などがイマイチ分かりません。unixのようにコマンドラインから入力していくのでしょうか。
4. 私はMacと言えばGUIの雄、Unixと言えばテキストの文化という風(左右の両極端)な固定観念があり、今の状態は両者の混合のため、混乱しています。固定観念がなく取り組むと飲み込みも早いと思うのですが。
5.gccのインストール方法 ダウンロードかインストールDVDによるらしいです。出来ればダウンロードで出来ないでしょうか。これひとつにしてもユーザ権限はどうするのか分かりません。gfortran, g95などのgnu系のフォートランですら、MACで動作するのでしょうか。さらに、./configure, make, make installなどの各種ソフトのソースからのインストール手法もそのまま使えるのでしょうか。
6.unixで何かインストールすると、ライブラリなどの依存関係問題が噴出するのですが、MACだったらパッケージ管理されていて、条件に合致していたらOKということになるでしょうか。Linuxだったらrpm(レッドハットパッケージマネージャ)コマンドすら依存関係で頓挫します。
7.私はLinuxだったらbashを使っていますが、Macで.bashrcに環境変数を入れられるのでしょうか。 またそれはそのユーザでログインした時点で有効になっているものなのでしょうか。
○コマンドラインを入力するターミナルの起動方法
unixは昨今はだいぶGUI環境になりましたが、それでも何かするときには必ず端末からコマンドを投入しています。MACでもそのような感じの使い方になるのでしょうか。そこまでは行かないだろうと思うのですが。
これらの質問に対してキャリアの古いMacユーザなら
「あれこれ考えてないでそこら中いじり倒してみたらいいのに。そうすればどういう仕組みになっているか自然に分かるのがMacの良さなんだが」
と思ってしまうかもしれない。
それがMacのカルチャーだ。
しかしUNIXのカルチャーは全く違う。
Terminal を起動すると最初は
「あなたは管理者からUNIXについて充分なレクチャーを受けていますね?
タイプする前によく考えろということを常に覚えておいてください」
というアラートが出る。
変なコマンドを打って実行してしまうと、これまでの作業をまとめたファイルを消失するだけでなく、下手するとシステムに致死的なダメージを与えることだってありうるのがCUIの世界だ。
だから「めったらやたらいじり倒す前に基本は知っておけ」というのがUNIXのカルチャーだ。
「いじり倒しているうちに自然に使い方が分かってくるよ」
というMacのカルチャーはUNIXユーザにはそれこそ異様に見えると思う。
こういう質問がLinuxからのスイッチャーから出るのはある意味当然かもしれない。
10年くらい前にiMac(三角で透明だった時代の)を買って帰って初めて家族の前でお披露目した時に、会計事務所でMS-DOSしか使ったことがないヨメさんが
「なにこれ? どこにフロッピー入れるの?
どこにコマンド打ったらいいの?」
とMacのデスクトップを見て言っていたのを思い出した。
CUIコマンドを全く使わない、打ち込む場所すら見当たらないMacのGUIはコマンドラインを扱い慣れた人には確かに異様に見えるらしい。(まだ当時はOS8かOS9かだったが)
それでその視点から上記の質問にひとつずつ答えてみる。
1. rootなどユーザ権限の設定はどうなっているのでしょうか。
sudoなどで一般ユーザがrootになることもできるのでしょうか。
rootの権限の扱いがどうなっているのか気になるのは、UNIXユーザの習い性だろう。
これはUNIXでは死命を制するからだ。
Windowsユーザや古いMacユーザはあまり気にしないが。
MacOSXにもCUI環境に他のUNIXと同じようにrootの設定はあって、その性質や権限は同じようなものだ。一点違うとすれば、Macの場合はデフォルトではrootは無効にされているということか。
これがセキュリティ的に意味があるとは到底思えないのだが、一応セキュリティのために無効にされているという。
有効にする方法はこちら に書いた。
このroot権限は実はCUIだけでなくGUIでも有効だ。
上記のリンク先の方法でrootを有効にするとログイン画面に
「その他のユーザ」
という項目が現れる。
ここに
ユーザ:root
パスワード:●●●●●●●●●(rootで設定したパスワード)
を入力すると見慣れないユーザ画面に入って、自分の名前がrootになっていることに気がつくだろう。
このGUI環境では、UNIXの原則にしたがって神の権限を持っているのでFinder をつかってGUIだけでもあらゆるユーザのファイルを開いたり、システムファイルを削除したりできる。
使い方には気をつけた方がいいのはCUI環境と同じだ。
またCUIコマンドでsudoを使えばrootだけに許されているプロセスが管理者ユーザには可能だという点は一般的なUNIXと同じだ。
これもこちら で解説した。
2. Unixの種類は何だと思えばよいのでしょうか。Linux, BSD, など。 Linuxだったらdebian, redhatなどディストリビューションは?それともそのようなものと全く関係ないとか。
これについては当該ページにも適切な答えが書き込まれているが、FreeBSDのクローンの一種で、Machカーネルを使い、Darwinという名称を与えられたUNIXのリビジョンということになる。
このUNIX部分に関してはSUM(シングルユーザモード)で起動するとカリフォルニア大学のライツ表示を見ることができる。
方法はコマンドキー+Sキーを押し続けながら起動すると黒いCUI画面が現れて、そこで件のライツ表示に続いてプロンプトが現れる。
GUIで再起動したいときは
reboot
というコマンドを打つのも多くのUNIXと同じだ。
またTerminal を起動して
uname -a
というコマンドを打てばDarwinのカーネルバージョンなどの情報を見ることができる。
この件こちら を参照。
Terminal を起動して"uname -a"と打ってみよう
カーネルのバージョン、チップのバージョンなどを答える
3. unix対応のソフト群が使えるかどうか?
それらをMac用にパッケージ化されたサイトがなどがあるようです。どのようにして利用するのでしょうか。パッケージ管理ソフトのインストールとかダウンロードだと思います。Linuxで言うところのyum, rpm, apt-getなどだろうと思います。Finkというところを見ているのですが、基本的な考え方などがイマイチ分かりません。unixのようにコマンドラインから入力していくのでしょうか。
私も以前finkをいじっていたこともあるが、今はMacPortsを使うのが主流じゃないだろうか。
これに関してはMacの手書き説明書さんの「MacPorts」 の記事を参照願えれば使い方まで解説しておられる。
4. 私はMacと言えばGUIの雄、Unixと言えばテキストの文化という風(左右の両極端)な固定観念があり、今の状態は両者の混合のため、混乱しています。固定観念がなく取り組むと飲み込みも早いと思うのですが。
その通りでしょうね。
MacがUNIXのCUIを搭載した時に、
「グラフィックインターフェイスを切り拓いてきたMacにCUIを搭載することに意味があるのか」
という批判も結構見かけたが、別に決めつけることもないんじゃないだろうか。
Mac由来のインターフェイスだけ使ってもいいし、両方使えればなおおいしい。
MacとWindowsどちらが優れているかじゃなくてBootCampで両方起動できればなお楽しい。
それだけのことだ。
UNIX専用機としてMacが使いやすいかどうかというのはまた別の話で、そういう使い勝手を追求したい人はそういうハードウエアを用意すればいいだけの話だ。
それよりもCUIでありGUIでもあるMacならまた違うアイデアが浮かぶかもしれない・・・というところに期待してほしい気がする。
5.gccのインストール方法 ダウンロードかインストールDVDによるらしいです。出来ればダウンロードで出来ないでしょうか。これひとつにしてもユーザ権限はどうするのか分かりません。gfortran, g95などのgnu系のフォートランですら、MACで動作するのでしょうか。さらに、./configure, make, make installなどの各種ソフトのソースからのインストール手法もそのまま使えるのでしょうか。
やっぱり質問の内容が開発者の内容になって来ていますな。
かなり専門的です。
FORTRANまで動くのかなんてことは私にも皆目分からないが、make, make installあたりはUNIXユーザは普通にMacでやっている。
6.unixで何かインストールすると、ライブラリなどの依存関係問題が噴出するのですが、MACだったらパッケージ管理されていて、条件に合致していたらOKということになるでしょうか。Linuxだったらrpm(レッドハットパッケージマネージャ)コマンドすら依存関係で頓挫します。
残念ながらライブラリなどの問題はMacでもあるんじゃないだろうか。
この辺私自身はあまり検証したことがないので、ご存知の皆さんにフォローいただければ嬉しいが、Macがパッケージ化されているのはGUIの部分だけで、GUIの領域にUNIXコマンドのライブラリまでパッケージにされたものなら、Finder で簡単に削除してアンインストールということもできるが、make, make installなどのコマンドでインストールしちゃったUNIXバイナリでもしライブラリの問題が起きたら、そこは他のUNIXと同じことだという気がする。
Macの革をかぶっているが、Macの革の下側はまんまUNIXだと思ったら良いと思う。
7.私はLinuxだったらbashを使っていますが、Macで.bashrcに環境変数を入れられるのでしょうか。 またそれはそのユーザでログインした時点で有効になっているものなのでしょうか。
やっぱりそうですか。
MacOSXはOS10.2のJaguarの頃まではtcshを使っていたが、OS10.3のPantherからTerminal はbashというシェルを利用するようになった。
だからその動きに何かを追加したい場合はbashrcに追記することで動きが変わる。
これもこちら に書いたが、私はその方法を利用してTerminal を悪用してスクリプトを自動実行するようなマルウエアの対策としている。
勿論次回Terminal を起動した時点でbashrcの変数は有効になっている。(再ログインは必要ない、Terminal 起動がログインにあたる)
bashrcに文字列を追記してTerminal を起動するたびに
「あなたの意思でTerminal を起動したのか?」
というアラートが出るようにした
ただし自動処理はできなくなったが安全性は高くなった
このようにbashrcの変数でTerminal の振る舞いを変えられる
○コマンドラインを入力するターミナルの起動方法
unixは昨今はだいぶGUI環境になりましたが、それでも何かするときには必ず端末からコマンドを投入しています。MACでもそのような感じの使い方になるのでしょうか。そこまでは行かないだろうと思うのですが。
そんなことはありません。
MacはUNIX的なCUIカルチャーとMacOS由来のGUIカルチャーを完全に分けているので、CUIを使いたいと考えてTerminal を起動するという動作をわざわざしない限りコマンドラインを要求するような作りにはなっていない。
逆にTerminal や他のシェルを利用すればGUIを使わずに操作することもできる。
この2つの環境は一応分けられている。
例えばTerminal コマンドを記述したスクリプトのファイルをGUIでクリックして開こうとしたらTerminal が自動的に起動して処理を始めるという連携は可能だ。
しかし通常Terminal は他のGUIのアプリケーションと同じように
"/Applications/Utilities/"
の中からTerminal.appというアプリのアイコンをクリックして、起動する。
あくまでGUI的な操作が入り口ではある。
<後日追記>
この項目についてはBBSに「ハル」さんから情報をいただいた。
『fortranについては、g95はMacPortsからインストール可です。Mac用のg77やgfortranも、以下のサイトからdownloadできます(PowerPC用、IntelMac用があります)。
http://hpc.sourceforge.net/
また、上のサイトからはCのコンパイラgccも入手できます。
「./configure, make, make install」は、「make install」のみ
「sudo make install」にしないと/usr/とかにファイルを置けずpermission errorが出たりします。当然ですが。
ライブラリの依存関係は、残念ながら出ます。Mac用に開発されているというより、各種Unix用のものをMacで使えるように移行しているというケースが多いからでしょう。MacPortsやFinkを使っていれば多少楽になりますが、それでもダメなときはあります。』
「ハル」さん、いつもありがとうございます。