パッケージ管理システムについて基本的な概念をまとめてみる

公開日:2019-01-21
最終更新:2019-01-21

はじめに

近年という表現がふさわしくないと思うくらい前から、開発者間で様々なパッケージ管理ツールが普及しています。
代表例としては、aptやyumをはじめ、homebrewやScoopなど、各OSで広く利用されているツールもあれば、
npm、gem、pip、composerなど各言語に付随する形で利用されているツールなどが上げられます。

この記事は、これらのパッケージ管理ツールについて、基本的な概念を整理することを目的にまとめてみました。

用語

パッケージ
実行プログラム、設定ファイル、ドキュメントなどを1つのファイルにまとめたもの。

パッケージ管理
パッケージのインストールやアインインストール、アップデート作業において、
どのようなパッケージがどこにインストールされているかを管理したり、
パッケージ間の競合を回避したりすること。
また、そのような仕組みを提供しているツールをパッケージ管理システムという。
(補足)
小難しく聞こえるかもしれませんが、例えば、スマートフォンでアプリをインストールする際に使う
AndroidのplayストアやiOSのAppleストアなどもパッケージ管理システムと言えます。

パッケージの依存関係
パッケージAに含まれるファイルをパッケージBが利用している場合、
パッケージAなしではパッケージBを使うことができません。
このような関係をパッケージの依存関係といいます。

パッケージの競合関係
パッケージCによってインストールされるファイルDが、
すでにパッケージAによってインストールされているファイルDと競合する場合、
パッケージCをインストールすると問題が発生します。
このような関係をパッケージの競合関係といいます。

リポジトリ
パッケージの実データを保存している場所で、データベースの一種です。
gitと同じようにリモートのネットワーク上のサーバにあるものと、
ローカル内のパッケージ情報を管理しているローカルリポジトリが存在するケースがほとんどです。
(補足)
ソースからコンパイルする方法と違い、コンパイル済みのパッケージで管理されています。
インストールする際はユーザ側で動作環境(CPUアーキテクチャなど)に相応しいパッケージを選択するか、
パッケージ管理システム自身が動作環境を判断してそれに相応しいパッケージをダウンロードするか分かれます。

Linuxにおけるパッケージ管理

各ディストリビューションによって採用されているパッケージ管理方式が異なる。

Debian GNU/Linux
Debian形式でdpkgコマンド、APTツールで操作可能。

Red Hat Enterprise Linux
RPM形式でrpm, yumコマンドで操作可能。

※Debian形式とRPM形式には互換性はありませんが、alienコマンドを使えば相互に形式を変換することもできます。

Debian形式

書式
tree_1.6.0-1_i386.deb
①tree ・・・ パッケージの名称
②1.6.0 ・・・ バージョン番号
③1 ・・・Debianリビジョン番号
④i386 ・・・ アーキテクチャ
⑤deb ・・・ 拡張子

RPM形式

書式
bash-4.2.45-5.el7_0.4.x86_64.rpm
①bash ・・・ パッケージの名称
②4.2.45 ・・・ バージョン番号
③5.el7_0.4 ・・・リリース番号
④x86_64 ・・・ アーキテクチャ
⑤rpm ・・・ 拡張子

記事が少しでもいいなと思ったらクラップを送ってみよう!
18
+1
勉強したことのメモ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする