パッケージ管理システム

パッケージ管理システム（パッケージかんりシステム）、またはパッケージマネージャーとは、コンピュータのプログラムを一貫した方法でインストールやアンインストール、ライブラリなどの依存関係を解決する流れをツールによって管理を自動化するシステムである。
パッケージ管理システムが定める方式で、ソースまたはバイナリをひとつのパッケージファイルにまとめる。このパッケージにはソフトウェア名、説明、バージョンナンバー、ベンダー、チェックサム、ソフトウェアが正常に動作するよう依存関係のリストなどがまとめられたメタデータを含んでいる。メタデータはパッケージをツールでインストールした際にローカルのデータベースに保存する。ツールはソフトウェアの整合性や前提条件の欠落を防ぐために、依存関係とバージョン情報のデータベースを維持する。
1994年頃にはdpkgのようなパッケージ管理システムが存在していた。1995年に登場したCPANは、リポジトリからパッケージをダウンロードし、依存関係を解決するなどの機能が備わっていた。
主な機能.
以下はパッケージ管理システムの典型的な機能である。ただし、必ずしもすべての機能が備わっているとは限らない。
パッケージ形式.
OSになんらかのソフトウェアを追加インストールする場合には、ソフトウェアに関係するファイル一式をまとめた「パッケージ」が利用される。パッケージの形式は複数あるが、利用される形式はOSによって限定されることが多い。
実行形式でないもの.
以下のパッケージには、インストールされるデータ・依存関係のみが含まれており、OSに搭載されているパッケージ管理システムを用いることでインストールできる。
実行形式.
ソフトウェアのアーカイブにインストール処理を行う仕組みを追加した形式。Mac OSやWindowsでよく使われ、Linuxディストリビューション向けのソフトウェアでも稀に利用される。依存関係の解決・インストールは、パッケージが独自に行う。
この他、ソフトウェアのソースコードがアーカイブされたパッケージも存在する。LinuxやFreeBSD等を含むUnix系OS等では、おもにtar.gz形式やtar.bz2形式などで配布されている。利用者は対象とするPC環境に合わせて構成やコンパイル等の作業を行った上でインストールする。多くの場合、Autotoolsによって作成された「configure」という名前のシェルスクリプトが付属しており、これを実行することでその環境における依存関係の確認や、コンパイルのためのMakefileの作成が行われる。ソースコードと、コンパイルのために必要なパッケージ（ビルド依存）は、パッケージ管理システムの機能を利用してダウンロードできる場合もある。
パッケージを扱うツール.
Gentoo Linux.
Gentoo Linuxでは原則として、ソフトウェアをソースコードからコンパイルしてインストールするようになっている。そのため、最適化された効率的で高速なシステムを構築可能である。しかし、コンパイルするために多くの時間と演算処理を要する。
インストールするソフトウェア自体は公式のものかミラーサイトからダウンロードするため、Gentoo Linuxにおけるパッケージの本体部分は、インストール手順が書かれたBashスクリプトである。
Mozilla FirefoxやLibreOfficeなどはコンパイルに時間がかかるため、バイナリパッケージも用意されている。Adobe FlashやGoogle Chromeなどのプロプライエタリソフトウェアも、公式に配布されているバイナリファイルをダウンロードしてインストールすることが可能なようになっている。
Gentoo Linuxのパッケージ管理システムは当初はPortageのみであったが、現在では規格として標準化されているため、承認されたパッケージ管理システムが複数あり、そのいずれかを使用することになる。
macOS.
macOSには、MacPorts、Fink、Homebrewなどがある。
コマンドの比較.
ここでは各パッケージ管理システムによるパッケージのインストール、アップデート、アンインストールといった基本コマンドの一例を比較する。
プログラミング言語のパッケージ.
プログラミング言語においては、プログラムのソースコードを管理するために、パッケージ管理システムが使われる。その性質からほとんどがソースコード形式で管理・配布されている。
その他の言語.
そのほか、以下のようなものがある。