コマンドの仕組み・インストールしたソフトウェアの仕組み

(以下、辞書的な読み物として・・・)

ターミナルで実行されたコマンドを読み取るのは、シェル。

・シェル
「ターミナルとOSを繋ぐ窓口役」のような存在。
ターミナルから入力されたコマンドを読み取って、OSに対して指示を渡し、結果をターミナルに返して表示や実行などの動作をさせる。

シェルにはさまざまな種類があり、それぞれプロンプトやコマンド実行後の出力で、表示と挙動が異なる。・・・zsh:2019年にmacOSの標準シェル。

・zsh
シェルの1つ。プロンプトは%。

# ターミナル
% echo $SHELL

# 出力結果=> /bin/zsh

zshは、. から始まるドットファイルを作成・編集することで、設定を行う。
環境構築では、.zshrcに設定を記述して、PATHにアプリケーションの場所を示すことでコマンドを使用可能にする。

・PATH
「環境変数」と呼ばれるOS用の変数のこと。PATHには、複数の絶対パスの情報が保存されている。

コマンドが入力されたとき、シェルはPATHに記述されたパスのディレクトリ内のファイルを検索する。
PATHに絶対パスを保存してアプリケーションのありかを示せば、どこからコマンドを実行してもアプリケーションのコマンドを打つ・・・「PATHを通す」ことができる。

環境構築では、.zshrcにインストールしたrbenvやMySQLのコマンドをすべてのディレクトリから使用できるようにPATHを通す作業を行う。

# rbenvのパスを通す
% echo 'eval "$(rbenv init -)"' >> ~/.zshrc

# MySQLのパスを通す
% echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.zshrc

echoコマンド:
>>に続けてファイル名を指定することで、ファイルに文字を追加できるLinuxコマンド。
.zshrcにrbenvの設定を反映するためのコマンドを記述することで、PATHを通す。

______________________

コマンドが実行されると、シェルがそれを読み取ってOSに指示を出す。OSは指示を受けて、コマンドに合ったアプリケーションを動作させる。
・・・後からPCに追加する必要があるがよく利用されるアプリケーションは、コマンドラインツールとしてまとめられている。

・コマンドラインツール
コマンドで操作するアプリケーションのまとまり。
導入することで、アプリケーションをPCにインストールできる。

・Command Line Tools
macOS専用のコマンドラインツール。
Linuxコマンド以外で操作するアプリケーションの多くはCommand Line Toolsのインストールによって、まとめてPCに導入できる。

______________________

・依存、依存関係
あるファイルやライブラリが正常に動作するために、別のファイルやライブラリによる処理と結果が必要になる状態を、依存。
依存している関係を、依存関係。

例えば、ライブラリAがあり、ライブラリAの処理を利用して動作するライブラリBがあるとき、「AとBは依存関係にある」。

______________________

アプリを開発する際には、ライブラリを取り込み使用することで、必要な機能を1から作る手間を省き、独自の実装部分だけを開発できる。
こうした外部からインストールできる処理のまとまりにもバージョンがあり、互いに複雑な依存関係を持っている。

依存関係を考慮して管理するのが、パッケージ管理。

・パッケージ管理
パッケージ:プログラムや処理をひとまとめにしたもの。

パッケージ管理:パッケージやパッケージが持つライブラリなどの依存関係を考慮して、インストールやバージョンアップを行う管理のこと。
1つのパッケージを利用したい場合、そのパッケージと依存関係にあるパッケージも合わせてインストールする。

GemfileとBundlerによってRubyのパッケージ(Gem)を管理していたものも、パッケージ管理に含まれる。
このような管理を自動的に行なってくれるツール・・・「パッケージ管理ツール」または「パッケージマネージャー」。

・Homebrew
macOSのパッケージ管理ツール。
macOS上で動作するアプリケーションの多くが、Homebrewからインストール可能。

# Homebrewのインストール
% ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
コマンド                                                                         説明
brew -v                                           Homebrewのバージョンを表示する
brew install [パッケージ名]          パッケージをインストールする
brew uninstall [パッケージ名]      パッケージをアンインストールする
brew list                                          インストールしたパッケージを表示する
brew search                                   インストール可能なパッケージを表示する
brew update                            インストールしたパッケージを最新へ更新する

・Node.js
本来ブラウザ上で動くJavaScriptを、サーバーサイドで動作させる「実行環境」。

# Node.jsのインストール
% brew install nodejs

Node.jsがインストールされると、サーバーサイドで利用できるJavaScriptのパッケージを活用できる。パッケージは依存関係を生むため、YarnなどのNode.jsのパッケージ管理ツールがある。

・Yarn
Node.jsの環境上で動作するパッケージを管理する、(サーバーサイドで動作する)JavaScriptのパッケージ管理ツール。

# Homebrewを使ってYarnをインストール	
% brew install yarn

______________________

プロジェクトや言語のバージョンを管理するのが、バージョン管理。

・バージョン管理
変更したバージョンを記録あるいは外部から保存して、過去のバージョンや最新のバージョンに切り替えること。

バージョン管理をすることで、パッケージとの依存関係の問題を解消したり、変更して問題が発生したプロジェクトを過去の安定したバージョンに切り替える、などの対応ができる。

環境構築では、Homebrewでrbenvをインストールして、Rubyのバージョンを管理できる。

 ・rbenv
Rubyのバージョンを切り替えるためのバージョン管理ツール。
複数のバージョンのRubyをダウンロードしておいて、使用するRubyのバージョンをディレクトリごとに指定することも可能。

# rbenvのインストール
% brew install rbenv

Macでは、はじめからRubyが使用可能だが、環境構築ではrbenvを使って新たにRubyをインストールし直して使用する。
これは、Macではじめから入っているRubyでは、バージョンを変更しづらく、パッケージとの依存関係の問題を引き起こしやすくなってしまうためです。

コマンド、説明
rbenv -v
                          rbenvのバージョンを表示
rbenv install [バージョン]
                          Rubyバージョンを指定してインストールする。
rbenv uninstall [バージョン]
                          Rubyバージョンを指定してアンインストールする。
rbenv versions
                          インストールされているRubyバージョンの一覧を表示する。
rbenv global [バージョン]
                          すべてのディレクトリで使用するRubyバージョンを
                          切り替える。
rbenv local [バージョン]
                          カレントディレクトリで使用する
                          Rubyバージョンを切り替える。
rbenv rehash
                          RubyやGemに関するコマンドをバージョン変更後も
                          使用できるようにする。

2020/12/05

この記事が気に入ったらサポートをしてみませんか?