パッケージマネージャーとは?mac初心者はhomebrewな理由を3つ解説!

パッケージマネージャーとは?mac初心者はhomebrewな理由を3つ解説! プログラミング
困ったさん
困ったさん
macのターミナルでコマンドインストールするときbrewと打ってるけどこれってなに??これがいいの??

こんな疑問を解決します。

この記事を書いてる人

FUMIPEN BLOG
本記事の内容

  • パッケージマネージャーとは
  • macの代表的なhomebrewとはなんなのか?

本記事では「パッケージマネージャーとHomebrew」について解説

この記事を読むことで、なんとなしに使っていたHomebrewの意味とメリットがわかります。

結論から話すと、

結論

  • パッケージマネージャーとはライブラリやソフトウェアの導入と依存関係を管理するシステム
  • Homebrewはmacの代表的なパッケージマネージャーで様々なメリットがある
  • Homebrewのメリット①:インストールにかかる時間が短い
  • Homebrewのメリット②:システムの適合度合いが高い
  • Homebrewのメリット③:広いパッケージを管理

パッケージマネージャーの必要性

パッケージマネージャーとは日本語の通り、「パッケージを管理するもの」です。

例えば

  • パッケージのインストール・アンインストール作業
  • パッケージやライブラリ(プログラムを動かすためのファイル)の依存関係
  • パッケージ自体の最新版への更新
ん??そもそもパッケージって何??
困ったさん
困ったさん
ふみペン
ふみペン
パッケージの定義をわからないことには始まらないから一から説明するね!

パッケージとは

パッケージとはITの分野では、関連する様々な要素を一つにまとめたもの、複数の製品を組み合わせた複合的な製品、市販・出来合いの製品などの意味で使われる。

引用:IT用語辞典 e-Words パッケージ

何かのセット??
困ったさん
困ったさん
ふみペン
ふみペン
基本的にはそうだね。さらにここでは具体例を挙げて説明するね!
ソース コンパイル バイナリー

私たちがHello worldというプログラムを作りたいと思うとします。

せっせと左の図のように書いたものがソースと呼ばれるものです。

ふみペン
ふみペン
よくソースコードって言われたりするよね!

そしてバイナリーファイルを作成したら実行することでプログラムが動きます。

しかし!!ここで単純に実行することはできません。

え??どういうこと??
困ったさん
困ったさん
ふみペン
ふみペン
ここでバイナリーを実行するためのファイル群のことをパッケージというよ!

つまりパッケージマネージャーとは、「バイナリーファイルを実行するためのファイル群を管理するもの」です。

ちなみにパッケージの中身を具体的に以下に挙げておきます。

パッケージの中身

  • アプリケーションの実行プログラム/ソース本体orURL
  • 設定ファイル
  • 共有ライブラリ
  • ソフトウェアを構築するのに必要な開発用ファイル
  • ドキュメント
  • メタデータ

さらにメタデータの中には以下のデータが含まれます。

メタデータの中身

  • 概要
  • 説明文
  • パッケージに含まれているファイルの一覧
  • ソフトウェアのバージョン情報等
  • 構築日時と場所、及び構築者に関する情報
  • 対応するアーキテクチャ
  • パッケージに含まれるファイルのチェックサム
  • 含まれるソフトウェアのライセンス情報
  • 正しく動作するのに必要な他のパッケージに関する情報等

この情報をもとにソースコードからのビルドの際の依存関係・競合関係の把握を行っています。

macのターミナルで使用するパッケージマネージャーは2種類

パッケージマネージャーは分かったけど、どれがいいの??
困ったさん
困ったさん
ふみペン
ふみペン
パッケージマネージャにも2種類に分けられることができるから解説するね!

基本的にパッケージマネージャー配布形式には2種類があります。

  • ソース形式のパッケージマネージャー
  • バイナリ形式のパッケージマネージャー

一つづつ解説します。

二つの違いを表で並べて整理します。

項目 Homebrew Macports
配布形式 ソースコード バイナリ
(バイナリがない場合、ソースコードをビルド)
既存のソフトウェアの利用 なるべく既存 新たにインストール
インストールにかかる時間 短い 長い
システムの適合度合い 高い 低い
公式リポジトリ(保管)パッケージ数 少ない 多い
インストール可能なユーザー 一般ユーザー スーパーユーザー(管理者権限が必要)
パッケージのインストール先 /usr/local /opt/local
コンパイラ clang clang

ソース形式のパッケージマネージャー(Homebrew)のメリット

ソース形式のパッケージマネージャー(Homebrew)の良い点

  • インストールにかかる時間が短い
  • システムの適合度合いが高い(自分のパソコンの依存関係をもとに作成するため)
  • 公式リポジトリ(保存箇所)では狭いが様々なリポジトリを利用可能で広いパッケージを管理
ふみペン
ふみペン
homebrewでダウンロードしたら、依存関係を調べながら必要最低限でインストールするから早い!

バイナリー形式のMacportsと比べてデメリットは今のところなさそうです。

バイナリ形式のパッケージマネージャー(Macports)のメリット

・・・・色々なブログやネットを調べてみましたが、良い点を書かれている方は少ない印象です。

ディスク容量を食うこととである。MacPortsでは基本的に現在インストールしているOS Xのシステムに依存せず、自身で必要なパッケージをインストールする傾向にあり、OS X本体にあるソフトとMacPortsにインストールされるパッケージが重複することが往々にしてあった。

引用:MacPortsからHomebrewに乗り換えた

などの意見や

MacPorts は、Mac に最初から入っているソフトウェアを無視してパッケージが依存するソフトを新規でインストールするという性質を持っていますが、Homebrew は極力 Mac に入っているものを使うように作られています。ゆえに、パッケージ導入時のシステムへの負担や、インストールにかかる時間が比較的少なくて済むようです。

引用:パッケージ管理システム Homebrew

のような意見が見受けれました。

ふみペン
ふみペン
Homebrewの方が協調性があるってことだね!

よく使用するHomebrewのコマンドまとめ

コマンド コマンドの意味
brew –version Homebrewのバージョン確認
brew サブコマンドの表示
brew search Homebrewのパッケージを一覧表示
brew info Homebrewでインストールした統計の情報を表示
brew install パッケージ名 パッケージをインストール
brew update Homebrewと全てのパッケージ定義をアップデート
brew upgrade Homebrewとパッケージをアップグレード
brew uninstall パッケージ名 パッケージをアンインストール
brew list インストールされているパッケージを表示
brew config Homebrewシステム構成を表示
brew doctor Homebrewの問題をチェック
man brew Homebrewのマニュアルを表示
brew help コマンド Homebrewmのコマンドの使い方について解説
brew command Homebrewのコマンドの一覧を表示

macOSならパッケージマネージャーは今のところHomebrew

いかがでしたでしょうか。まとめますと

パッケージマネージャとは

  • そもそもパッケージとはバイナリファイルを実行するためのファイル群
  • metaデータ然り互換性等の情報が書かれてある
  • パッケージマネージャーとはそれらパッケージを管理する親

さらにパッケージマネージャーの2種類を説明したうえでHomebrewがいいことを話しました。

Homebrewのメリット

  • インストールにかかる時間が短い
  • システムの適合度合いが高い
  • 様々なリポジトリ(保管場所)を利用可能で広いパッケージを管理可能

でした。これからmacで様々なコマンドを入れたくなるときもあると思います。

ふみペン
ふみペン
自分はnkfのコマンドとか入れたい!ってなったねww

是非まずはHomebrewをインストールして使える環境を構築して見てください。

このブログではbashrcやbash_profileの読み込むタイミングや順番まとめなどのプログラミングで避けては通れないものを解説してます。